<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Jason Antman's Blog &#187; Projects</title> <atom:link href="http://blog.jasonantman.com/categories/projects/feed/" rel="self" type="application/rss+xml" /><link>http://blog.jasonantman.com</link> <description>A general-purpose dump of my thoughts, tips, tricks, and observations on a wide variety of topics - Linux, Free Software, the Internet, IT, EMS, software development, systems administration, and the state of the world.</description> <lastBuildDate>Thu, 01 Jul 2010 15:17:33 +0000</lastBuildDate> <generator>http://wordpress.org/</generator> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Virtualization Options</title><link>http://blog.jasonantman.com/2010/03/virtualization-options/</link> <comments>http://blog.jasonantman.com/2010/03/virtualization-options/#comments</comments> <pubDate>Sat, 20 Mar 2010 01:55:53 +0000</pubDate> <dc:creator>Jason Antman</dc:creator> <category><![CDATA[Projects]]></category> <category><![CDATA[OpenVZ]]></category> <category><![CDATA[virtualization]]></category> <category><![CDATA[xen]]></category><guid isPermaLink="false">http://blog.jasonantman.com/?p=614</guid> <description><![CDATA[Some thoughts on setting up virtualization for Linux, and my research so far into Xen vs OpenVZ.<div class="ezAdsense adsense adsense-leadout" style="text-align:center;margin:12px;"><script type="text/javascript">google_ad_client="pub-6049167767809021";google_ad_slot="8888378867";google_ad_width=336;google_ad_height=280;</script> <script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></div>]]></description> <content:encoded><![CDATA[<p>As I mentioned in <a href="/2010/03/downtime-past-few-days-coping-with-storms/">Downtime past few days, coping with storms</a>, as a result of some things I noticed with a recent power outage, I&#8217;ve decided to take the leap to virtualization. Given the cost of current hardware that supports HVM (Intel VT-x or AMD-V ), I immediately decided that I might as well give up on any thoughts of doing full virtualization or getting new-ish hardware. So I settled on the next step up from what  have now &#8211; a set of <a href="http://h18000.www1.hp.com/products/quickspecs/11504_na/11504_na.HTML" onclick="pageTracker._trackPageview('/outgoing/h18000.www1.hp.com/products/quickspecs/11504_na/11504_na.HTML?referer=');">HP Proliant DL360 G3</a> servers. I got them with a 90 day warranty from a reputable dealer, dual 2.8GHz Xeon (512K cache), 2Gb RAM, dual 36.4Gb U320 15k RPM SCSI disks and dual power supplies for $99 each. My next step is to decide what virtualization software to use.</p><p>My main goals for the project are:</p><ul><li>Lower power consumption through consolidation of servers.</li><li>Possibility to add capacity or resources by remotely powering up an idle server and migrating VMs to it.</li><li>Limited fault tolerance &#8211; ability to manually restore a VM that was running on failed hardware, onto an idle server.</li></ul><p>I originally thought Xen, just out of reflex. However, given that all of my servers have the same base &#8211; the same distribution and, ideally, the same kernel and patch level &#8211; it seemed like a lot of overhead to duplicate that for multiple VMs. So I started looking into <a href="http://en.wikipedia.org/wiki/Operating_system-level_virtualization" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Operating_system-level_virtualization?referer=');">OS-level virtualization</a>. There are relatively few options, and I&#8217;ll admit that aside from Solaris Containers (which I learned about while working at Sun) I don&#8217;t know much about it. But <a href="http://www.openvz.org/" onclick="pageTracker._trackPageview('/outgoing/www.openvz.org/?referer=');">OpenVZ</a> seems to be the front runner in that area. My initial impression was that it made a lot of sense &#8211; keep one common kernel, but allow containers/virtual environments (CTs/VEs) to have, essentially, their own userland. Unfortunately, it doesn&#8217;t seem to be as hyped as Xen, and I haven&#8217;t heard very much about it in the enterprise context. And it requires running a kernel from the OpenVZ project, which means I can&#8217;t just script updates through yum as easily as normal.</p><p>On the up size, OpenVZ would allow me to eliminate the duplication of the kernel, and seems to have much less overhead than Xen (and logically so). On the down side, I lose the ability to virtualize other OSes, kernel versions, or make pre-packaged VMs. I&#8217;ve decided that if I wanted to do that, I could dedicate a single machine.</p><p>I&#8217;ve spent the last day or so doing a lot of research, and have come up with the following questions and concerns about OpenVZ which I hope to be able to answer (I&#8217;ll post the answers in a follow-up).</p><ul><li>How do I handle distribution and kernel upgrades? The logical solution would be to migrate the CT to another host while I upgrade CT0 (the hardware OS/host/dom0 in Xen speak). But if the guest and host kernels must match, how does this work?</li><li>Can I do package upgrades within the guest/CT easily? WIll this play well with Puppet?</li><li>How will I handle backups? Is it logical to run <a href="http://www.bacula.org" onclick="pageTracker._trackPageview('/outgoing/www.bacula.org?referer=');">bacula</a> within each CT, or just on CT0? If just on CT0, how do I easily verify that a particular CT was backed up?</li><li>WIll everything play well with Puppet? (see below)</li><li>Am I willing to throw away my KickStart-based installs? And, similarly, am I willing to give up the possibility of migrating from a container to a Xen host or a physical host (easily)?</li><li>OpenVZ live migration relies on rsync. This means that there&#8217;s a significant delay (compared to shared storage) and also that I can&#8217;t migrate off of a host that&#8217;s down. Is there a way around this?</li><li>Similarly, live migration requires root SSH key exchange (passwordless) between the hosts. This seems about equivalent to using <code>hosts.equiv</code>. Do I really want root on one box to mean root on another box (and all of the containers on that box)?</li><li>Can I still firewall CT0? How will this work?</li></ul><p>It seems to me that OpenVZ may be significantly less enterprise-class than Xen. Sure, this is just my home setup, but I hold it to the same standards I use for my work systems. In fact, I usually test new technologies at home before I suggest them at work. A lot of the writing on the <a href="http://wiki.openvz.org/" onclick="pageTracker._trackPageview('/outgoing/wiki.openvz.org/?referer=');">OpenVZ wiki</a> seems to be riddled with spelling errors. They claim &#8220;zero downtime&#8221; live migration, but if they have to rsync 2Gb of MySQL tables, that sounds like a lot more than &#8220;zero&#8221;. And, most shockingly, the <a href="http://wiki.openvz.org/Hardware_testing" onclick="pageTracker._trackPageview('/outgoing/wiki.openvz.org/Hardware_testing?referer=');">Hardware testing</a> wiki page talks about making sure your hosts aren&#8217;t overclocked or undercooled, and running <code>cpuburn</code> to test your system under high load. Sorry, but the engineers at HP, Sun, IBM, etc. handle that for me and most people I know. So, I&#8217;m a bit worried about the seriousness of the OpenVZ project.</p><p>Most worrisome is a post I found in the <a href="http://forum.openvz.org" onclick="pageTracker._trackPageview('/outgoing/forum.openvz.org?referer=');">OpenVZ forum</a>, <a href="http://forum.openvz.org/index.php?t=msg&#038;goto=14818&#038;" onclick="pageTracker._trackPageview('/outgoing/forum.openvz.org/index.php?t=msg_038_goto=14818_038&amp;referer=');">&#8220;Stopping puppet on hn stops it in all VE&#8221;</a>. It seems that, since CT0 is aware of all of the guest container processes, they show up in ps lists. Most, if not all RedHat init scripts use killproc to stop and restart services. This means that a <code>service syslog stop</a> on the CT0 (host) will stop <strong>all</strong> <code>syslog</code> processes, including all of them in the CTs. This seems like a major issue. Sure, I could replace <code>killproc</code> on CT0 with a script that parses the process list, isolates the PIDs for those running on CT0, and kills them. But what else needs to be fixed? Nagios check scripts would need to be adjusted. Is there anything else that would come back and bite me?</p><p>The bottom line is that (I guess this is logical) it seems that containers in OpenVZ will seem - and act - a lot less like a logical host than they would under Xen.</p><div class="ezAdsense adsense adsense-leadout" style="text-align:center;margin:12px;"><script type="text/javascript">google_ad_client="pub-6049167767809021";google_ad_slot="8888378867";google_ad_width=336;google_ad_height=280;</script> <script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></div>]]></content:encoded> <wfw:commentRss>http://blog.jasonantman.com/2010/03/virtualization-options/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>New web server, WP optimization</title><link>http://blog.jasonantman.com/2010/02/new-web-server-wp-optimization/</link> <comments>http://blog.jasonantman.com/2010/02/new-web-server-wp-optimization/#comments</comments> <pubDate>Mon, 01 Mar 2010 04:19:12 +0000</pubDate> <dc:creator>Jason Antman</dc:creator> <category><![CDATA[Projects]]></category> <category><![CDATA[apache]]></category> <category><![CDATA[optimization]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[wordpress]]></category><guid isPermaLink="false">http://blog.jasonantman.com/?p=581</guid> <description><![CDATA[Tonight, more or less on a whim, I moved my blog from my older (dual 1GHz Pentium III Coppermine, 1GB RAM, 10k RPM SCSI disks, Compaq Proliant DL360 G1, OpenSuSE 10.2 32-bit) web server to my newer one (dual 1.4GHz Pentium III, 2GB RAM, 10k RPM SCSI disks, HP Proliant DL360 G2, CentOS 5.3 32-bit). [...]]]></description> <content:encoded><![CDATA[<p>Tonight, more or less on a whim, I moved my blog from my older (dual 1GHz Pentium III Coppermine, 1GB RAM, 10k RPM SCSI disks, Compaq Proliant DL360 G1, OpenSuSE 10.2 32-bit) web server to my newer one (dual 1.4GHz Pentium III, 2GB RAM, 10k RPM SCSI disks, HP Proliant DL360 G2, CentOS 5.3 32-bit). I did some profiling with <a href="http://httpd.apache.org/docs/2.0/programs/ab.html" onclick="pageTracker._trackPageview('/outgoing/httpd.apache.org/docs/2.0/programs/ab.html?referer=');">ab</a> (ApacheBench), and just moving from one server to the other got some serious performance gains (I was profiling with runs of 1000 requests total, 10 concurrent requests). I also added the <a href="http://wordpress.org/extend/plugins/w3-total-cache/" onclick="pageTracker._trackPageview('/outgoing/wordpress.org/extend/plugins/w3-total-cache/?referer=');">W3 Total Cache</a> Wordpress plugin, which got the numbers to look even better!</p><p>As a side note, this was all done pretty quickly (moving the database and tarball for the vhost, installing the plugin, changing DNS), so please give me a heads-up if you experience any problems.</p><p>The numbers are rather impressive:</p><table><tr><td>&nbsp;</td><th>Total Time(s)</th><th>RPS</th><th>Avg. Connection Time (ms)</th></tr><tr><th>Old Server</th><td>1192.252</td><td>838.75</td><td>11,893</td></tr><tr><th>New Server</th><td>569.121</td><td>1757.09</td><td>5,667</td></tr><tr><th>Default W3tc Config</th><td>23.754</td><td>42,098.44</td><td>237</td></tr><tr><th>Tuned W3tc</th><td>12.281</td><td>81,428.76</td><td>122</td></tr></table><p>All tests were performed on my workstation, a Dell Precision 470, two dual-core Xeons at 2.8 GHz, 2GB RAM, 16GB swap, OpenSuSE 11.1 64-bit. This was on the same LAN and subnet as the servers, with the workstation connected via a 1Gbps copper Ethernet link and the web-serving interfaces of the servers connected via 100Mbps (There&#8217;s a trunk in between, from the gigabit aggregation switch to the 100Mbps distribution switch).</p> ]]></content:encoded> <wfw:commentRss>http://blog.jasonantman.com/2010/02/new-web-server-wp-optimization/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Parsing Nagios status.dat in PHP</title><link>http://blog.jasonantman.com/2010/02/parsing-nagios-status-dat-in-php/</link> <comments>http://blog.jasonantman.com/2010/02/parsing-nagios-status-dat-in-php/#comments</comments> <pubDate>Mon, 22 Feb 2010 03:42:33 +0000</pubDate> <dc:creator>Jason Antman</dc:creator> <category><![CDATA[Projects]]></category> <category><![CDATA[Nagios]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[xml]]></category><guid isPermaLink="false">http://blog.jasonantman.com/?p=554</guid> <description><![CDATA[Details of my scripts, and the generous contributions of others, for parsing the Nagios status.dat status file in PHP, and returning an array or well-formed XML.]]></description> <content:encoded><![CDATA[<p><strong>If you&#8217;re just looking for the script or PHP module</strong>, you can get them via Subversion at: <a href="http://svn.jasonantman.com/nagios-xml/" onclick="pageTracker._trackPageview('/outgoing/svn.jasonantman.com/nagios-xml/?referer=');">http://svn.jasonantman.com/nagios-xml/</a>.</p><p>A while ago (back in late 2008), I wrote a PHP script that parses the Nagios status.dat file into an associative array. My original use was to output XML which was then read by another script on another server and used for a small custom GUI. It&#8217;s a very simple PHP script that just takes the path of the status.dat file (which, obviously, must be readable by the user running the script).</p><p>At that time, I was using Nagios v2. Since then, I&#8217;ve moved to Nagios v3, and have updated the script to include the ability to parse v3 status.dat files, as well as a function to detect the version of a status file. I also refactored the code so that the parsing functions are all contained in a single file (statusXML.php.inc) which is safe to include in other scripts. The actual statusXML.php file now just includes examples of how to call all of the functions and output XML (though it is equally useful to output the serialized array, or use it directly).</p><p>Since I posted my script online, two people have been kind enough to send back their modifications:</p><ul><li><a href="http://www.krzywanski.net/" onclick="pageTracker._trackPageview('/outgoing/www.krzywanski.net/?referer=');">Artur Krzywański</a> modified the original (<a href="http://viewvc.jasonantman.com/cgi-bin/viewvc.cgi/nagios-xml?view=revision&#038;revision=4" onclick="pageTracker._trackPageview('/outgoing/viewvc.jasonantman.com/cgi-bin/viewvc.cgi/nagios-xml?view=revision_038_revision=4&amp;referer=');">r4</a>) version of <a href="http://viewvc.jasonantman.com/cgi-bin/viewvc.cgi/nagios-xml/statusXML.php?view=markup&#038;pathrev=4" onclick="pageTracker._trackPageview('/outgoing/viewvc.jasonantman.com/cgi-bin/viewvc.cgi/nagios-xml/statusXML.php?view=markup_038_pathrev=4&amp;referer=');">statusXML.php</a> to allow selection of the keys to be returned.</li><li>Whitham D. Reeve II of <a href="http://www.gci.com" onclick="pageTracker._trackPageview('/outgoing/www.gci.com?referer=');">General Communication, Inc.</a>, who needed higher performance for a very large status file, rewrote my script in C as a PHP module.</li></ul><p>Both of these generous contributions have been included in my <a href="http://svn.jasonantman.com/nagios-xml/" onclick="pageTracker._trackPageview('/outgoing/svn.jasonantman.com/nagios-xml/?referer=');">Subversion repository</a> as of the current revision, 5. Unfortunately, due to my delay in putting my Nagios3 code into svn, both of these contributions are <strong>Nagios v2</strong> only.</p><p>As time permits, I plan on merging Artur&#8217;s changes into the current version of statusXML.php.inc. Unfortunately, C isn&#8217;t one of my strong points, but I plan on also updating Whitham&#8217;s PHP module code to work with Nagios3 as soon as possible.</p><p>Stay tuned for updates, and thanks to both gentlemen for contributing their work. I&#8217;m always interested in hearing how people are using my code, and how they are making it better.</p><p><strong>Also:</strong> While I added this project to <a href="http://exchange.nagios.org/" onclick="pageTracker._trackPageview('/outgoing/exchange.nagios.org/?referer=');">Nagios Exchange</a>, and plan on adding it to <a href="http://www.monitoringexchange.org/" onclick="pageTracker._trackPageview('/outgoing/www.monitoringexchange.org/?referer=');">Monitoring Exchange</a>, I don&#8217;t always keep those sites up to date (I can&#8217;t access Nagios Exchange right now, and who knows if I&#8217;ll have time to update it tomorrow). I <em>strongly</em> recommend directly checking out from Subversion at <a href="http://svn.jasonantman.com/nagios-xml/" onclick="pageTracker._trackPageview('/outgoing/svn.jasonantman.com/nagios-xml/?referer=');">http://svn.jasonantman.com/nagios-xml/</a> or taking a look at the code through ViewVC at <a href="http://viewvc.jasonantman.com/cgi-bin/viewvc.cgi/nagios-xml/" onclick="pageTracker._trackPageview('/outgoing/viewvc.jasonantman.com/cgi-bin/viewvc.cgi/nagios-xml/?referer=');">http://viewvc.jasonantman.com/cgi-bin/viewvc.cgi/nagios-xml/</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.jasonantman.com/2010/02/parsing-nagios-status-dat-in-php/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Project Announcement &#8211; PHPsa</title><link>http://blog.jasonantman.com/2009/09/project-announcement-phpsa/</link> <comments>http://blog.jasonantman.com/2009/09/project-announcement-phpsa/#comments</comments> <pubDate>Tue, 29 Sep 2009 20:36:27 +0000</pubDate> <dc:creator>Jason Antman</dc:creator> <category><![CDATA[PHPsa]]></category> <category><![CDATA[Projects]]></category> <category><![CDATA[bind]]></category> <category><![CDATA[cacti]]></category> <category><![CDATA[dns]]></category> <category><![CDATA[Nagios]]></category> <category><![CDATA[puppet]]></category> <category><![CDATA[rsyslog]]></category> <category><![CDATA[sysadmin]]></category> <category><![CDATA[syslog]]></category><guid isPermaLink="false">http://blog.jasonantman.com/?p=469</guid> <description><![CDATA[Official announcement of my new PHP-based SysAdmin portal, PHPsa.]]></description> <content:encoded><![CDATA[<p>So, here&#8217;s the &#8220;official&#8221; scoop on the new project that I&#8217;m planning/starting to work on. I&#8217;m calling it PHPsa for now, and it&#8217;s going to (hopefully) be an integrated dashboard/portal for SysAdmins. While there are a number of tools that fit into this general category (perhaps with <a href="http://www.alienvault.com/home.php?section=News"?OSSIM</a> being the closest, though it&#8217;s security-minded), I feel that there&#8217;s a real gap in terms of tool integration. My daily workflow, which includes multiple trips to and correlation among Nagios, Cacti, DNS, DHCP, Puppet, logs, and other tools really leaves something to be desired. So, I&#8217;m setting out to create a modular SysAdmin dashboard that unifies many of the common SysAdmin-related tools into a modular dashboard.</p><p>The first overall design goals that I&#8217;ve set are:</p><ol><li>A modular, plugin-based architecture that allows admins to select which features/tools they want, and allows easy development of new modules.</li><li>Design with legacy tools in mind &#8211; easy ways to tie in to tools that weren&#8217;t written with PHPsa in mind, both in terms of linking to information and gathering/unifying information.</li><li>RBAC, including per-module rules and the possibility for a limited read-only view (client/user mode).</li><li>Use of data sources, specifically databases, from existing tools with as little modification as possible.</li><li>Support for database abstraction, though I&#8217;ll be using MySQL.</li><li>Eventually, implement RSS feeds of pertinent information.</li><li>Balance Ajax/DHTML with the desire for important things to have canonical, static, bookmark-able URLs.</li></ol><p>So, here are some of the things that I&#8217;m planning on integrating, with obvious bias towards getting my own projects done before I integrate pre-existing tools:</p><ul><li><a href="http://multibindadmin.jasonantman.com" onclick="pageTracker._trackPageview('/outgoing/multibindadmin.jasonantman.com?referer=');">MultiBindAdmin</a>, my DNS and DHCP administration tool (specifically geared towards split-view DNS with the inside view behind NAT).</li><li><a href="http://rackman.jasonantman.com/" onclick="pageTracker._trackPageview('/outgoing/rackman.jasonantman.com/?referer=');">RackMan</a>, my tool for mapping devices&#8217; physical locations in racks (and tacking patching).</li><li>My simple config tool for <a href="http://reductivelabs.com/products/puppet/" onclick="pageTracker._trackPageview('/outgoing/reductivelabs.com/products/puppet/?referer=');">Puppet</a>.</li><li><a href="http://nagios.org/" onclick="pageTracker._trackPageview('/outgoing/nagios.org/?referer=');">Nagios</a>.</li><li><a href="http://www.cacti.net/" onclick="pageTracker._trackPageview('/outgoing/www.cacti.net/?referer=');">Cacti</a>.</li><li>Nathan Hubbard&#8217;s <a href="http://www.machdb.org/" onclick="pageTracker._trackPageview('/outgoing/www.machdb.org/?referer=');">MachDB</a>.</li><li><a href="http://www.bacula.org/en/" onclick="pageTracker._trackPageview('/outgoing/www.bacula.org/en/?referer=');">Bacula</a> (monitoring/status only).</li><li>Syslog via <a href="http://www.rsyslog.com/" onclick="pageTracker._trackPageview('/outgoing/www.rsyslog.com/?referer=');">rsyslog</a> (or any other syslog-to-SQL solution).</li><li>Possibly a front-end to <a href="http://www.google.com/analytics/" onclick="pageTracker._trackPageview('/outgoing/www.google.com/analytics/?referer=');">Google Analytics</a>.</li><li>Some of my custom scripts for graphing SpamAssassin, DNS queries, etc.</li><li>Some sort of Apache log analysis, like <a href="http://www.mrunix.net/webalizer/" onclick="pageTracker._trackPageview('/outgoing/www.mrunix.net/webalizer/?referer=');">Webalizer</a>.</li><li>Mail log analysis, possibly <a href="http://awstats.sourceforge.net/" onclick="pageTracker._trackPageview('/outgoing/awstats.sourceforge.net/?referer=');">AWstats</a>.</li></ul><p>So, the first big issues that I&#8217;m going to tackle:</p><ol><li>General layout. Specifically, how to handle a more-or-less consistent layout while integrating tools that weren&#8217;t designed for PHPsa. I&#8217;ll probably end up using iFrames (or even a frameset) for tools that don&#8217;t integrate well.</li><li>How to correlate data/objects between different tools (i.e. how to display information from Nagios, Cacti, MultiBindAdmin and MachDB for a given host?).</li><li>Do I want to use a templating engine like <a href="http://www.smarty.net/" onclick="pageTracker._trackPageview('/outgoing/www.smarty.net/?referer=');">Smarty</a> or hand-code all of the HTML?</li><li>How will I handle plugins?</li><li>How much code do I want to re-write and how much can I use as-is from other tools? And, on a related note, how much existing data can I access easily from other tools, vs having to use grabber scripts that dump data in MySQL?</li></ol><p><strong>Update 2010-02-03</strong>: I think this may become a semi-official project for me at $work, which means that I&#8217;ll be able to dedicate quite a bit more time to it. Unfortunately, it also means that I will, most likely, have to give up Nathan Hubbard&#8217;s <a href="http://www.machdb.org/" onclick="pageTracker._trackPageview('/outgoing/www.machdb.org/?referer=');">MachDB</a> in favor of <a href="http://www.ocsinventory-ng.org/" onclick="pageTracker._trackPageview('/outgoing/www.ocsinventory-ng.org/?referer=');">OCS Inventory NG</a>, a more mature project that already includes inventory support for Linux, Windows and Mac.</p> ]]></content:encoded> <wfw:commentRss>http://blog.jasonantman.com/2009/09/project-announcement-phpsa/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>DNS Move</title><link>http://blog.jasonantman.com/2009/09/dns-move/</link> <comments>http://blog.jasonantman.com/2009/09/dns-move/#comments</comments> <pubDate>Thu, 17 Sep 2009 18:07:23 +0000</pubDate> <dc:creator>Jason Antman</dc:creator> <category><![CDATA[Projects]]></category> <category><![CDATA[bind]]></category> <category><![CDATA[dns]]></category> <category><![CDATA[multibindadmin]]></category><guid isPermaLink="false">http://blog.jasonantman.com/?p=450</guid> <description><![CDATA[Moving DNS from GoDaddy to my own BIND servers.]]></description> <content:encoded><![CDATA[<p>Yesterday I finally began moving DNS for my sites from GoDaddy to my own in-house system of master/slave <a href="https://www.isc.org/software/bind" onclick="pageTracker._trackPageview('/outgoing/www.isc.org/software/bind?referer=');">BIND9</a>. While both DNS servers are currently at the same location and on the same WAN connection (heck, they&#8217;re beind the same router, too), so is all of the rest of my infrastructure. Migrating jasonantman.com was definitely the most critical task, this has allowed me to easily use my new project, <a href="http://multibindadmin.jasonantman.com" onclick="pageTracker._trackPageview('/outgoing/multibindadmin.jasonantman.com?referer=');">MultiBIND Admin</a> to manage DNS. In addition to just being simpler than using GoDaddy&#8217;s tool, it allows me to manage DNS for both the external view and the NATed internal view in one tool. I did have a brief mail outage thanks to some incorrect MX records being served by the slave, and a few other issues with the caching DNS servers at work not expiring the old records, but all seems to be well now. It was a relatively smooth transition, though I haven&#8217;t yet moved over some of my older less used domains.</p><p>The next part of my project, when I move the ambulance corps hosted services in-house, will be trying to find a decently-priced DNS hosting company that will just act as a slave, to keep DNS up if my WAN connection goes down.</p> ]]></content:encoded> <wfw:commentRss>http://blog.jasonantman.com/2009/09/dns-move/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>September 2009 Project Updates</title><link>http://blog.jasonantman.com/2009/09/september-2009-project-updates/</link> <comments>http://blog.jasonantman.com/2009/09/september-2009-project-updates/#comments</comments> <pubDate>Thu, 17 Sep 2009 18:00:38 +0000</pubDate> <dc:creator>Jason Antman</dc:creator> <category><![CDATA[PHPsa]]></category> <category><![CDATA[Projects]]></category> <category><![CDATA[machdb]]></category> <category><![CDATA[php ems tools]]></category> <category><![CDATA[rackman]]></category><guid isPermaLink="false">http://blog.jasonantman.com/?p=448</guid> <description><![CDATA[Updates on some of my ongoing projects.]]></description> <content:encoded><![CDATA[<p>I know I haven&#8217;t been posting a lot, but here&#8217;s an update on some of my projects:</p><ul><li><a href="http://www.php-ems-tools.com" onclick="pageTracker._trackPageview('/outgoing/www.php-ems-tools.com?referer=');">PHP EMS Tools</a> &#8211; I&#8217;ve done quite a bit of work for the <a href="http://www.midlandparkambulance.com" onclick="pageTracker._trackPageview('/outgoing/www.midlandparkambulance.com?referer=');">ambulance corps</a>, and intend on rolling this into the main distribution. I&#8217;ve also added an Asterisk/AGI module to handle crew call-ins. It&#8217;s going to be a long road, as I have to manually diff the ambulance corps version to the trunk version and merge the changes (leaving out anything specific to our organization), but I plan on doing it. The next version will also include historical tracking of roster information (member information, status, positions, committees, etc.) and LDAP integration for authentication.</li><li><strong>PHPsa</strong> &#8211; My new project, tentatively called PHPsa, is an integrated dashboard for sysadmins. The idea is to develop a plugin-based portal for SA tools. Currently, I will be including some of my own projects &#8211; MultiBindAdmin (a tool to administer BIND and DHCPd, specifically geared towards split-view DNS with the inside behind NAT) and RackMan (a tool to track and visualize the location of devices within racks, including ability to temporarily move devices around) &#8211; as well as my updates to Nathan Hubbard&#8217;s <a href="http://www.machdb.org/" onclick="pageTracker._trackPageview('/outgoing/www.machdb.org/?referer=');">MachDB</a>.</li></ul><p> I&#8217;ve also done quite a bit of customization of the current version of Nathan Hubbard&#8217;s <a href="http://www.machdb.org/" onclick="pageTracker._trackPageview('/outgoing/www.machdb.org/?referer=');">MachDB</a>. My local version is in <a href="http://svn.jasonantman.com/machdb/" onclick="pageTracker._trackPageview('/outgoing/svn.jasonantman.com/machdb/?referer=');">subversion</a>. It adds detailed network interface information, information on expansion slots, and some extra details for the system and storage. I plan on developing a patch and contacting Nathan once I get a chance. It also includes a Python collector script that I developed.</p> ]]></content:encoded> <wfw:commentRss>http://blog.jasonantman.com/2009/09/september-2009-project-updates/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>New Projects</title><link>http://blog.jasonantman.com/2009/07/new-projects/</link> <comments>http://blog.jasonantman.com/2009/07/new-projects/#comments</comments> <pubDate>Thu, 16 Jul 2009 19:05:40 +0000</pubDate> <dc:creator>Jason Antman</dc:creator> <category><![CDATA[PHPsa]]></category> <category><![CDATA[Projects]]></category> <category><![CDATA[bind]]></category> <category><![CDATA[dns]]></category> <category><![CDATA[google]]></category> <category><![CDATA[rackman]]></category><guid isPermaLink="false">http://blog.jasonantman.com/?p=436</guid> <description><![CDATA[Summary of a few of my projects - an update on RackMan as well as the introduction of MultiBIND Admin and an admin portal.]]></description> <content:encoded><![CDATA[<p>In terms of ongoing projects, I should be updating RackMan sometime soon, and also adding the demo site.</p><p>I&#8217;ve begun to move DNS for all of my domains in-house, mostly because since everything is behind NAT, it&#8217;s a real pain to manage DNS entries in two places (one of them being GoDaddy&#8217;s web interface). Because of the NAT issue, I&#8217;m also writing my own BIND configuration tool, currently named <a href="http://multibindadmin.jasonantman.com" onclick="pageTracker._trackPageview('/outgoing/multibindadmin.jasonantman.com?referer=');">MultiBIND Admin</a>. In addition to managing multiple zones in a sane way, it stores all configuration in MySQL. Among other things, it can store different IP addresses for A records for the inside and outside views. Zone files can either be pulled by a script on the name server (push capability is being worked on) or downloaded (for uploading to a DNS hosting provider like GoDaddy).</p><p>For my final project for my XML web design class, I&#8217;m going to be making some &#8220;mashup&#8221; with RackMan, Google Maps, Google Visualizer, Nagios, and a few other tools&#8230;</p><p>Stay tuned&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.jasonantman.com/2009/07/new-projects/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Blinkenlights (blinkenlichten)</title><link>http://blog.jasonantman.com/2009/06/blinkenlights-blinkenlichten/</link> <comments>http://blog.jasonantman.com/2009/06/blinkenlights-blinkenlichten/#comments</comments> <pubDate>Tue, 23 Jun 2009 15:54:31 +0000</pubDate> <dc:creator>Jason Antman</dc:creator> <category><![CDATA[Projects]]></category><guid isPermaLink="false">http://blog.jasonantman.com/?p=421</guid> <description><![CDATA[Some new upgrades to the jasonantman.com infrastructure.]]></description> <content:encoded><![CDATA[<p>I&#8217;ll be posting more on this in the next few days, but I did a few more upgrades at home, including a Proliant <a href="http://h18000.www1.hp.com/products/quickspecs/10902_na/10902_na.html" onclick="pageTracker._trackPageview('/outgoing/h18000.www1.hp.com/products/quickspecs/10902_na/10902_na.html?referer=');">DL380G2 </a> to replace my aged ML370 (G1) storage box (array is failing badly) and a Proliant <a href="http://h18000.www1.hp.com/products/quickspecs/11049_na/11049_na.HTML" onclick="pageTracker._trackPageview('/outgoing/h18000.www1.hp.com/products/quickspecs/11049_na/11049_na.HTML?referer=');">DL360 G2</a> as a second web server (and possibly moving Nagios over to that box).</p><p>I&#8217;m running into some problems with the old management card for the Tripp Lite UPS, and I have a few other issues to sort out, but here&#8217;s a photo that I took this weekend after the upgrades (yes, it&#8217;s a bit blurry &#8211; that happens handheld at 1/10 sec).</p><p><img src="http://www.jasonantman.com/indexed/photos/dsc_0231_cropped_sm.jpg" alt="blinkenlights" width="235" height="650" /></p><blockquote><p> ACHTUNG!  ALLES LOOKENSPEEPERS!<br /> Alles touristen und non-technischen looken peepers! Das computermachine ist nicht fuer gefingerpoken und mittengrabben.<br /> Ist easy schnappen der springenwerk, blowenfusen und poppencorken mit spitzensparken. Ist nicht fuer gewerken bei das dumpkopfen. Das rubbernecken sichtseeren keepen das cotten-pickenen hans in das pockets muss; relaxen und watchen das blinkenlichten.</p></blockquote><p>(For those of you who aren&#8217;t familiar with it, <a href="http://www.jasonantman.com/jargon/entry.php?id=blinkenlights" onclick="pageTracker._trackPageview('/outgoing/www.jasonantman.com/jargon/entry.php?id=blinkenlights&amp;referer=');">blinkenlights</a>).</p> ]]></content:encoded> <wfw:commentRss>http://blog.jasonantman.com/2009/06/blinkenlights-blinkenlichten/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Building a Rebuild-able Site</title><link>http://blog.jasonantman.com/2009/05/building-a-rebuild-able-site/</link> <comments>http://blog.jasonantman.com/2009/05/building-a-rebuild-able-site/#comments</comments> <pubDate>Wed, 06 May 2009 13:42:43 +0000</pubDate> <dc:creator>Jason Antman</dc:creator> <category><![CDATA[Projects]]></category> <category><![CDATA[backup]]></category> <category><![CDATA[configuration]]></category> <category><![CDATA[kickstart]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[puppet]]></category> <category><![CDATA[recovery]]></category> <category><![CDATA[work]]></category><guid isPermaLink="false">http://blog.jasonantman.com/?p=399</guid> <description><![CDATA[The first phase in investigating and planning a backup, recovery, and automated installation system for critical infrastructure. ]]></description> <content:encoded><![CDATA[<p>At $WORK, my group runs about two dozen servers that provide services for over 60,000 users. They&#8217;re a mix of Windows and Linux, with some old Solaris stuff thrown in there. The one thing they have in common is they&#8217;re all hand-built, hand-configured, and old. They&#8217;ve been around for a while. At the moment, we don&#8217;t even have an adequate backup system.</p><p>So, being the closest thing to a SysAdmin we have (my official title is still Student Systems Programmer), it&#8217;s my job to build a new installation, configuration and backup infrastructure. We&#8217;ve already standardized on <a href="http://www.centos.org" onclick="pageTracker._trackPageview('/outgoing/www.centos.org?referer=');">CentOS</a> as a University-wide distro, and have a local full mirror, so I don&#8217;t need to choose a distro. I do, however, have to plan the installation and backup architecture. The main requirements are:</p><ol><li>Lowest overall time for bare-metal recovery to a working system.</li><li>Ease of use, as people other than myself will need to administer it (so they should be able to do so from a cheat sheet in the wiki).</li><li>Repeatability &#8211; it should be easy and intuitive to make an almost-exact-copy of a machine.</li></ol><p>I started a thread a few days ago on the SAGE mailing list, which you can find <a href="http://mailman.sage.org/pipermail/sage-members/2009/msg00447.html" onclick="pageTracker._trackPageview('/outgoing/mailman.sage.org/pipermail/sage-members/2009/msg00447.html?referer=');">here</a>.</p><p>At the moment, it looks like the general idea that I&#8217;m going with is to use <a href="http://fedoraproject.org/wiki/Anaconda/Kickstart" onclick="pageTracker._trackPageview('/outgoing/fedoraproject.org/wiki/Anaconda/Kickstart?referer=');">Kickstart</a> to install the systems, using a basic and minimal Kickstart file. Basic package selection (minimalist) with just what&#8217;s needed to configure the system with a hostname and network settings for the management VLAN. I&#8217;ll then have Kickstart install and configure a configuration management package &#8211; I&#8217;m leaning towards <a href="http://reductivelabs.com/products/puppet/" onclick="pageTracker._trackPageview('/outgoing/reductivelabs.com/products/puppet/?referer=');">Puppet</a> over <a href="http://www.cfengine.org/" onclick="pageTracker._trackPageview('/outgoing/www.cfengine.org/?referer=');">Cfengine</a> and am starting testing. The config management software will handle all of the customization for the system (everything different from the base generic Kickstart install) so it&#8217;s all kept under the control of config management from step 1.</p><p>The final part is a backup system, mainly for whatever eventually &#8211; whether out of human error or simple laziness &#8211; ends up out of the config management system&#8217;s control. Our previous SA had settled on <a href="http://www.zmanda.com/" onclick="pageTracker._trackPageview('/outgoing/www.zmanda.com/?referer=');">Zmanda</a>, the paid version of <a href="http://www.amanda.org/" onclick="pageTracker._trackPageview('/outgoing/www.amanda.org/?referer=');">Amanda</a>, which comes with specific plugins for MySQL and MSSQL. I&#8217;m also looking at <a href="http://www.bacula.org" onclick="pageTracker._trackPageview('/outgoing/www.bacula.org?referer=');">Bacula</a>, mainly because of its&#8217; advanced features, scheduling (especially the new scheduling in Bacula 3) and scalability.</p><p>The beauty that I see in having Kickstart do something minimal and then letting Puppet handle the rest is that (especially since we&#8217;ve standardized on SunFire X4100&#8217;s with identical configurations) I can kickstart and rack up a few spare machines, and to get them up and running all I need to do is power them up (iLOM) and tell Puppet what to make them.</p><p>I&#8217;m currently starting testing of both Puppet itself and getting Kickstart to start the puppet install and daemon (instructions from <a href="http://watzmann.net/blog/index.php?cat=21" onclick="pageTracker._trackPageview('/outgoing/watzmann.net/blog/index.php?cat=21&amp;referer=');">David Lutterkort&#8217;s blog (Red Hat software engineer)</a>). We&#8217;ll see how everything goes&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.jasonantman.com/2009/05/building-a-rebuild-able-site/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Many Many Changes; Downtime</title><link>http://blog.jasonantman.com/2009/03/many-many-changes/</link> <comments>http://blog.jasonantman.com/2009/03/many-many-changes/#comments</comments> <pubDate>Sun, 08 Mar 2009 00:05:09 +0000</pubDate> <dc:creator>Jason Antman</dc:creator> <category><![CDATA[Projects]]></category> <category><![CDATA[firewall]]></category> <category><![CDATA[optimum]]></category> <category><![CDATA[rack]]></category> <category><![CDATA[router]]></category> <category><![CDATA[wan]]></category><guid isPermaLink="false">http://blog.jasonantman.com/?p=383</guid> <description><![CDATA[The first mid-project update on the new rack and moving jasonantman.com to a static IP.]]></description> <content:encoded><![CDATA[<p>Well, I don&#8217;t have time to go into a lot of detail, but I thought I&#8217;d give a recap of what&#8217;s going on. I went down to Mount Holly, NJ yestserday morning &#8211; about a 2-/12 hour drive each way, and picked up a 41U rack for the basement. Pretty damn heavy, took me two hours to disassemble it, wrangle it down the stairs, and get it back together. It&#8217;s an old round-hole rack, which didn&#8217;t seem to matter much until I found that the tabs of the Dell Rapid Rails are just a bit too big to fit in it, so neither my rack KMM nor the rails for my mail server will fit. A bigger problem, though, is that the guy told me it was the standard HP 29&#8243; deep, and I found it to be 28-1/4&#8243; deep when I started racking things up. So, though I just spent $200 on rails for old Proliants, they&#8217;re all about 1/2&#8243; too long to fit.</p><p>Yesterday, I also had Cablevision show up to install the new Optimum Business with 5 static IPs.</p><p>So, last night around 9:00, I started the arduous task of (for the first time ever) powering down ALL of my machines, moving them to the new rack, and re-cabling. That took about 2-1/2 hours, after which my intent was to bring up the new Optimum connection, configure the Vyatta router, and roll over mail and web. From what I&#8217;d read of the Vyatta docs it seemed a relatively straightforward task, and being the stubborn jackass that I am, I decied, &#8220;hey, it&#8217;s my personal site, it&#8217;s low traffic, and I want it up before I go to sleep. I&#8217;ll roll over DNS <em>before</em> I bring everything up.&#8221;</p><p>That was a <strong><em>very bad idea</strong></em>. Vyatta isn&#8217;t nearly as simple as it seems &#8211; especially for someone who isn&#8217;t really a network (or at least router/firewall) guy. When they say Enterprise, they mean robust. They also mean that week-long bootcamps aren&#8217;t for naught. It took me about half an hour to figure out that even if no &#8220;firewall&#8221; ruleset is associated with an interface, it still has an implicit drop all. And if you only want to firewall what&#8217;s coming in from the outside world, and let everything out, you need to add explicit allow all rules to the in and out sides of the LAN inteface and the out side of the WAN interface.</p><p>To top all this off, I had some serious still-unexplained DHCP problems on the LAN, a serious issue since I just set all my hosts to DHCP (which I&#8217;ll probably undo soon). So, Yesterday was network work from 7:30 AM to 3 AM today (including driving to pickup the rack). By the time 3 AM rolled around, I was quite unhappy that I decided to roll over DNS in order to force myself to get things working, as I ended up going back to FiOS for client access only. Today started around 10 AM, and here I am &#8211; 6:30 PM, and I just got things working partially right. I have mail working &#8211; arguably the most important &#8211; for jasonantman.com only, though I have yet to setup any aliases.</p><p>On the web side, I&#8217;m working to setup name-based vhosts for all of the subdomains, but for some reason, blog is showing up for everything. Luckily it works right. So we&#8217;ll see&#8230;.</p> ]]></content:encoded> <wfw:commentRss>http://blog.jasonantman.com/2009/03/many-many-changes/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- This site's performance optimized by W3 Total Cache. Dramatically improve the speed and reliability of your blog!

Learn more about our WordPress Plugins: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced) (user agent is rejected)
Database Caching 6/20 queries in 0.030 seconds using disk

Served from: mpac.midlandparkambulance.com @ 2010-07-30 10:03:30 -->