Chinaunix首页 | 论坛 | 博客
  • 博客访问: 134305
  • 博文数量: 25
  • 博客积分: 389
  • 博客等级: 一等列兵
  • 技术积分: 838
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-23 14:18
文章存档

2013年(20)

2012年(5)

分类: 服务器与存储

2012-08-05 18:21:38

LVS-DR负载均衡集群实现Director高可用并且能对RS进行健康状况检查实现过程;
目的: 防止Director故障导致用户请求无法转发到RS使LVS集群故障并利用heartbeat-ldirectord模块时时对RS进行健康状况检查,确保lvs集群工作正常;
拓补图:
注:图中直线为用户通过主Director访问web服务;
曲线为用户通过备Director访问web服务;

LVS-DR模型配置过程:
  1. 安装配置RS1和RS2的web服务并添加测试页面; 
  2. # yum -y install httpd #为两个RS安装配置httpd; 
  3. # echo "

    RS1

    " >/var/www/html/index.html  #为RS1添加测试页面;
     
  4. # echo "

    RS2

    " >/var/www/html/index.html #为RS2添加测试页面;
     
  5. 配置RS1和RS2内核参数; 
  6. # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore 
  7. # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
  8. # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce 
  9. # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
  10. 配置RS1和RS2的虚拟ip和路由信息; 
  11. # ifconfig lo:0 172.16.11.1 netmask 255.255.255.255 broadcast 172.16.11.1 up 
  12. # route add -host 172.16.11.1 dev lo:0 
  13. 为Director-主和Director-备安装LVS并添加虚拟ip和路由信息; 
  14. # yum -y install ipvsadm 
  15. # ifconfig eth0:0 172.16.11.1 netmask 255.255.255.255 broadcast 172.16.11.1 up 
  16. # route add -host 172.16.11.1 dev eth0:0 
  17. 为Director-主和Director-备添加LVS服务并保存至配置文件中; 
  18. # ipvsadm -A -t 172.16.11.1:80 -s rr 
  19. # ipvsadm -a -t 172.16.11.1:80 -r 172.16.11.21 -g 
  20. # ipvsadm -a -t 172.16.11.1:80 -r 172.16.11.22 -g 
  21. # service ipvsadm start  
  22. # service ipvsadm save 
  23. 为Director-主和Director-备打开路由转发功能; 
  24. # echo 1 > /proc/sys/net/ipv4/ip_forward 
  25. 通过http://172.16.11.1访问LVS-DR集群服务正常(注意:当利用Director-主来转发用户请求时Director-备应关闭ipvsadm服务并停止器eth0:0上的虚拟地址,Director-备同理) 
  26. ----------以上过程为了验证LVS-DR模型集群服务工作正常-----------
为Director-主和Director-备配置高可用:
关闭Director-主和Director-备的ipvsadm服务使其不开机自动启动并停止VIP和清空ipvs规则;
  1. # service ipvsadm stop 
  2. # chkconfig ipvsadm off 
  3. # ifconfig eth0:0 down 
  4. # ipvsadm -C 
1)在Director-主和Director-备上安装配置heartbeat,用到的安装包如下:
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
  1. 定义Director-主和Director-备的节点名称分别为node1和node2
  2. 修改Director-主和Director-备的主机名称,使节点名称与主机名称保持一致; 
  3. # hostname node1 #另外需要将主机名称写在配置文件中,以免重启后失效; 
  4. # hostname node2 #另外需要将主机名称写在配置文件中,以免重启后失效; 
  5. 配置Director-主和Director-备的ssh互联互通(因为Director-主要控制Director-备的heartbeat服务启动和关闭)
  6. 编辑Director-主和Director-备的/etc/hosts文件添加如下内容: 
  7. 172.16.11.12    node2 
  8. 172.16.11.11    node1 
  9. Director-主和Director-备进行互联网密钥交换 
  10. 在Director-主配置如下: 
  11. # ssh-key -t rsa #生成一对密钥; 
  12. # ssh-copy-id -i ./.ssh/id_rsa.pub root@node2 #将密钥放到node2节点上; 
  13. 在Director-备配置如下: 
  14. # ssh-key -t rsa #生成一对密钥; 
  15. # ssh-copy-id -i ./.ssh/id_rsa.pub root@node1 #将密钥放到node1节点上; 
  16. 修改Director-主和Director-备的时间保持一致,直接使用date命令修改即可; 
  17. 在Director-主和Director-备安装配置heartbeat(这里安装的是v2版本) 
  18. # yum --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 
  19. 复制配置文件样例至配置文件目录中: 
  20. # cd  /usr/share/doc/heartbeat-2.1.4/ 
  21. # cp ha.cf authkeys haresources /etc/ha.d/ 
  22. 编辑修改配置文件/etc/ha.d/ha.cf,修改内容如下: 
  23. 打开以下几项: 
  24. keepalive 2   #表示多长时间发送一个心跳信息,默认单位是秒; 
  25. deadtime 30   #多长时间设定主机down机,时间不能设置过短,不然会造成脑裂; 
  26. udpport 694   # heartbeat传递心跳信息用到的端口; 
  27. bcast   eth0  #定义通过eth0网卡向外通过广播方式传递心跳; 
  28. compression     bz2 #定义集群事务信息传递压缩格式; 
  29. compression_threshold 2 #定义大于2KB的集群事务信息才进行压缩; 
  30. 打开下并修改如下内容: 
  31. ping 172.16.0.1  # ping网关确认节点工作是否正常; 
  32. 添加两个节点: 
  33. node    node1  
  34. node    node2   #添加节点,一定是节点名称与主机名称保持一致; 
  35. 修改/etc/ha.d/authkeys权限为600,保证签名信息更安全; 
  36. # chmod 600 /etc/ha.d/authkeys 
  37. 编辑配置/etc/ha.d/authkeys添加如下内容: 
  38. auth 1 
  39. 1 md5 7f687dc09a57c98a2b4d38292e319dc0   #注意:使用随机数确保签名信息的安全; 
  40. 编辑修改配置文件/etc/ha.d/ haresources,添加如下信息; 
  41. node1 172.16.11.1/16/eth0/172.16.255.255 httpd  #指定节点虚拟网卡信息及所对应的服务; 
  42. 复制ha.cf authkeys haresources配置文件至RS2上; 
  43. # scp ha.cf haresources authkeys root@node2:/etc/ha.d/ 
  44. 启动Director-主和Director-备上的heartbeat服务: 
  45. # service heartbeat start 
  46. # ssh node2 ‘service heartbeat /etc/rc.d/init.d/heartbeat start’ 
使用heartbeat v2版本的heartbeat-gui图形化工具管理集群服务:
  1. 1)首先要将node1和node2节点上的heartbeat服务停掉; 
  2. #service heartbeat stop #停止本节点服务; 
  3. #ssh node2 '/etc/rc.d/init.d/heartbeat stop' #停止node2节点集群服务; 
  4. 2)在RS1和RS2上同时安装heartbeat-gui工具 
  5. # rpm -ivh heartbeat-gui-2.1.4-9.el5.i386.rpm 
  6. 3)编辑/etc/ha.d/ha.cf配置文件,添加crm on或crm respawn指令; 
  7. 4)给hacluster用户添加密码,hacluster用户是登录图形界面的用户; 
  8. #passwd hacluster 
  9. 5)#netstat -tnlp  #确保端口5560打开; 
  10. 6)#hb_gui & #打开图形管理界面; 
利用heartbeat-ldirectord模块管理Director上的虚拟服务及RS1和RS2的定义并对RS1和RS2 进行健康状况检查,安装ldirectord需要用到的包有heartbeat-ldirectord-2.1.4-9.el5.i386.rpm和perl-MailTools-1.77-1.el5.noarch.rpm
  1. # yum -y --nogpgcheck localinstall heartbeat-ldirectord-2.1.4-9.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm 
  2. 复制ldirectord配置文件至/etc/ha.d/目录下: 
  3. # cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ 
  4. 编辑/etc/ha.d/ldirectord.cf配置文件: 
  5. 打开如下选项: 
  6. logfile="/var/log/ldirectord.log"  #打开日志 
  7. 定义虚拟主机,将配置文件中的虚拟主机修改为以下内容: 
  8. virtual=172.16.11.1:80   #定义LVS的虚拟服务; 
  9.         real=172.16.11.21:80 gate #指定RS1; 
  10.         real=172.16.11.22:80 gate #指定RS2; 
  11. #       real=192.168.6.6:80 gate 
  12. #       fallback=127.0.0.1:80 gate 
  13.         service=http #指定服务; 
  14.         request=" .test.html" #做健康状况检查从RS上获取的测试页面; 
  15.         receive="OK" #测试页面中添加的相应字符串; 
  16. #       virtualhost=some.domain.com.au #定义虚拟主机; 
  17.         scheduler=rr #调度算法; 
  18.         #persistent=600 
  19.         #netmask=255.255.255.255 
  20.         protocol=tcp #指定相应的协议; 
  21.         checktype=negotiate #检查RS的健康状况方式,negotiate是协商方式; 
  22.         checkport=80 #检查RS端口号; 
  23. #       request="index.html" 
  24. #       receive="Test Page" 
  25. #       virtualhost= 
  26. 将ldirectord配置文件传递至Director-备主机上的/etc/ha.d/目录下; 
  27. # scp /etc/ha.d/ldirectord.cf node2:/etc/ha.d/ 
  28. 在RS1和RS2的网页主目录下添加.test.html测试页面,页面内容写为OK; 
  29. # echo "OK" > /var/www/html/.test.html 
  30. 将Director-主和Director-备上的ldirectord服务开机自动启动停止掉;
  31. # chkconfig ldirectrod off 
打开heartbeat的图形的界面添加ldirectord和vip资源;
  1. # service ipvsadm start  #开启Director-主ipvsadm服务; 
  2. # service heartbeat start #开启Director-主heartbeat服务; 
  3. # ssh node2 'service ipvsadm start' #开启Director-备ipvsadm服务; 
  4. # ssh node2 '/etc/rc.d/init.d/heartbeat start' #开启Director-备heartbeat服务; 
  5. #hb_gui & 
利用hacluster用户登录:
添加资源:
添加ldirectord资源
添加vip资源
启动ldirectord和vip资源成功;
ipvsadm规则在RS2上已定义,并且对RS1和RS2做了健康状况检查;
vip资源在RS1上启动正常
通过浏览器访问此时RS1和RS2的页面均能以负载均衡方式正常访问;
将RS1节点关闭掉,验证一下ldirectord对RS1和RS2健康状况检查的效果:
  1. 在RS1上添加如下防火墙规则; 
  2. # iptables -A INPUT -p tcp --dport 80 -j DROP 
查看Director-主上的ipvsadm规则如下:
通过浏览器访问,此时只有RS2响应用户的请求;
定义位置资源约束,让ldirectord和vip在同一个节点上;
定义顺序资源约束,让ldirectord在vip启动后再启动;
此时无论将node1和node2中任何一节点作为主节点或备节点,ldirectord和vip资源都会在同一个节点上,并且启动服务过程中都将会是ldirectord在vip启动后再启动;
 
以上就是集群服务的LVS-DR模型基于heartbeat-ldirectord模块管理Director上虚拟服务及RS1和RS2的定义并对RS进行健康状况检查的实现过程。
阅读(2215) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~