对Director的高可用分为两部分完成:
一:配置好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 ipvsadm
- ipvsadm -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
说明资源约束生效,
访问页面时根据设定好的调度算法变换,说明负载均衡正常
说明资源切换成功,高可用有效,
通过访问页面,负载均衡也正常工作
3、把rs1的httpd服务停止
service httpd stop
访问页面时只显示rs2的页面结果,
说明Director通过健康状态监控发现rs1故障,把请求只发送到rs2上
重新启动rs1的httpd服务后,负载均衡恢复正常,
停掉rs2的httpd服务时,反之亦然
转载于:https://blog.51cto.com/51880526/1074455