Heartbeat + ld 实现高可用负载均衡器

实验环境: rhel6.3    iptables && selinux disabled


LB:   192.168.0.2
BACKUP:   192.168.0.3
RS1: 182.168.0.4
RS2:192.168.0.5
vip:192.168.0.100

192.168.0.2 && 192.168.0.3
软件包的安装与配置

#yum localinstall -y heartbeat-3.0.4-1.el6.x86_64.rpm \
heartbeat-libs-3.0.4-1.el6.x86_64.rpm \
heartbeat-devel-3.0.4-1.el6.x86_64.rpm \
ldirectord-3.9.2-1.2.x86_64.rpm \
perl-IO-Socket-INET6

复制所需要的配置文件到配置文件目录

#cd /usr/share/doc/heartbeat
#cp authkeys ha.cf haresource /etc/ha.d/

主配置文件(/etc/ha.d/ha.cf):
debugfile /var/log/ha-debug                    ##调试日志文件文件,取默认值
logfile /var/log/ha-log      ##系统运行日志文件,取默认值
logfacility local0        ##日志等级,取默认值
keepalive 2          ##心跳频率,自己设定。1:表示 1 秒;200ms:表示 200 毫秒
deadtime 30    ##节点死亡时间阀值,就是从节点在过了 30 后还没有收到心跳就认为主节点死亡,自己设定
warntime 10     ##发出警告时间,自己设定
initdead 120       ##守护进程首次启动后应该等待 120 秒后再启动主服务器上的资源
udpport 694        ##心跳信息传递的 udp 端口,使用端口 694 进行 bcast 和 ucast 通信,取默认值
#baud 19200         ##串口波特率,与 serial 一起使用。
#serial /dev/ttyS0       ## 采用串口来传递心跳信息。
bcast eth1           ##采用 udp 广播播来通知心跳
#ucast eth1 10.0.0.3           ##采用网卡 eth1 的 udp 单播来通知心跳,eth1 的 IP
#mcast eth0 225.0.0.1 694 1 0           ## 采用 udp 多播播来通知心跳
auto_failback on                   ##当主节点恢复后,是否自动切回
#stonith baytech /etc/ha.d/conf/stonith.baytech
stonith                    ##用来保证共享存储环境中的数据完整性
watchdog /dev/watchdog
watchdog 能让系统在出现故障 1 分钟后重启该机器,这个功能可以帮助服务器在确实停止心
跳后能够重新恢复心跳。 如果使用该特性,修改系统中/etc/modprobe.conf, 添加如下行
options softdog nowayout=0    ##这样在系统启动的时候,在内核中装入"softdog"内核模块,用来生成实际的设备文件
/dev/watchdog
node server2.example.com       ##主节点名称,与 uname –n 保持一致。排在第一的默认为主节点,所以不要搞措顺序
node server3.example.com        ##副节点名称,与 uname –n 保持一致
ping 192.168.0.254
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
##默认 heartbeat 并不检测除本身之外的其他任何服务,也不检测网络状况。
所以当网络中断时,并不会进行 Load Balancer 和 Backup 之间的切换。
可以通过 ipfail 插件,设置'ping nodes'来解决这一问题,但不能使用一个集群节点作为
ping 的节点。


资源文件(/etc/ha.d/haresources):

server2.example.com IPaddr::192.168.0.100/24/eth0 httpd ldirectord

##这个文件中定义了实现集群所需的各个软件的启动脚本,这些脚本必须放在/etc/init.d 或者
/etc/ha.d/resource.d 目录里 IPaddr 的作用是启动 Virutal IP,它是 HeartBeart 自带的一个
脚本;ldirectord 的作用是启动 ldirectord 监控程序,它会使 ldirectord.cf 中定义的 lvs 生效,
并监听其健康状;httpd 是 apache 服务的启动脚本

认证文件(/etc/ha.d/authkeys),文件的权限必须是 600(否则会出错):
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!

分别在主备上启动heartbeat:

#/etc/init.d/heartbeat start
#tail -f /var/log/ha-log   #查看日志,是否出现了eth0:0接口,或者使用ifconfig查看是否有eth0:0出现。
                    #若停止 server2 上的 heartbeat 服务,则 servcer3 会接管,并产生一个 eth0:0 接口.

配置(/etc/ha.d/ldirectord.cf):

#rpm -qpl ldirectord-3.9.2-1.2.x86_64.rpm
#cp  /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/
#/etc/init.d/ldirectord start

查看rs的连接状态

#ipvsadm -ln




分别在 realserver 上执行以下命令:
配置 arp 机制:

#vi /etc/sysctl.conf 
   net.ipv4.conf.all.arp_ignore = 1 
   net.ipv4.conf.lo.arp_ignore = 1 
   net.ipv4.conf.all.arp_announce = 2 
   net.ipv4.conf.lo.arp_announce = 2 
#sysctl -p 
#ifconfig eth0:0 192.168.0.100 netmask 255.255.255.255 up 
#ip addr add 192.168.0.100 dev eth0

在使用 LVS 中的 DR 与 IP Tunnel 的时候,会需要有一块网络卡要设定两个 IP 的情形,但是
Linux 在 2.2.14 之后,就将 eth0:1 的-NOARP 这个 FLAG 关闭。也 就是说在 kernel 2.2.14
以后,eth0:1 就视为 eth0 的别名,任何对 eth0:1 的设定也同样作用在 eth0,换句话说,
我对 eth0:1 下-NOARP,同样 也会对 eth0 有作用,这样会使得整张网络卡收不到封包。
在 直接路由、 隧道模式下,因为我所有的机器都放在同一个网段,当该网段的 Router 接收
IP
到客户端(Client)对虚拟 IP(Virtual IP)的 TCP connection 要求时,会先在网段中利用 Arp
request 询问谁有 VIP 的地址,而包含 Director 与 RealServers 上所有的 interface(不管
Primary 还是 Subinterface),只要他有那个 ip,都会发送 arp reply 回去,造成网段内所
有拥有 Virtual IP 的 interface 都会 reply 给 Router,最后结果就是看谁的速度快,Router
就将该封包送给谁,如此会造成 LVS 的 Server 并无 法发挥其效果,
在每个 RealServer 的中添加监控页:

#echo `hostname` >> /var/www/html/index.html 
#/etc/init.d/httpd start

测试:
访问 http://192.168.0.100,看到页面在两个 realserver 上切换表示成功!
你也可以通过 ipvsadm -Lnc 查看详细连接情况!













































































































转载于:https://my.oschina.net/MrYx3en/blog/209732

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值