LVS+Heartbeat 配置
LVS+Heartbeat 配置|字号 订阅
LVS+Heartbeat 安装
http://xfshean.blog.163.com/blog/static/602065662012729111557850/
4、实践环境
DR1:192.168.1.80 负载服务器-主
DR2:192.168.1.81 负载服务器-备R1: 192.168.1.82 WEB1
R2: 192.168.1.83 WEB2
VIP:192.168.1.85 虚拟IP
1、准备工作:DR1和DR1的/etc/hosts内加入以下内容:以便解析
vi /etc/hosts
192.168.1.80 master.30920.cn 192.168.1.81 backup.30920.cn
2、修改# vi/etc/ha.d/ha.cf 配置文件(主、备一样)
#debugfile /var/log/ha-debug logfile /var/log/ha-log #日志存放位置#crm yes #是否开启集群资源管理功能logfacility local0 #记录日志等级keepalive 2 #心跳的时间间隔,默认时间单位为秒deadtime 5 #超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。warntime 3 #超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中,但此时不会切换initdead 10 #在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。udpport694 #设置广播通信使用的端口,694为默认使用的端口号。bcast eth0 # Linux指定心跳使用以太网广播方式,并在eth0上进行广播。"#"后的要完全删除,要不然要出错。#ucast eth0 192.168.1.81 # 采用网卡eth0的UDP多播来组织心跳,后面跟的IP地址应为双机中对方的IP地址auto_failback on #在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备用节点。off主节点恢复后变为备用节点,备用为主节点。#stonith_host * baytech 10.0.0.3 mylogin mysecretpassword #stonith_host ken3rps10 /dev/ttyS1 kathy 0#stonith_host kathy rps10 /dev/ttyS1 ken3 0#watchdog /dev/watchdog node backup.30920.cn #主机节点名,可通过 uname -n 查看,默认为主节点node master.30920.cn #备用机节点名,默认为次节点,要注意顺序哟#ping 192.168.1.1 # 选择ping节点,选择固定路由作为节点。ping节点仅用来测试网络连接。ping_group group1 192.168.1.80 192.168.1.55 #并不是双机中的两个节点,仅仅用来测试网络的连通性,都不能过主动切换respawn root /usr/lib/heartbeat/ipfail#选配项。其中rootr表示启动ipfail进程的身份。apiauth ipfail gid=root uid=root
3、修改资源文件(# vi /etc/ha.d/haresources)(主、备一样) 注意:DR1和DR2的资源文件要完全一致
master.30920.cn 192.168.1.85ldirectord#设置master.30920.cn为主节点,集群VIP为192.168.1.85,heartbeat托管的服务为ldirectord.
4、配置heartbeat的认证文件(# vi /etc/ha.d/authkeys )(主、备一样)
auth 1 #auth后面指定的数字,下一行必须作为关键字再次出现。1 crc#2 sha1 HI!#3 md5 Hello!
#最后保证文件的权限为 600
#chmod 600 /etc/ha.d/authkeys
5、修改 # vi /etc/ha.d/ldirectord.cf (主、备一样)他的作用就是监控集群中有故障时,从集群中T出,恢复了又加入服务。他通过调用ipvsadm命令创建LVS路由表信息。
# GlobalDirectives checktimeout=10 # 判定realserver出错时间 checkinterval=10 # 指定ldirectord在两次检查之间的间隔时间 fallback=127.0.0.1:80 # 当所有RS机器不能访问的时候WEB重写向地址 autoreload=yes # 是否自动重载配置文件 logfile="/var/log/ldirectord.log"# 设定Ldirectord日志输出文件路径 #logfile="local0" #emailalert="root@30920.cn" #emailalertfreq=3600 #emailalertstatus=all quiescent=yes # 选择为no是,如果一个节点在checktimeout设置的时间周期内没响应,将会被T除,中断现有客户端的连接。 yes新的连接不能到达。
# Samplefor an http virtual service virtual=192.168.1.85:80 # 指定虚拟IP,注意在virtual这行后面的行必须缩进4个空格或以一个tab字符进行标记
real=192.168.1.104:80 gate #gate 为DR模式,ipip表示TUNL模式,masq表示NAT模式
real=192.168.1.105:80 gate
#fallback=127.0.0.1:80 gate
#service=http #指定服务类型,这里对HTTP进行负载均衡
#request="index.html" #请求监控地址
#receive="Test Page" # 指定请求和应答字符串,也就是index.html的内容
#virtualhost=some.domain.com.au#虚拟服务器的名称可任意指定
scheduler=wrr #指定调度算法,这里是wrr(加权轮叫调度算法)
#netmask=255.255.255.255
protocol=tcp
checktype=connect
checkport=80
6、在RS上加入如下脚本并运行(两台真实的RS都要加入并开机启动)# vi /etc/init.d/lvs
#!/bin/bash## lvsdrrs init script to hide loopback interfaces on LVS-DR# Real servers. Modify this script to suit# your needs. You at least need to set the correct VIP address(es).## Script to start LVS DR real server.## chkconfig: 2345 20 80# description: LVS DR real server## You must set the VIP address to use here:VIP=10.0.0.20/etc/rc.d/init.d/functionscase "$1" instart) # Start LVS-DR real server on this machine. 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 /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up;;stop) # Stop LVS-DR real server loopback device(s). /sbin/ifconfig lo:0 down;;status) # Status of LVS-DR real server. islothere=`/sbin/ifconfig lo:0 | grep $VIP` isrothere=`netstat -rn | grep "lo" | grep $VIP` if [ ! "$islothere" -o ! "$isrothere" ];then # Either the route or the lo:0 device # not found. echo "LVS-DR real server Stopped." else echo "LVS-DR Running." fi;;*) # Invalid entry. echo "$0: Usage: $0 {start|status|stop}" exit 1;;esac
# /etc/init.d/lvs start
7、启动相关
在RS1\RS2上启动
/etc/init.d/lvs start
在DR1/DR2上启动
/etc/init.d/heartbeat start
然后就可以测试了
看到有的网站上写的需要给主备heartbeat写脚本,其实是不需要的。--------------------------------------------HA主备切换报错,无法切换ERROR: Could not send gratuitous arps. rc=127
解决办法:ldd /usr/lib/heartbeat/send_arp,看看读取的libnet.so.0属于哪个路径,如果没有的话,弄个软连接过去吧。
libnet.so.1 => not found
ln -s /usr/local/lib/libnet.so.1 /lib
页:
[1]