A virtual IP address? Why do I want one of those? I have two servers (not clustered) set up to run an application. High Availability is important, but I do not need automatic failover. So I have the application run on a specific IP address on Server-A while the application is off on Server-B. In the event Server-A needs to be brought down for maintenance or has an issue, I want to be able to start the application on Server-B with the same IP Address.
Here is the quick and dirty way to do it.
Assumption: IP Network is 192.168.1.0/255.255.255.0
We will pick 192.168.1.100 for our Virtual IP (VIP) Address
On Server-A:
1. Create a file called start_adm_vip.sh in /usr/local/sbin
Its contents should be as follows:
/sbin/ifconfig eth0:1 192.168.1.100 netmask 255.255.255.0
/sbin/arping -q -U -c 3 -I eth0 192.168.1.100
2. Create a file called shutdown_adm_vip.sh
Its contents should be as follows:
/sbin/ifconfig eth0:1 down
3. Modify permissions on these files so they are executable. 750 should suffice.
chmod 750 *adm_vip.sh
4. Edit the /etc/hosts file to add a friendly name to the VIP. Obviously use the name and the IP Address you choose here:
192.168.1.100 appadm.mydomain.net appadm
5. Copy the two scripts you just created to Server-B and place them in /usr/local/sbin as well.
On Server-B:
1. Edit the /etc/hosts file to add a friendly name to the VIP. Obviously use the name and the IP Address you choose here:
192.168.1.100 appadm.mydomain.net appadm
Starting the VIP
Now run the script "start_adm_vip.sh" on Server-A. You should be able to ping "appadm" from both Server-A and Server-B. Do not go and run the start script on Server-B. If you do you will have duplicate IP Addresses on the network. If you want to move the VIP to Server-B, shut it down on Server-A first.
Shutting the VIP down
If you want to manually move the VIP to Server-B you need to shut it down on Server-A first.
On Server-A run the "shutdown_adm_vip.sh". Now "appadm" should not be pingable from either server.
Go to Server-B and run the script "start_adm_vip.sh". "appadm" should now be live on Server-B and pingable from both Server-A and Server-B.
Like I said, this is a quick and dirty way to have a VIP. Hope this helps someone out there.
Wednesday, June 2, 2010
Subscribe to:
Post Comments (Atom)
Alternatively, you could use VRRP or OSPF anycast. My preference is OSPF anycast as it gives you redundancy and potential latency-avoidance and can be incorporated into just about any routing environment. This of course assumes that you already have back-end replication of some sort in place, or your service is independent and updated manually.
ReplyDelete