利用ucarp实现虚拟IP故障转移
一、概述
十余年的柯桥网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整柯桥建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“柯桥网站设计”,“柯桥网站推广”以来,每个客户项目都认真落实执行。
- UCARP简介
UCARP允许多个主机共享一个虚拟的ip地址,以提供自动的故障恢复功能,当其中某个主机宕机时,其它的主机会自动接管服务。UCARP是CARP协议(通用地址冗余协议,最早在OpenBSD上实现)的linux实现版本,同时也能移植到其它多个unix平台,UCARP的官方网站:http://www.ucarp.org/project/ucarp 。
CARP协议的特点在于其非常低的开销,主机间使用加密数据传递信息,并且在冗余主机之间不需要任何额外的网络链接(在README中有ucarp的简单部署实例)。
2.配置需求
两个或多个主机以构成冗余主机组;
一个共享的虚拟ip地址,用以对外提供可靠的服务,冗余主机组中的某个主机会对会对这个ip上的服务进行应答;
对于每个主机,需要配置一个真实的ip地址;
一个1-255之间的共享标识符;
一个共享的密码(使得网络间传输的消息都为密文);
当冗余组中某个主机成为MASTER时执行的脚本程序;
当冗余组中某个主机不再是MASTER是执行的脚本程序;
3 Ucap具体参数详解
--inter (-i
--srcip=
--vhid=
--pass=
--preempt (-P): becomes a master as soon as possible (以最快的速度成为主服务器的角色)
--neutral (-n): don't run downscript at start if backup (如果是备份主机,启动的时候不运行downscript.)
--addr=
--help (-h): summary of command-line options (帮助)
--advbase=
--advskew=
--upscript=
--downscript=
--deadratio=
--shutdown (-z): call shutdown script at exit (在退出的时候,执行关闭的脚本)
--daemonize (-B): run in background (运行在后台)
--facility=
Ucarp参数简述:
-v vip标识 –p 密码 –a vip地址 –u 当机器为升为master时运行的脚本 –d 当机器降为slave时运行的脚本 –s心跳ip地址 –P与-k结合最小的为master机器 –B以daemon方式运行
4.实验环境
Role hostname real_ip vip gateway OS
master node2 192.168.32.32/24 192.168.32.22/24 192.168.32.254 rhel5.5
slave node3 192.168.32.33/24 192.168.32.22/24 192.168.32.254 rhel5.5
二、安装配置
1、安装
[root@node2 ~]# tar -zxf ucarp-1.5.tar.gz #ucarp最好选择1.2以上版本,1.1以下含有bug
[root@node2 ~]# cd ucarp-1.5
[root@node2 ucarp-1.5]# which gcc #确定gcc
/usr/bin/gcc
[root@node2 ucarp-1.5]# ./configure CC=/usr/bin/gcc --prefix=/usr/local/ucarp
[root@node2 ucarp-1.5]# make && make install
2、配置主服务器(node2)
2.1 编写机器升为master时运行的脚本
[root@node2 ~]# vim /etc/master-up.sh
#!/bin/bash
GATEWAY=192.168.32.254
/sbin/ip addr add 192.168.32.22/24 dev eth0
/bin/hostname nodevir2
/sbin/route add default gw $GATEWAY
service httpd start
2.2 编写机器降为slave时运行的脚本
[root@node2 ~]# vim /etc/master-down.sh
#!/bin/bash
GATEWAY=192.168.32.254
/sbin/ip addr del 192.168.32.22/24 dev eth0
/bin/hostname node2
/sbin/route add default gw $GATEWAY
service httpd stop
2.3 编写ucarp运行脚本
[root@node2 ~]# vim /etc/master.sh
#!/bin/bash
/usr/local/ucarp/sbin/ucarp -i eth0 -v 40 -p gw22 -a 192.168.32.22 -u /etc/master-up.sh -d /etc/master-down.sh -s 192.168.32.32 -P -B
2.4 启动服务
[root@node2 ~]# . /etc/master.sh
[root@node2 ~]# ps -ef | grep ucarp
root 11695 1 0 11:33 ? 00:00:00 /usr/local/ucarp/sbin/ucarp -i eth0 -v 40 -p gw22 -a 192.168.32.22 -u /root/master-up.sh -d /root/master-down.sh -s 192.168.32.32 -P -B
[root@node2 ~]# hostname #hostname切换成功
nodevir2
[root@node2 ~]# ip addr show | grep 22 #master-up.sh脚本生效
inet 192.168.32.22/24 scope global secondary eth0
[root@nodevir2 ~]# ps -ef | grep httpd #httpd服务启动
root 11726 1 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11727 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11729 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11730 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11731 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11732 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11733 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11734 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11735 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
root 11897 6167 0 11:44 pts/1 00:00:00 grep httpd
3.配置备服务器(node3)
3.1 编写机器升为master时运行的脚本
[root@node3 ~]# vim /etc/master-up.sh
#!/bin/bash
GATEWAY=192.168.32.254
/sbin/ip addr add 192.168.32.22/24 dev eth0
/bin/hostname nodevir2
/sbin/route add default gw $GATEWAY
service httpd start
3.2 编写机器降为slave时运行的脚本
[root@node2 ~]# vim /etc/master-down.sh
#!/bin/bash
GATEWAY=192.168.32.254
/sbin/ip addr del 192.168.32.22/24 dev eth0
/bin/hostname node3
/sbin/route add default gw $GATEWAY
service httpd stop
3.3 编写ucarp运行脚本
[root@node2 ~]# vim /etc/master.sh
#!/bin/bash
/usr/local/ucarp/sbin/ucarp -i eth0 -v 40 -p gw22 -a 192.168.32.22 -u /etc/master-up.sh -d /etc/master-down.sh -s 192.168.32.33 -P -k 15 -B
3.4 启动服务
[root@node2 ~]# . /etc/master.sh
root 5678 1 0 11:40 ? 00:00:00 /usr/local/ucarp/sbin/ucarp -v 40 -i eth0 -p gw22 -a 192.168.32.22 -u /root/master-up.sh -d /root/master-down.sh -s 192.168.32.33 -k 15 -B
[root@node3 ~]# ps -ef | grep httpd #httpd服务为启动
root 5788 32767 0 11:46 pts/1 00:00:00 grep httpd
三. 故障切换
- 主故障
[root@nodevir2 ~]# kill 5678 #down掉ucarp服务,或重启服务器
[root@node3 ~]# hostname #hostname切换成功
nodevir2
[root@node3 ~]# ip addr show | grep 22 #虚拟IP切换成功
inet 192.168.32.22/24 scope global secondary eth0
[root@node3 ~]# ps -ef | grep httpd #服务切换成功
root 5824 1 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5826 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5827 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5828 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5829 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5830 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5831 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5832 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5833 5824 0 11:47 ? 00:00:00 /
2.主恢复
[root@node2 ~]# . /etc/master.sh
[root@nodevir2 ~]# hostname
nodevir2
[root@node2 ~]# ps -ef | grep httpd
root 11969 1 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11970 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11972 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11973 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11974 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11975 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11976 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11977 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11978 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
[root@node2 ~]# ip addr show | grep 22
inet 192.168.32.22/24 scope global secondary eth0
[root@node3 ~]# hostname
node3
[root@node3 ~]# ps -ef | grep httpd
root 6148 32767 0 12:02 pts/1 00:00:00 grep httpd
[root@node3 ~]# ip addr show | grep 22 #成功切换
网页标题:利用ucarp实现虚拟IP故障转移
路径分享:http://azwzsj.com/article/pjjppp.html