{"id":3386,"date":"2011-12-07T21:47:02","date_gmt":"2011-12-08T03:47:02","guid":{"rendered":"http:\/\/gregsowell.com\/?p=3386"},"modified":"2011-12-07T21:47:02","modified_gmt":"2011-12-08T03:47:02","slug":"vm-failover-with-san-replication-across-multiple-datacenters","status":"publish","type":"post","link":"https:\/\/gregsowell.com\/?p=3386","title":{"rendered":"VM Failover With SAN Replication Across Multiple Datacenters"},"content":{"rendered":"<p>This video and the included configs\/diagrams show how to have failover with VM infrastructure\/SAN replication in multiple datacenters.  This basically leverages the power of <a href=\"http:\/\/en.wikipedia.org\/wiki\/Border_Gateway_Protocol\">BGP<\/a> to move our public addressing.  BGP is the ONLY choice to have addressing seamlessly migrate from one site to another&#8230;it is the protocol that the Internet happens to run on \ud83d\ude09<\/p>\n<p>We use a combination of Cisco equipment with BGP(using prepending and filtering) and <a href=\"http:\/\/gregsowell.com\/?p=1992\">VRRP<\/a>, though the below configs show <a href=\"http:\/\/en.wikipedia.org\/wiki\/Hot_Standby_Router_Protocol\">HSRP<\/a> instead(the Cisco proprietary version of VRRP).  BGP does our public advertising to the internet while VRRP provides us gateway redundancy inside our network.<\/p>\n<p>We also stretch the VM L2 subnets across the datacenters so we can have seamless VM migration from one location to the other.<\/p>\n<p><strong>Here&#8217;s the diagrams<\/strong> that go along with the video:  <div class=\"wp-block-button\">\n<a  data-e-Disable-Page-Transition=\"true\" class=\"dlm-download-link dlm-download-default wp-block-button__link wp-element-button\" title=\"\" href=\"https:\/\/gregsowell.com?download=5711&amp;tmstv=1784663920\" rel=\"nofollow\" id=\"download-link-5711\" data-redirect=\"false\" >\n\tVM Failover Diagrams\t(1893 downloads\t)\n<\/a>\n<\/div>\n.<\/p>\n<p><strong>Here&#8217;s the video(only about 10 minutes long):<\/strong><\/p>\n<div id=\"media\">\n            <object id=\"csSWF\" classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"800\" height=\"600\" codebase=\"http:\/\/download.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=9,0,115,0\"><param name=\"src\" value=\"\/classes\/vmfailover\/vmfailover_controller.swf\"\/><param name=\"bgcolor\" value=\"#1a1a1a\"\/><param name=\"quality\" value=\"best\"\/><param name=\"allowScriptAccess\" value=\"always\"\/><param name=\"allowFullScreen\" value=\"true\"\/><param name=\"scale\" value=\"showall\"\/><param name=\"flashVars\" value=\"autostart=false\"\/><embed name=\"csSWF\" src=\"\/classes\/vmfailover\/vmfailover_controller.swf\" width=\"800\" height=\"600\" bgcolor=\"#1a1a1a\" quality=\"best\" allowScriptAccess=\"always\" allowFullScreen=\"true\" scale=\"showall\" flashVars=\"autostart=false&#038;thumb=FirstFrame.png&#038;thumbscale=45&#038;color=0x1A1A1A,0x1A1A1A\" pluginspage=\"http:\/\/www.macromedia.com\/shockwave\/download\/index.cgi?P1_Prod_Version=ShockwaveFlash\"><\/embed><\/object>\n        <\/div>\n<p><strong>Here are the router configs:<br \/>\nInternet<\/strong><\/p>\n<pre class=\"gs-code\"><code class=\"language-plaintext\">hostname Internet\r\n!\r\ninterface FastEthernet0\/0\r\n description houston\r\n ip address 11.11.11.2 255.255.255.252\r\n duplex auto\r\n speed auto\r\n!\r\ninterface FastEthernet0\/1\r\n description bryan\r\n ip address 12.12.12.2 255.255.255.252\r\n duplex auto\r\n speed auto\r\n!\r\ninterface FastEthernet1\/0\r\n ip address 10.0.0.1 255.255.255.0\r\n duplex auto\r\n speed auto\r\n!\r\nrouter bgp 1\r\n bgp log-neighbor-changes\r\n neighbor 11.11.11.1 remote-as 2\r\n neighbor 11.11.11.1 version 4\r\n neighbor 12.12.12.1 remote-as 2\r\n neighbor 12.12.12.1 version 4\r\n !\r\n address-family ipv4\r\n neighbor 11.11.11.1 activate\r\n neighbor 11.11.11.1 default-originate\r\n neighbor 12.12.12.1 activate\r\n neighbor 12.12.12.1 default-originate\r\n no auto-summary\r\n no synchronization\r\n network 20.0.0.0 mask 255.255.255.0\r\n exit-address-family\r\n!<\/code><\/pre>\n<p><strong>Bryan<\/strong><\/p>\n<pre class=\"gs-code\"><code class=\"language-plaintext\">!\r\nhostname bryan\r\n!\r\n!\r\nip subnet-zero\r\nip routing\r\n!\r\n!\r\nspanning-tree extend system-id\r\n!\r\n!\r\n!\r\ninterface FastEthernet0\/1\r\n switchport trunk encapsulation dot1q\r\n switchport mode trunk\r\n no ip address\r\n!\r\ninterface FastEthernet0\/2\r\n no switchport\r\n ip address 12.12.12.1 255.255.255.252\r\n!\r\ninterface FastEthernet0\/3\r\n description [failover p2p]\r\n switchport trunk encapsulation dot1q\r\n switchport mode trunk\r\n no ip address\r\n!\r\ninterface FastEthernet0\/47\r\n switchport access vlan 20\r\n switchport mode access\r\n no ip address\r\n spanning-tree portfast\r\n!\r\ninterface FastEthernet0\/48\r\n switchport access vlan 10\r\n switchport mode access\r\n no ip address\r\n spanning-tree portfast\r\n!\r\ninterface Vlan1\r\n no ip address\r\n shutdown\r\n!\r\ninterface Vlan10\r\n description [Houston Primary]\r\n ip address 192.168.1.3 255.255.255.0\r\n no ip redirects\r\n standby preempt delay minimum 30\r\n standby 10 ip 192.168.1.1\r\n standby 10 preempt\r\n standby 10 track FastEthernet0\/2 20\r\n!\r\ninterface Vlan20\r\n description [Bryan Primary]\r\n ip address 192.168.2.2 255.255.255.0\r\n no ip redirects\r\n standby preempt delay minimum 30\r\n standby 20 ip 192.168.2.1\r\n standby 20 priority 105\r\n standby 20 preempt\r\n standby 20 track FastEthernet0\/2 20\r\n!\r\nrouter bgp 2\r\n no synchronization\r\n bgp log-neighbor-changes\r\n network 1.1.1.0 mask 255.255.255.0\r\n network 2.2.2.0 mask 255.255.255.0\r\n network 192.168.1.0\r\n network 192.168.2.0\r\n neighbor 12.12.12.2 remote-as 1\r\n neighbor 12.12.12.2 version 4\r\n neighbor 12.12.12.2 soft-reconfiguration inbound\r\n neighbor 12.12.12.2 prefix-list in in\r\n neighbor 12.12.12.2 route-map out out\r\n no auto-summary\r\n!\r\nip classless\r\nip route 1.1.1.0 255.255.255.0 Null0 250\r\nip route 2.2.2.0 255.255.255.0 Null0\r\n!\r\n!\r\n!\r\nip prefix-list in seq 5 permit 0.0.0.0\/0\r\nip prefix-list in seq 15 deny 0.0.0.0\/0 le 32\r\n!\r\nip prefix-list out seq 5 permit 192.168.2.0\/24\r\nip prefix-list out seq 10 deny 0.0.0.0\/0 le 32\r\n!\r\nip prefix-list out-prepend seq 5 permit 192.168.1.0\/24\r\nip prefix-list out-prepend seq 10 deny 0.0.0.0\/0 le 32\r\n!\r\nroute-map out permit 10\r\n match ip address prefix-list out\r\n set origin igp\r\n!\r\nroute-map out permit 20\r\n match ip address prefix-list out-prepend\r\n set as-path prepend 2 2 2 2\r\n!<\/code><\/pre>\n<p><strong>Houston<\/strong><\/p>\n<pre class=\"gs-code\"><code class=\"language-plaintext\">!\r\nhostname hou\r\n!\r\n!\r\nip subnet-zero\r\nip routing\r\n!\r\n!\r\ninterface FastEthernet0\/1\r\n switchport trunk encapsulation dot1q\r\n switchport mode trunk\r\n!\r\ninterface FastEthernet0\/2\r\n no switchport\r\n ip address 11.11.11.1 255.255.255.252\r\n!\r\ninterface FastEthernet0\/3\r\n description [failover p2p]\r\n switchport trunk encapsulation dot1q\r\n switchport mode trunk\r\n!\r\ninterface FastEthernet0\/47\r\n switchport access vlan 20\r\n switchport mode access\r\n spanning-tree portfast\r\n!\r\ninterface FastEthernet0\/48\r\n switchport access vlan 10\r\n switchport mode access\r\n spanning-tree portfast\r\n!\r\ninterface Vlan1\r\n no ip address\r\n shutdown\r\n!\r\ninterface Vlan10\r\n description [Houston Primary]\r\n ip address 192.168.1.2 255.255.255.0\r\n standby preempt delay minimum 30\r\n standby 10 ip 192.168.1.1\r\n standby 10 priority 105\r\n standby 10 preempt\r\n standby 10 track FastEthernet0\/2 20\r\n!\r\ninterface Vlan20\r\n description [Bryan Primary]\r\n ip address 192.168.2.3 255.255.255.0\r\n standby preempt delay minimum 30\r\n standby 20 ip 192.168.2.1\r\n standby 20 preempt\r\n standby 20 track FastEthernet0\/2 20\r\n!\r\nrouter bgp 2\r\n bgp log-neighbor-changes\r\n neighbor 11.11.11.2 remote-as 1\r\n neighbor 11.11.11.2 version 4\r\n !\r\n address-family ipv4\r\n  neighbor 11.11.11.2 activate\r\n  neighbor 11.11.11.2 soft-reconfiguration inbound\r\n  neighbor 11.11.11.2 prefix-list in in\r\n  neighbor 11.11.11.2 route-map out out\r\n  no auto-summary\r\n  no synchronization\r\n  network 1.1.1.0 mask 255.255.255.0\r\n  network 2.2.2.0 mask 255.255.255.0\r\n  network 192.168.1.0\r\n  network 192.168.2.0\r\n exit-address-family\r\n!\r\nip classless\r\nip route 1.1.1.0 255.255.255.0 Null0\r\nip route 2.2.2.0 255.255.255.0 Null0 250\r\n!\r\nip prefix-list in seq 5 permit 0.0.0.0\/0\r\nip prefix-list in seq 15 deny 0.0.0.0\/0 le 32\r\n!\r\nip prefix-list out seq 5 permit 192.168.1.0\/24\r\nip prefix-list out seq 10 deny 0.0.0.0\/0 le 32\r\n!\r\nip prefix-list out-prepend seq 5 permit 192.168.2.0\/24\r\nip prefix-list out-prepend seq 10 deny 0.0.0.0\/0 le 32\r\nroute-map out permit 10\r\n match ip address prefix-list out\r\n set origin igp\r\n!\r\nroute-map out permit 20\r\n match ip address prefix-list out-prepend\r\n set as-path prepend 2 2 2 2\r\n!<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>This video and the included configs\/diagrams show how to have failover with VM infrastructure\/SAN replication in multiple datacenters. This basically leverages the power of\u2026<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,8,13,40],"tags":[],"class_list":["post-3386","post","type-post","status-publish","format-standard","hentry","category-cisco","category-networking","category-server","category-vmware"],"_links":{"self":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts\/3386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3386"}],"version-history":[{"count":14,"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts\/3386\/revisions"}],"predecessor-version":[{"id":3400,"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts\/3386\/revisions\/3400"}],"wp:attachment":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}