一、 网络环境 Vip=192.168.15.200 real=192.168.15.101 real=192.168.15.103 master=10.0.0.2 slave=10.0.0.3 (此实验为虚拟机环境) 一、软件包安装[root@localhost ~]# rpm -qa|grep heartheartbeat-ldirectord-2.1.3-3.el5.centos heartbeat-pils-2.1.3-3.el5.centos heartbeat-stonith-2.1.3-3.el5.centos heartbeat-2.1.3-3.el5.centos [root@localhost ~]# rpm -qa|grep ipvs ipvsadm-1.24-10 [root@localhost ~]# rpm -qa|grep arp arptables-noarp-addr-0.99.2-1.rh.el.um.1 arptables_jf-0.0.8-8 [root@localhost ~]# rpm -qa|grep perl-Mail perl-Mail-POP3Client-2.17-1.el5.centos perl-MailTools-1.77-1.el5.centos [root@localhost ~]# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/ [root@localhost ~]# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/ [root@localhost ~]# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/ [root@localhost ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d/ 二、配置ldirectord checktimeout=3 checkinterval=1 这个值指定ldirectord在两个检查之间的间隔时间 fallback=127.0.0.1:80 autoreload=yes #是否自动重载 logfile="/var/log/ldirectord.log" #logfile="local0" emailalert="haibo@myhexin.com" emailalertfreq=3600 emailalertstatus=all quiescent=no # Sample for an http virtual service virtual=192.168.15.200:80 real=192.168.15.101:80 gate real=192.168.15.103:80 gate # real=192.168.15.200:80 gate # fallback=127.0.0.1:80 gate # service=http # request="index.html" # receive="Test Page" # virtualhost=some.domain.com.au scheduler=wrr # persistent=600 #netmask=255.255.255.255 protocol=tcp checktype=connect 检测端口是否可达 checkport=80 # request="index.html" # receive="Test Page" # virtualhost=www.x.y.z --ldirectord配置详解 三、 ha.cf配置 [root@LVS-master ~]# vi /etc/ha.d/ha.cf debugfile /var/log/ha-debug logfile /var/log/ha-log #定义日志文件的位置,如果两个都没有定义,默认会写入/var/log/message logfacility local0 keepalive 2 #指定心跳间隔时间即每隔2秒钟在eth0上发送一次广播 deadtime 30 #指定若备用节点在30内没有收到主节点的心跳信号,则立即接管主节点的服务资源 warntime 10 #指定心跳延迟的时间为10秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务 initdead 120 #在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍 udpport 694 #开放防火墙694端口 baud 19200 #设置串行通信的波特率 bcast eth0 # Linux #采用udp广播来通知心跳 #serial /dev/ttyS0 使用串口heartbeat - 如果你不使用串口heartbeat, 你必须选择其它的介质,比如以太网bcast (ethernet) heartbeat。如果你使用其它串口heartbeat,修改/dev/ttyS0 为其它的串口设备 #采用udp多播来通知心跳,建议主副使用 ucast eth0 192.168.2.121 #单播eth0的IP,此处从为从的IP auto_failback on #主节点恢复后,是否自动切回,主可设置恢复后切回,从设置为off watchdog /dev/watchdog #看门狗,如果本节点在超过一分钟后还没有发出心跳,那么本节点自动重启 #可选项:watchdog功能提供了一种方法能让系统在出现故障无法提供"heartbeat"时,仍然具有最小的功能,能在出现故障1分钟后重启该机器。这个功能可以帮助服务器在确实停止心跳后能够重新恢复心跳。如果你想使用该特性,你必须在内核中装入"softdog" 内核模块用来生成实际的设备文件。想要达到这个目的, 首先输入 "insmod softdog" 加载模块。然后,输入"grep misc /proc/devices" 注意显示的数字 (should be 10). 然后, 输入"cat /proc/misc | grep watchdog" 注意输出显示出的数字(should be 130)。现在你可以生成设备文件使用如下命令:"mknod /dev/watchdog c 10 130" 。 node LVS-master node LVS-slave #与uname -n保持一致,第一个为主节点,第二个为副节点 ping_group group1 192.168.2.121 192.168.2.127 respawn root /usr/lib/heartbeat/ipfail #ping和respawn用来测试网络连接,ping后面接外网网关或者其他可靠的设备的IP,如果这个IP一旦ping不通了(意味该机的外网down了),则利用respawn调用/usr/lib/heartbeat/ipfail来主动进行切换。 apiauth ipfail gid=root uid=root 启用ipfail进程的用户是root 四、配置验证文件 .vi /etc/ha.d/authkeys auth 2 #1 crc 2 sha1 10jqka #3 md5 Hello! 五、Ipvs配置#!/bin/shVIP=192.168.15.200 RIP1=192.168.15.101 RIP2=192.168.15.103 . /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS " # # set the Virtual IP Address /sbin/ifconfig eth1:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev eth1:0 /sbin/ipvsadm -C /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g ;; stop) echo "close LVS Director" /sbin/ipvsadm -C /sbin/ifconfig eth1:0 down ;; *) echo "Usage: $0 {start|stop}" exit 1 esac (-s rr 是使用了轮叫算法,可以自行选择相应的算法,更改rr就可以了。 ipvsadm -h查看帮助。-g 是使用lvs工作DR直接路由模式,也可自行修改 lvs 状态查看 操作步骤详细到命令行级别 查看LVS的连接情况: ipvsadm -L -n 查看LVS的吞吐量情况: ipvsadm -L -n -rate 查看LVS的统计信息: ipvsadm -L -n –stat 实时查看LVS连接状态变化: watch ipvsadm –ln --ipvsadm命令参考 六、realserver配置 vi /etc/init.d/real.sh #!/bin/bash #description : start realserver VIP=192.168.15.200 /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of REALServer" /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p ;; stop) /sbin/ifconfig lo:0 down echo "close LVS Directorserver" echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce ;; *) echo "Usage: $0 {start|stop}" exit 1 esac 此realserver为开起相关路由功能,修改它的执行权限,然后用./real.sh start来启动 注:也可不编写如上realserver直接配置,然后保存即可!(如下) echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl –p(保存配置) 七、directord与VIP结合至heartbeat vi /etc/ha.d/haresources LVS-master ipvs ldirectord Herartbeat默认寻找程序的路径为 :/etc/rc.d/init.d/ 和/etc/ha.d 八、 slave机器配置 把主调度器121上的配置文件及脚本拷贝至从127机器上,并开放694端口 更改ha.cf配置文件 ucast eth0 192.168.2.127 #eth0的IP,此处从为从的IP auto_failback off master和slave启动:service heartbeat start 九、参考资料 http://faovic.javaeye.com/blog/147610 http://gsliuyang.blog.51cto.com/286500/223912 http://weijia.blog.51cto.com/616222/119853 (责任编辑:IT) |