VM Failover With SAN Replication Across Multiple Datacenters
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 BGP to move our public addressing. BGP is the ONLY choice to have addressing seamlessly migrate from one site to another…it is the protocol that the Internet happens to run on 😉
We use a combination of Cisco equipment with BGP(using prepending and filtering) and VRRP, though the below configs show HSRP instead(the Cisco proprietary version of VRRP). BGP does our public advertising to the internet while VRRP provides us gateway redundancy inside our network.
We also stretch the VM L2 subnets across the datacenters so we can have seamless VM migration from one location to the other.
Here’s the diagrams that go along with the video: VM Failover Diagrams (1760 downloads) .
Here’s the video(only about 10 minutes long):
Here are the router configs:
Internet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | hostname Internet ! interface FastEthernet0/0 description houston ip address 11.11.11.2 255.255.255.252 duplex auto speed auto ! interface FastEthernet0/1 description bryan ip address 12.12.12.2 255.255.255.252 duplex auto speed auto ! interface FastEthernet1/0 ip address 10.0.0.1 255.255.255.0 duplex auto speed auto ! router bgp 1 bgp log-neighbor-changes neighbor 11.11.11.1 remote-as 2 neighbor 11.11.11.1 version 4 neighbor 12.12.12.1 remote-as 2 neighbor 12.12.12.1 version 4 ! address-family ipv4 neighbor 11.11.11.1 activate neighbor 11.11.11.1 default-originate neighbor 12.12.12.1 activate neighbor 12.12.12.1 default-originate no auto-summary no synchronization network 20.0.0.0 mask 255.255.255.0 exit-address-family ! |
Bryan
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | ! hostname bryan ! ! ip subnet-zero ip routing ! ! spanning-tree extend system-id ! ! ! interface FastEthernet0/1 switchport trunk encapsulation dot1q switchport mode trunk no ip address ! interface FastEthernet0/2 no switchport ip address 12.12.12.1 255.255.255.252 ! interface FastEthernet0/3 description [failover p2p] switchport trunk encapsulation dot1q switchport mode trunk no ip address ! interface FastEthernet0/47 switchport access vlan 20 switchport mode access no ip address spanning-tree portfast ! interface FastEthernet0/48 switchport access vlan 10 switchport mode access no ip address spanning-tree portfast ! interface Vlan1 no ip address shutdown ! interface Vlan10 description [Houston Primary] ip address 192.168.1.3 255.255.255.0 no ip redirects standby preempt delay minimum 30 standby 10 ip 192.168.1.1 standby 10 preempt standby 10 track FastEthernet0/2 20 ! interface Vlan20 description [Bryan Primary] ip address 192.168.2.2 255.255.255.0 no ip redirects standby preempt delay minimum 30 standby 20 ip 192.168.2.1 standby 20 priority 105 standby 20 preempt standby 20 track FastEthernet0/2 20 ! router bgp 2 no synchronization bgp log-neighbor-changes network 1.1.1.0 mask 255.255.255.0 network 2.2.2.0 mask 255.255.255.0 network 192.168.1.0 network 192.168.2.0 neighbor 12.12.12.2 remote-as 1 neighbor 12.12.12.2 version 4 neighbor 12.12.12.2 soft-reconfiguration inbound neighbor 12.12.12.2 prefix-list in in neighbor 12.12.12.2 route-map out out no auto-summary ! ip classless ip route 1.1.1.0 255.255.255.0 Null0 250 ip route 2.2.2.0 255.255.255.0 Null0 ! ! ! ip prefix-list in seq 5 permit 0.0.0.0/0 ip prefix-list in seq 15 deny 0.0.0.0/0 le 32 ! ip prefix-list out seq 5 permit 192.168.2.0/24 ip prefix-list out seq 10 deny 0.0.0.0/0 le 32 ! ip prefix-list out-prepend seq 5 permit 192.168.1.0/24 ip prefix-list out-prepend seq 10 deny 0.0.0.0/0 le 32 ! route-map out permit 10 match ip address prefix-list out set origin igp ! route-map out permit 20 match ip address prefix-list out-prepend set as-path prepend 2 2 2 2 ! |
Houston
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | ! hostname hou ! ! ip subnet-zero ip routing ! ! interface FastEthernet0/1 switchport trunk encapsulation dot1q switchport mode trunk ! interface FastEthernet0/2 no switchport ip address 11.11.11.1 255.255.255.252 ! interface FastEthernet0/3 description [failover p2p] switchport trunk encapsulation dot1q switchport mode trunk ! interface FastEthernet0/47 switchport access vlan 20 switchport mode access spanning-tree portfast ! interface FastEthernet0/48 switchport access vlan 10 switchport mode access spanning-tree portfast ! interface Vlan1 no ip address shutdown ! interface Vlan10 description [Houston Primary] ip address 192.168.1.2 255.255.255.0 standby preempt delay minimum 30 standby 10 ip 192.168.1.1 standby 10 priority 105 standby 10 preempt standby 10 track FastEthernet0/2 20 ! interface Vlan20 description [Bryan Primary] ip address 192.168.2.3 255.255.255.0 standby preempt delay minimum 30 standby 20 ip 192.168.2.1 standby 20 preempt standby 20 track FastEthernet0/2 20 ! router bgp 2 bgp log-neighbor-changes neighbor 11.11.11.2 remote-as 1 neighbor 11.11.11.2 version 4 ! address-family ipv4 neighbor 11.11.11.2 activate neighbor 11.11.11.2 soft-reconfiguration inbound neighbor 11.11.11.2 prefix-list in in neighbor 11.11.11.2 route-map out out no auto-summary no synchronization network 1.1.1.0 mask 255.255.255.0 network 2.2.2.0 mask 255.255.255.0 network 192.168.1.0 network 192.168.2.0 exit-address-family ! ip classless ip route 1.1.1.0 255.255.255.0 Null0 ip route 2.2.2.0 255.255.255.0 Null0 250 ! ip prefix-list in seq 5 permit 0.0.0.0/0 ip prefix-list in seq 15 deny 0.0.0.0/0 le 32 ! ip prefix-list out seq 5 permit 192.168.1.0/24 ip prefix-list out seq 10 deny 0.0.0.0/0 le 32 ! ip prefix-list out-prepend seq 5 permit 192.168.2.0/24 ip prefix-list out-prepend seq 10 deny 0.0.0.0/0 le 32 route-map out permit 10 match ip address prefix-list out set origin igp ! route-map out permit 20 match ip address prefix-list out-prepend set as-path prepend 2 2 2 2 ! |