一、 网络环境
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.56.199
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 enp0s8:0 192.168.56.199 broadcast 192.168.56.199 netmask 255.255.255.255 up
/sbin/route add -host 192.168.56.199 dev enp0s8:0
/sbin/ipvsadm -C
/sbin/ipvsadm -A -t 192.168.56.199:80 -s rr
/sbin/ipvsadm -a -t 192.168.56.199:80 -r 192.168.56.101:80 -g
/sbin/ipvsadm -a -t 192.168.56.199:80 -r 192.168.56.106: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
LVS ipvsadm+heartbeat+ldirecrtord(DR)
http://88fly.blog.163.com/blog/s ... 6/?suggestedreading
|