<?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>Running UNIX &#187; vcs</title>
	<atom:link href="http://www.runningunix.com/category/vcs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.runningunix.com</link>
	<description>UNIX/Solaris tips, tricks, and advice</description>
	<lastBuildDate>Sun, 25 Apr 2010 17:33:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Link-based IPMP setup with VCS</title>
		<link>http://www.runningunix.com/2009/01/link-based-ipmp-setup-with-vcs/</link>
		<comments>http://www.runningunix.com/2009/01/link-based-ipmp-setup-with-vcs/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 11:15:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Solaris]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[vcs]]></category>
		<category><![CDATA[ipmp]]></category>
		<category><![CDATA[redundant]]></category>

		<guid isPermaLink="false">http://www.runningunix.com/?p=89</guid>
		<description><![CDATA[With Solaris 10 came a nice feature &#8211; Link-based IP Multipathing (IPMP). It determines NIC availability solely on the NIC driver reporting the physical link status &#8211; UP or DOWN. Previous versions used &#8220;probe-based&#8221; IPMP, where connectivity is tested by pinging something on the network from each interface. While probe-based is actually a more thorough [...]]]></description>
			<content:encoded><![CDATA[<p>With Solaris 10 came a nice feature &#8211; Link-based IP Multipathing (IPMP). It determines NIC availability solely on the NIC driver reporting the physical link status &#8211; UP or DOWN. Previous versions used &#8220;probe-based&#8221; IPMP, where connectivity is tested by pinging something on the network from each interface. While probe-based is actually a more thorough test (tests network layer 3 as well as 2), it is much more cumbersome to configure, and you need an extra IP address for each interface for &#8220;test&#8221; addresses. IMO Link-based IPMP is sufficient for most applications.</p>
<p></p>
<p>For some reason, configuring link-based IPMP in VCS is somewhat tricky, and the documentation doesn&#8217;t seem to help much. It seems all the default values for VCS are for probe-based IPMP only.</p>
<p>To achieve link-based IPMP, here&#8217;s how I&#8217;ve configured my MultiNICB resource:<br />
<div id="attachment_216" class="wp-caption alignnone" style="width: 488px"><a href="http://www.runningunix.com/wp-content/uploads/2009/01/multinicb.jpg"><img src="http://www.runningunix.com/wp-content/uploads/2009/01/multinicb.jpg" alt="Link-based IPMP MultiNICB properties" title="multinicb" width="478" height="558" class="size-full wp-image-216" /></a><p class="wp-caption-text">Link-based IPMP MultiNICB properties</p></div><br />
These are the values you must change from the defaults:</p>
<p><strong>UseMpathd: 1</strong><br />
Tells VCS to use mpathd for network link status<br />
<strong>MpathCommand: /usr/lib/inet/in.mpathd -a</strong><br />
The default, /usr/sbin/in.mpathd is just incorrect &#8211; it doesn&#8217;t live there.<br />
<strong>ConfigCheck: 0</strong><br />
If you leave this at 1, it will overwrite your /etc/hostname.xxx files with probe-based IPMP configuration<br />
<strong>Device: (your IPMP interfaces here)</strong><br />
The &#8220;interface alias&#8221; for each device is not needed, leave them blank.<br />
<strong>IgnoreStatus: 0</strong><br />
You want VCS to NOT ignore link status, since this is how link-based IPMP works.<br />
<strong>GroupName: <blank></strong><br />
Do not use your IPMP group name here, it&#8217;s not needed. VCS is not monitoring the group, mpathd is.</p>
<p>Here&#8217;s how it looks in main.cf:</p>
<blockquote><p>
        MultiNICB csgmultinic (<br />
                UseMpathd = 1<br />
                MpathdCommand = &#8220;/usr/lib/inet/in.mpathd -a&#8221;<br />
                ConfigCheck = 0<br />
                Device = { ce0 = &#8220;&#8221;, ce4 = &#8220;&#8221; }<br />
                IgnoreLinkStatus = 0<br />
                )
</p></blockquote>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.runningunix.com%2F2009%2F01%2Flink-based-ipmp-setup-with-vcs%2F&amp;linkname=Link-based%20IPMP%20setup%20with%20VCS"><img src="http://www.runningunix.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.runningunix.com/2009/01/link-based-ipmp-setup-with-vcs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VCS Heartbeats must be on separate VLANs</title>
		<link>http://www.runningunix.com/2009/01/vcs-heartbeats-must-be-on-separate-vlans/</link>
		<comments>http://www.runningunix.com/2009/01/vcs-heartbeats-must-be-on-separate-vlans/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 00:52:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Solaris]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[vcs]]></category>
		<category><![CDATA[heartbeats]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[vlan]]></category>

		<guid isPermaLink="false">http://www.runningunix.com/?p=91</guid>
		<description><![CDATA[It&#8217;s not entirely clear from the documentation, but Veritas Cluster heartbeat links need to be on separate VLANs. They mention the requirement of different switches, but say nothing about VLANs. Do not use one big VLAN for all your private heartbeat links &#8211; you need two. Your different clusters can share these two VLANs, but [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s not entirely clear from the documentation, but Veritas Cluster heartbeat links need to be on separate VLANs. They mention the requirement of different switches, but say nothing about VLANs. Do not use one big VLAN for all your private heartbeat links &#8211; you need two. Your different clusters can share these two VLANs, but if you have two heartbeat connections for your cluster, they need to be isolated from each other in hardware or in VLANs. If you do put them on the same VLAN or cross your links so they can see each other, you&#8217;ll get something like:</p>
<p>Dec 11 16:39:20 server llt: [ID 525299 kern.notice] LLT WARNING V-14-1-10497 crossed links? link 0 and link 1 of node 0 on the same network</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.runningunix.com%2F2009%2F01%2Fvcs-heartbeats-must-be-on-separate-vlans%2F&amp;linkname=VCS%20Heartbeats%20must%20be%20on%20separate%20VLANs"><img src="http://www.runningunix.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.runningunix.com/2009/01/vcs-heartbeats-must-be-on-separate-vlans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Veritas Cluster I/O Fencing, Part 2</title>
		<link>http://www.runningunix.com/2009/01/veritas-cluster-io-fencing-part-2/</link>
		<comments>http://www.runningunix.com/2009/01/veritas-cluster-io-fencing-part-2/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 22:33:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Solaris]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[vcs]]></category>
		<category><![CDATA[coordinator disks]]></category>
		<category><![CDATA[fencing]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[scsi-3]]></category>

		<guid isPermaLink="false">http://www.runningunix.com/?p=80</guid>
		<description><![CDATA[To follow up from part 1, this post will go into a bit more detail how to set up your I/O fencing for your cluster. This example is using Solaris 10 and VCS 5.0.
Before you continue, you need to have your three coordinator disks and all your data disks visible to all the cluster nodes. [...]]]></description>
			<content:encoded><![CDATA[<p>To follow up from part 1, this post will go into a bit more detail how to set up your I/O fencing for your cluster. This example is using Solaris 10 and VCS 5.0.</p>
<p>Before you continue, you need to have your three coordinator disks and all your data disks visible to all the cluster nodes. All these disks should have the SCSI-3 Persistent Reservation bit set. Put your three coordinator disks into their own disk group. I call mine dgvxfencoord.</p>
<p><strong>1. Testing your shared disks</strong><br />
VCS includes a tool to test weather your disks have the SCSI-3 PR bit set, called vxfentsthdw. You only need to run this on one node in the cluster, and using ssh/rsh, the tool will perform the tests for all the nodes. You&#8217;ll need to set up ssh keys (or .rhosts) so root on your first cluster node can log into the other cluster nodes with no password &#8211; this is just temporary so our testing will work. If you use rsh, just use the -n flag with vxfentsthdw.The easiest way to use this tool is to specify disk groups to test. For example:</p>
<blockquote><p># /opt/VRTSvcs/vxfen/bin/vxfentsthdw -g dgvxfencoord</p></blockquote>
<p>This will test every disk in the dgvxfencoord disk group, reading/writing keys to the disks, locking them for exclusive use by each member of the cluster. You should see &#8220;PASSED&#8221; after each test.</p>
<p>While testing your data disks, you may want to use the -r flag, to use non-destructive testing, if you have data on your disks already:</p>
<blockquote><p>/opt/VRTSvcs/vxfen/bin/vxfentsthdw -r -g datadg</p></blockquote>
<p>Once your tests indicate that SCSI-3 Persistent Reservations are working, you&#8217;re ready to move on. Your diskgroup with the coordinator disks never needs to be imported at all, since there are no file systems or other data on them.</p>
<blockquote><p>
vxdg deport dgvxfencoord<br />
vxdg -t import dgvxfencoord #(turns off automatic importing when system starts)<br />
vxdg -g dgvxfencoord set coordinator=on<br />
vxdg deport dgvxfencoord</p></blockquote>
<p><strong>2. Perform these steps on each node of the cluster to set up I/O Fencing</strong><br />
I&#8217;m a big fan of copy and paste from online documentation, so here you go. This will tell the vx fencing kernel driver to use a diskgroup of &#8220;dgvxfencoord&#8221; for the coordinator disks, tell it to use SCSI-3 with dynamic multipathing, and will then restart the vx fencing service.</p>
<blockquote><p>echo &#8220;dgvxfencoord&#8221; > /etc/vxfendg<br />
cp /etc/vxfen.d/vxfenmode_scsi3_dmp /etc/vxfenmode<br />
/etc/init.d/vxfen stop<br />
/etc/init.d/vxfen start</p></blockquote>
<p><strong>3. VCS Configuration</strong><br />
So once you have the vx fencing driver set up, you have to tell your cluster to use it. First, stop your cluster and resources:</p>
<blockquote><p>haconf -dump -makero<br />
hastop -all</p></blockquote>
<p>Then hand-edit the main.cf file in /opt/VRTSvcs/conf/config. Insert one line within the cluster definition block. Here&#8217;s an example:</p>
<blockquote><p>cluster BIG-CLUSTER4<br />
UserNames = { admin = &#8220;cERpdxPmHpzS.&#8221; }<br />
Administrators = { admin }<br />
ClusterAddress = &#8220;192.168.65.144&#8243;<br />
<strong>UseFence = SCSI3</strong><br />
)</p></blockquote>
<p>Once you insert your line, it&#8217;s a good idea to check the syntax of main.cf:</p>
<blockquote><p>hacf -verify /etc/VRTSvcs/conf/config</p></blockquote>
<p>Then, copy the updated main.cf file from this node to the other nodes using your preferred method &#8211; rcp, scp, ftp, whatever.</p>
<p>Then on each node, &#8220;hastart&#8221;.</p>
<p>You can verify the fencing configuration with this:</p>
<blockquote><p>#/sbin/vxfenadm -d</p>
<p>I/O Fencing Cluster Information:<br />
================================</p>
<p> Fencing Protocol Version: 201<br />
 Fencing Mode: <strong>SCSI3</strong><br />
 Fencing SCSI3 Disk Policy: <strong>dmp</strong><br />
 Cluster Members:</p>
<p>        * 0 (server1)<br />
          1 (server2)</p>
<p> RFSM State Information:<br />
        node   0 in state  8 (running)<br />
        node   1 in state  8 (running)
</p></blockquote>
<p><strong>4. Testing your fencing setup</strong><br />
You&#8217;ll want to test this before going into production. I have used a few methods to test this, but these are the easiest.</p>
<p><em>1. If you have physical access to your server</em><br />
Unplug the two heartbeat links and the public network link. Fencing should kick in and the nodes will all race for those cooridator disks. The winner will take control, and the other cluster nodes will panic and reboot. Have a console connection on the nodes to verify.</p>
<p><em>2. If you have switch access, or access to someone who does</em><br />
An easy thing to do is to disable the network ports corresponding to the heartbeats and public network link. Almost the same as #1.</p>
<p><em>3. If you want to perform the test by yourself and have no physical access</em><br />
Set up scripts to change the speed/duplex on the NICs running your heartbeats and public network. Do this from the serial console, so you don&#8217;t lose access obviously (I&#8217;ve done similar things &#8211; quite a few times). Once your switch is still auto/auto and your NIC is forced to 10-half with no auto-negotiation, communication will be impossible and effectively you&#8217;ve severed your links.</p>
<p>Happy clustering!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.runningunix.com%2F2009%2F01%2Fveritas-cluster-io-fencing-part-2%2F&amp;linkname=Veritas%20Cluster%20I%2FO%20Fencing%2C%20Part%202"><img src="http://www.runningunix.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.runningunix.com/2009/01/veritas-cluster-io-fencing-part-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Veritas Cluster I/O Fencing, Part 1</title>
		<link>http://www.runningunix.com/2008/12/veritas-cluster-io-fencing-part-1/</link>
		<comments>http://www.runningunix.com/2008/12/veritas-cluster-io-fencing-part-1/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 21:22:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[vcs]]></category>
		<category><![CDATA[coordinator disks]]></category>
		<category><![CDATA[fencing]]></category>
		<category><![CDATA[heartbeat]]></category>
		<category><![CDATA[lock disks]]></category>
		<category><![CDATA[veritas cluster]]></category>

		<guid isPermaLink="false">http://www.runningunix.com/?p=76</guid>
		<description><![CDATA[So you&#8217;ve got your Veritas Cluster up and running. There&#8217;s one advanced feature that really puts the icing on the cake in my mind: I/O Fencing. 
Here&#8217;s a scenario: There is a partial power outage, IOS upgrade failure, spanning tree loop, or anything else that can cause multiple network switch failures in your data center. [...]]]></description>
			<content:encoded><![CDATA[<p>So you&#8217;ve got your Veritas Cluster up and running. There&#8217;s one advanced feature that really puts the icing on the cake in my mind: I/O Fencing. </p>
<p>Here&#8217;s a scenario: There is a partial power outage, IOS upgrade failure, spanning tree loop, or anything else that can cause multiple network switch failures in your data center. Because of this, your cluster nodes can no longer communicate using ANY of their heartbeat links, or public network. Without I/O fencing enabled, each node would believe all the other nodes were &#8220;down&#8221;, and try to perform a failover and run all the defined service groups in the cluster. Multiple nodes trying to read/write to the same storage may result in data corruption, and this is your worst case scenario. I/O fencing will help here.</p>
<p>There is a SCSI-3 feature called &#8220;SCSI-3 Persistent Reservation&#8221;, which allows cluster nodes to write &#8220;keys&#8221; to shared disks, effectively locking the disk for exclusive use by a node.</p>
<p>Ask your storage administrator to enable SCSI-3 Persistent Reservation on each LUN you are assigned. On some arrays, this is the default behavior, but others require you to turn on the feature per LUN. </p>
<p>All the cluster nodes must be assigned three small &#8220;coordinator disks&#8221;, which serve as a locking mechanism for the shared storage. Just three shared disks per cluster, and all nodes must have access to them.</p>
<p>In the same scenario above, when the heartbeats go down and nodes are thought to be &#8220;offline&#8221;, each surviving node will race for control of the coordinator disks, ejecting any other nodes&#8217; keys and writing their own key to the disk, locking other nodes out.</p>
<p>If there is more than one surviving node in the cluster, the &#8220;loser&#8221; of the race will actually panic and reboot. That&#8217;s not a typo &#8211; the node will kernel panic and reboot. This is the only sure way to ensure the node will not proceed and potentially corrupt data on the shared storage.</p>
<p>Consult your VCS documentation for the setup steps to enable I/O Fencing. I will be posting a &#8220;part 2&#8243; also, with my abbreviated version to get it up and running.</p>
<p></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.runningunix.com%2F2008%2F12%2Fveritas-cluster-io-fencing-part-1%2F&amp;linkname=Veritas%20Cluster%20I%2FO%20Fencing%2C%20Part%201"><img src="http://www.runningunix.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.runningunix.com/2008/12/veritas-cluster-io-fencing-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a firedrill service group for Veritas Cluster</title>
		<link>http://www.runningunix.com/2008/02/creating-a-firedrill-service-group-for-veritas-cluster/</link>
		<comments>http://www.runningunix.com/2008/02/creating-a-firedrill-service-group-for-veritas-cluster/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 00:03:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[vcs]]></category>
		<category><![CDATA[firedrill]]></category>
		<category><![CDATA[replication]]></category>
		<category><![CDATA[service group]]></category>
		<category><![CDATA[SRDF]]></category>

		<guid isPermaLink="false">http://www.cybersand.com/blog/?p=4</guid>
		<description><![CDATA[fdsetup-srdf2
We use SRDF replication here, and the fd-srdf script provided with the SRDF agent only copies over a small percentage of the resources in our service groups (no zones, no IPs, no Oracle resources, etc). I modified it to grab all of these things and copy them over. The special things about this script is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cybersand.com/blog/wp-content/uploads/2008/02/fdsetup-srdf" title="fdsetup-srdf2">fdsetup-srdf2</a></p>
<p>We use SRDF replication here, and the fd-srdf script provided with the SRDF agent only copies over a small percentage of the resources in our service groups (no zones, no IPs, no Oracle resources, etc). I modified it to grab all of these things and copy them over. The special things about this script is that it changes all the disk groups and mounts to diskgroup_fd resources for the names and mount points for a firedrill service group. Helps if you have &gt;50 mount points like me.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.runningunix.com%2F2008%2F02%2Fcreating-a-firedrill-service-group-for-veritas-cluster%2F&amp;linkname=Creating%20a%20firedrill%20service%20group%20for%20Veritas%20Cluster"><img src="http://www.runningunix.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.runningunix.com/2008/02/creating-a-firedrill-service-group-for-veritas-cluster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
