基于lvs-DR模型实现Director高可用
2012-11-29 22:10
537 查看
对Director的高可用分为两部分完成:
一:配置好LVS-DR模型的负载均衡
二:配置一台Director对已有Director做高可用
做如下规划:
有两台real server;分别为rs1;rs2;主用调度器为dr1;做高可用的调度器为dr2
确保所有主机关闭selinux;
setenforce 0
一:配置DR模型的lvs负载均衡
1、配置rs1:
添加lo:0使客户端访问VIP,让VIP来响应客户端:
修改两个内核参数,用于隐藏rs1的RIP:
安装httpd:
建立测试页面:
启动httpd服务,测试页面
2、配置rs2
3、dr1作为主用调度器
开启内核转发功能:
4、安装ipvsadm:
添加集群及服务:
在本地浏览器中测试负载均衡结果
二:配置一台Director对已有Director做高可用
dr2对dr1高可用;除ip外其资源配置与dr1一致:
不要让ipvsadm开机启动:
chkconfig ipvsadm off
进行高可用前的主要步骤:
1、DNS域名解析
用uname -n的结果来识别对方的名字
2、设定两个节点可以基于密钥进行ssh通信,
3、两个节点时间同步
4、在两个主机上安装以下rpm包:
查看配置文件:
修改authkeys:
修改ha.cf
5、安装配置ldirectord
三、运行gui界面:
1、添加资源
dr1运行,dr2为standby
dr2运行,dr1为standby
再添加一个VIP资源
使用ip addr show查看:
将Director和VIP进行排序约束:
四、测试结果:
1、dr1为active,dr2为standby:
说明资源约束生效,
访问页面时根据设定好的调度算法变换,说明负载均衡正常
2、dr2为active,dr2为standby:
说明资源切换成功,高可用有效,
通过访问页面,负载均衡也正常工作
3、把rs1的httpd服务停止
service httpd stop
访问页面时只显示rs2的页面结果,
说明Director通过健康状态监控发现rs1故障,把请求只发送到rs2上
重新启动rs1的httpd服务后,负载均衡恢复正常,
停掉rs2的httpd服务时,反之亦然
一:配置好LVS-DR模型的负载均衡
二:配置一台Director对已有Director做高可用
做如下规划:
有两台real server;分别为rs1;rs2;主用调度器为dr1;做高可用的调度器为dr2
主机 IP类型 IP地址 网络连接 rs1 RIP172.16.14.10 桥接 lo:0 172.16.14.2 rs2 RIP172.16.14.11 桥接 lo:0 172.16.14.2 dr1 DIP 172.16.14.100 桥接 VIP eth0:0 172.16.14.2 dr2 VIP 172.16.14.99 桥接 DIP eth0:0 172.16.14.2 CIP 192.168.0.243
确保所有主机关闭selinux;
setenforce 0
一:配置DR模型的lvs负载均衡
1、配置rs1:
ifconfig eth0 172.16.14.10/16
添加lo:0使客户端访问VIP,让VIP来响应客户端:
ifconfig lo:0 172.16.14.2 broadcast 172.16.14.2 netmask 255.255.255.255 route add -host 172.16.14.2 dev lo:0
修改两个内核参数,用于隐藏rs1的RIP:
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
安装httpd:
yum -y insatll httpd
建立测试页面:
vim /var/www/html/index.html 添加:<h1>real server1</h1>
启动httpd服务,测试页面
service httpd start
2、配置rs2
ifconfig eth0 172.16.14.11/16
添加lo:0使客户端访问VIP,让VIP来响应客户端:
ifconfig lo:0 172.16.14.2 broadcast 172.16.14.2 netmask 255.255.255.255 route add -host 172.16.14.2 dev lo:0隐藏rs2的RIP:
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
安装httpd
yum -y insatll httpd
为了测试结果的明显,将rs2的测试页面为:
vim /var/www/html/index.html
添加:<h1>real server2</h1>
启动服务,测试页面
3、dr1作为主用调度器
ifconfig eth0 172.16.14.100/16
ifconfig lo:0 172.16.14.2 broadcast 172.16.14.2 netmask 255.255.255.255 route add -host 172.16.14.2 dev lo:0
开启内核转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
4、安装ipvsadm:
yum -y insatll ipvsadm
添加集群及服务:
ipvsadm -A -t 172.16.14.2:80 -s rr ipvsadm -a -t 172.16.14.2:80 -r 172.16.14.10 -g ipvsadm -a -t 172.16.14.2:80 -r 172.16.14.11 -g ipvsadm -Ln
在本地浏览器中测试负载均衡结果
二:配置一台Director对已有Director做高可用
dr2对dr1高可用;除ip外其资源配置与dr1一致:
ifconfig eth0 172.16.14.99/16
ifconfig lo:0 172.16.14.2 broadcast 172.16.14.2 netmask 255.255.255.255 route add -host 172.16.14.2 dev lo:0开启内核转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward安装ipvsadm:
yum -y insatll ipvsadmipvsadm -C
添加规则:
ipvsadm -A -t 172.16.14.2:80 -s rr ipvsadm -a -t 172.16.14.2:80 -r 172.16.14.10 -g ipvsadm -a -t 172.16.14.2:80 -r 172.16.14.11 -g ipvsadm -Ln
不要让ipvsadm开机启动:
chkconfig ipvsadm off
进行高可用前的主要步骤:
1、DNS域名解析
用uname -n的结果来识别对方的名字
使dr1,dr2的uname -n分别为: dr1.magedu.com dr2.magedu.com hostname dr1.magedu.com vim /etc/sysconfig/network HOSTNAME=dr1.magedu.com hostname dr2.magedu.com vim /etc/sysconfig/network HOSTNAME=dr2.magedu.com vim /etc/hosts添加: 172.16.14.10 dr1.magedu.com dr1 172.16.14.11 dr2.magedu.com dr2
2、设定两个节点可以基于密钥进行ssh通信,
dr1: # ssh-keygen -t rsa # ssh-copy-id -i ~/.ssh/id_rsa.pub root@dr2 dr2 # ssh-keygen -t rsa # ssh-copy-id -i ~/.ssh/id_rsa.pub root@dr1
3、两个节点时间同步
# date 112322022012;ssh dr2 'date 112322022012'
4、在两个主机上安装以下rpm包:
yum -y --nogpgcheck localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm
查看配置文件:
cd /usr/share/doc/heartbeat-2.1.4/ cp ha.cf haresources authkeys /etc/ha.d/ cd /etc/ha.d/ ##ha.cf 主配置文件 ##haresources 资源配置文件 ##authkeys 认证文件
修改authkeys:
把authkeys权限改为600 chmod 600 authkeys vim authkeys auth 3 ##启用加密方式3 3 md5 Hello! 生成一串密码,把md5后的hello!替换掉: dd if=/dev/urandom count=1 bs=512 |md5sum 5bd1ebacb939d34261ff2b2e6730a8d9 - ##用该行替换Hello!
修改ha.cf
vim ha.cf ##启用如下项: keepalive 2 ##两个心跳信息的间隔时间 deadtime 30 ##多长认为主机dead warntime 6 ##在发出最后一个心跳信息的警告时间 initdead 120 ##开机时等待时间;用于增强容错能力 udpport 694 ##默认使用的端口(单播) mcast eth0 224.2.2.14 694 1 0 ##组播地址 auto_failback on ##当主节点重新上线后,是否回到主节点 crm on ##启用crm node dr1.magedu.com ##添加两个节点信息 node dr2.magedu.com ping 172.16.0.1 ##两个节点集群时的仲裁设备 compression bz2 ##压缩类型 compression_threshod 2 ##大于多少KB才压缩
5、安装配置ldirectord
yum -y --nogpgcheck localinstall perl-MailTools-1.77 heartbeat-ldirectord-2.1.4.9 查看信息: rpm -ql heartbeat-ldirectord chkconfig --list|grep ldirectord 显示3,5级别为on,需要关闭 chkconfig ldirectord off cd /usr/share/doc/heartbeat-ldirector-2.1.4/ cp ldirectord.cf /etc/ha.d/ vim ldirectord.cf 做如下修改: checktimeout=3 ##检测时间 checkinterval=1 ##平均检测间隔时间 logfile="/var/log/ldirectord.log" ##启用日志 virtual=172.16.14.2:80 ##定义虚拟主机服务 VIP的地址 real=172.16.14.10:80 gate ##节点IP;gate表示DR模型 real=172.16.14.11:80 gate service=http ##服务类型 request=".health.html" ##健康检测页面;必须在节点上 receive="OK" ##检测页面内容 scheduler=rr #persistent=600 #netmask=255.255.255.255 protocol=tcp ##协议 checktype=negotiate ##检测类型 checkport=80 ##检测端口 然后启动ldirectord测试 service ldirector start 将上述操作同步到dr2上: /usr/lib/heartbeat/ha_propagete 在两个节点主机上建立测试页面: cd /var/www/htdocs vim .health.html 写入:OK
三、运行gui界面:
hb_gui ##打开gui界面 为hacluster设置一个密码
1、添加资源
dr1运行,dr2为standby
dr2运行,dr1为standby
再添加一个VIP资源
使用ip addr show查看:
将Director和VIP进行排序约束:
四、测试结果:
1、dr1为active,dr2为standby:
说明资源约束生效,
访问页面时根据设定好的调度算法变换,说明负载均衡正常
2、dr2为active,dr2为standby:
说明资源切换成功,高可用有效,
通过访问页面,负载均衡也正常工作
3、把rs1的httpd服务停止
service httpd stop
访问页面时只显示rs2的页面结果,
说明Director通过健康状态监控发现rs1故障,把请求只发送到rs2上
重新启动rs1的httpd服务后,负载均衡恢复正常,
停掉rs2的httpd服务时,反之亦然
相关文章推荐
- 基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用
- 基于Corosync/openais和ldirectord实现LVS(DR)中的Director的高可用
- 基于heartbeat v2和heartbeat-ldirectord实现LVS(DR)中Director的高可用
- 基于lvs的DR模型搭建高可用的web服务,并部署wordpress,(附有脚本实现健康状态检测的代码) 推荐
- 利用corosync/openais + ldirectord 实现LVS(DR)中的Director 的高可用
- 基于Keepalived实现了LVS高可用及Web服务高可用包括主从模型和主主模型
- 基于keepalived(主从+双主) + LVS(DR模型) + DNS实现http高可用集群服务
- LVS基于DR模型实现简单负载均衡集群和持久连接
- LVS基于DR模型实现负载均衡集群实验
- 基于LVS-DR群集模式+keepalived实现高可用
- 基于corosync/openais和ldirectord实现LVS(DR)的高可用
- keepalived-lvs-dr-主主模型实现高可用负载均衡
- Heartbeat v2+heartbeat-ldirectord实现LVS(DR)中Director的高可用
- 基于heartbeat v2 和 heartbeat-ldirectod 实现LVS(DR)中的Direcotor的高可用实验
- heartbeat v2 + lvs-DR实现Director的高可用
- 实现keepalived企业级高可用基于LVS-DR模式
- 基于lvs-dr模型的discuz负载均衡实现
- LVS-DR模型实现LVS-Director的高可用集群
- 实例详解LB基于LVS架构之NAT、DR模型架构实现web服务负载均衡 推荐