IPVS-DR+heartbeat+ldirectord实现高可用负载均衡集群

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介:
IPVS-DR+heartbeat+ldirectord高可用负载均衡集群方案前端的负载调度器采用双机热备方式,两台服务器均安装双网卡,其中一个网卡用来连接集群系统,另一个作为冗余心跳线路连接双机。主负载调度器和备份负载调度器同时安装heartbeat及ldirectord,并同时运行heartbeat,相互监视“健康”状况。一旦备份负载调度器监测到主负载调度器发生故障,备份负载调度器上的heartbeat通过运行脚本来启动备份调度器上的LVS服务和ldirectord服务,完成虚拟IP故障转移。一旦主负载调度器恢复正常工作,主负载调度器重新恢复对集群的资源管理。heartbeat的核心功能包括两个部分:心跳监测和资源接管,工作原理是心跳监测通过网络链路或串口进行,主/备服务器之间相互发送报文告诉自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失败,同时启动资源接管模块接管运行在对方上的资源。ldirectord工作原理是:ldirectord需要在真实服务器内启用web服务,然后ldirectord通过循环检查web服务是否存活。如果真实服务器不存活,则使用ipvsadm命令将其权重设为0,以确保客户的连接不会导向失效的真实服务器;如果真实服务器修复上线,则又将其的权重设为1以使其能够为客户端连接提供服务。
系统平台:Redhat 5.4
网络结构如下:
IP地址规划如下:
需要安装的软件包:
1.heartbeat_2.1.4.tar.gz
2.libnet-1.1.2.1.tar.gz
3.MailTools-2.07.tar.gz
4.perl-libwww-perl-5.805-1.1.1.noarch.rpm
5.ipvsadm-1.24-10.i386.rpm
一.lvs-master上的配置
1.修改/etc/hosts文件,增加以下两行内容:
[root@localhost~]# vi /etc/hosts
200.10.1.1 lvs-master
200.10.1.2 lvs-backup
2.修改主机名,编辑/etc/sysconfig/network文件:
HOSTNAME=lvs-master
3.配置eth0和eth1网卡IP(略)
4.设置VIP脚本:
[root@lvs-master~] # vi vip.sh
#!/bin/bash 
VIP=200.10.1.10 
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up 
/sbin/route add -host $VIP dev eth0:0
5.给vip脚本设置可执行权限:
[root@lvs-master~] # chmod a+x vip.sh
运行vip脚本并设置为开机启动:
[root@lvs-master~] # ./vip.sh
[root@lvs-master~] # echo “/root/vip.sh”>> /etc/rc.local
6.安装perl-libwww-perl:
[root@lvs-master~]# rpm-ivh perl-libwww-perl-5.805-1.1.1.noarch.rpm
7.安装ipvsadm:
[root@lvs-master~]# rpm –ivh ipvsadm-1.24-10.i386.rpm
8.编译安装libnet:
[root@lvs-master~]# tar zxf libnet-1.1.2.1.tar.gz
[root@lvs-master~]# cd libnet
[root@lvs-master libnet~]# ./configure
[root@lvs-master libnet~]# make && make install
9.编译安装MailTools:
[root@lvs-master~]# tar zxf MailTools-2.07.tar.gz
[root@lvs-master~]# cd MailTools-2.07
[root@lvs-master MailTools-2.07~]# perl Makefile.PL
[root@lvs-master MailTools-2.07~]# make && make install
10.编译安装Heartbeat:
[root@lvs-master~]# groupadd haclient //添加heartbeat运行需要的haclient组
[root@lvs-master~]# useradd hacluster –g haclient –s /sbin/nologin //添加heartbeat运行需要的hacluster用户
[root@lvs-master~]# tar zxf heartbeat_2.1.4.tar.gz
[root@lvs-master heartbeat-2.1.4~]# ./ConfigureMe
[root@lvs-master heartbeat-2.1.4~]# ./ConfigureMe configure
[root@lvs-master heartbeat-2.1.4~]# ./ConfigureMe make
[root@lvs-master heartbeat-2.1.4~]# ./ConfigureMe install
将heartbeat设置成为开机自启动
[root@lvs-master heartbeat-2.1.4~]# chkconfig –add heartbeat
[root@lvs-master heartbeat-2.1.4~]# chkconfig heartbeat on
11.配置ldirectord,复制ldirectord的配置文件至/etc/ha.d目录下:
[root@lvs-master heartbeat-2.1.4~]# cp ./ldirectord/ldirectord.cf /etc/ha.d/
修改ldirectord.cf文件:
checktimeout=3
checkinterval=1
autoreload=yes
logfile=”/var/log/ldirectord.log”
quiescent=no
virtual=200.10.1.10:80
              real=200.10.1.3:80 gate
              real=200.10.1.4:80 gate
              service=http
              request=”index.html”
              receive=”Test Page”
              scheduler=rr
              persistent=600
              protocol=tcp
              checktype=negotiate
              checkport=80
12.配置heartbeat:
heartbeat的配置文件有三个,分别是ha.cf、haresources、authkeys,需要复制样本文件到/etc/ha.d目录下面:
[root@lvs-master heartbeat-2.1.4~]# cp ./doc/ha.cf ./doc/haresources ./doc/authkeys /etc/ha.d/
修改ha.cf文件,将下列配置项前面的“#”去掉和添加相应配置:
[root@lvs-master heartbeat-2.1.4~]# vi /etc/ha.d/ha.cf
debugfile /var/log/ha-debug //调试日志文件
logfile /var/log/ha-log //系统运行日志文件
logfacility local0 //日志等级
keepalive 2 //心跳频率
deadtime 30 //节点死亡时间阀值
warntime 10 //发出警告时间阀值
initdead 120 //指定heartbeat守护进程启动后等待120秒再启动资源
udpport 694 //指定心跳信息传递使用的udp端口
bcast eth1 //在eth1上使用广播方式发送心跳
auto_failback on //允许主节点重启成功后拿回资源
node lvs-master //主节点名称,与uname -n保持一致
node lvs-backup //备份节点名称
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
修改haresources文件,定义heartbeat启动,设定VIP,启动ldirectord服务:
[root@lvs-master heartbeat-2.1.4~]# vi /etc/ha.d/haresources
lvs-master 200.10.1.10/32/eth0/200.10.1.255 ldirectord::ldirectord.cf LVSSynsDaemonSwap::master
[root@lvs-master heartbeat-2.1.4~]# service ldirectord start
修改authkeys文件,指定使用认证的方式:
[root@lvs-master heartbeat-2.1.4~]# vi /etc/ha.d/authkeys
auth 1
1 crc
[root@lvs-master heartbeat-2.1.4~]# chmod 600 /etc/ha.d/authkeys //authkeys文件权限必须为600
13.配置并启动ipvsadm:
[root@lvs-master~] # ipvsadm –A –t 200.10.1.10:80 –s rr –p 600
[root@lvs-master~] # ipvsadm –a –t 200.10.1.10:80 –r 200.10.1.3:80 –g -w 1
[root@lvs-master~] # ipvsadm –a –t 200.10.1.10:80 –r 200.10.1.4:80 –g -w 1
[root@lvs-master~] # ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs-master~] # service ipvsadm start
[root@lvs-master~] # service heartbeat start
二.lvs-backup上的配置
1.eth0和eth1网卡IP配置(略)
2.主机名和VIP脚本设定(同lvs-master一致)
3.需要安装的软件同lvs-master一致,ipvsadm配置一致。
4.heartbeat和ldirectord配置文件也同lvs-master一致,可以直从lvs-master上复制过去,命令如下:
[root@lvs-master ha.d~] # scp ./ldirectord.cf ha.cf authkeys haresources  root@200.10.1.2:/etc/ha.d/
三.Realserver1(Web)上的配置
添加以下脚本:
[root@localhost~] # vi lvs.sh
#!/bin/bash 
VIP="200.10.1.10" 
/sbin/ifconfig eth0 200.10.1.3/24 
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up 
/sbin/route add -host $VIP dev lo:0 
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
给脚本增加可执行权限,然后启动并设置为开机启动:
[root@localhost~] # chmod a+x lvs.sh
[root@localhost~] # ./lvs.sh
[root@localhost~] # echo “/root/lvs.sh”>> /etc/rc.local
创建测试页面并启动web服务:
[root@localhost~] # echo “This is Realserver1”> /var/www/html/index.html
[root@localhost~] # service httpd start
四.Realserver2(Web)上的配置
添加以下脚本:
[root@localhost~] # vi lvs.sh
#!/bin/bash 
VIP="200.10.1.10" 
/sbin/ifconfig eth0 200.10.1.4/24 
/sbin/ifconfig lo:0 $VIP braodcast $VIP netmask 255.255.255.255 up 
/sbin/route add -host $VIP dev lo:0 
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
给脚本增加可执行权限,然后启动并设置为开机启动:
[root@localhost~] # chmod a+x lvs.sh
[root@localhost~] # ./lvs.sh
[root@localhost~] # echo “/root/lvs.sh”>> /etc/rc.local
创建测试页面并启动web服务:
[root@localhost~] # echo “This is Realserver2”> /var/www/html/index.html
[root@localhost~] # service httpd start
五.测试及验证
分别在两台PC上打开浏览器,输入“http://200.10.1.10”,如果看到的是不同的页面,说明LVS配置成功!
 
 
IPVS-DR+heartbeat+ldirectord配置成功!









本文转自 kk5234 51CTO博客,原文链接:http://blog.51cto.com/kk5234/562621,如需转载请自行联系原作者
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
3天前
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
26 9
|
5月前
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
160 2
|
5月前
|
负载均衡 算法 关系型数据库
MySQL集群如何实现负载均衡?
【8月更文挑战第16天】MySQL集群如何实现负载均衡?
307 6
|
5月前
|
负载均衡 网络协议
使用LVS搭建集群实现负载均衡(二)安装使用
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡(二)安装使用
88 5
|
5月前
|
存储 负载均衡 算法
使用LVS搭建集群实现负载均衡(一)
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡
205 5
|
6月前
|
负载均衡 安全 Cloud Native
云上负载均衡:构建高可用、高性能的网络应用架构
与云原生技术深度融合:随着云原生技术的普及和发展未来的云上负载均衡将更加紧密地与云原生技术相结合。例如与Kubernetes等容器编排平台集成实现自动化的服务发现和路由管理;与Serverless架构结合提供无缝的流量接入和请求处理能力。 安全性能提升:面对日益严峻的网络安全威胁云上负载均衡将更加注重安全性能的提升。通过引入加密传输、访问控制、DDoS防护等安全措施确保网络流量的安全性和隐私性;同时还将建立完善的安全监控和应急响应机制以应对各种安全事件和突发事件。 支持多协议和多场景:未来的云上负载均衡将支持更多种类的网络协议和应用场景以满足不同用户和业务的需求。例如支持HTTP/2、
297 0
|
1月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
63 3
|
7月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
139 2
|
6月前
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
116 1
|
6月前
|
运维 负载均衡 算法
SLB与NGINX的异同是什么
SLB与NGINX的异同是什么
577 2