LVS ipvsadm+heartbeat+ldirecrtord(DR)
时间:2015-12-02 21:40 来源:linux.it.net.cn 作者:IT
一、 网络环境
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 heart
heartbeat-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 为其它的串口设备
mcast eth0 225.0.0.1 694 1 0
#采用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/sh
VIP=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)
一、 网络环境 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) |