红帽(RedHat Linux)6.1之负载均衡(Load Balancer)配置实例
红帽(RedHat Linux)6.1之负载均衡(Load Balancer)配置实例
一、架构安排
准备4台linux机器,5个IP地址:
28.6.11.81:对外公布IP【访问79和80的httpd服务时使用IP】
28.6.11.77:router的primary服务器
28.6.11.78:router的backup服务器
28.6.11.79:httpd服务器
28.6.11.80:httpd服务器
其中:
77和78互为备份,同一时间只有一台在工作。77和78两台正常的时候,77负责转发;77断掉,78接替工作;77恢复后,78再次处于休眠状态。
79和80上面运行有通过IP地址81最终要访问的服务httpd。79和80两台正常的时候,根据策略负载httpd服务请求,其中一台坏掉的时候,请求被转到另外一台正常的服务器上。坏掉的服务器恢复后,负载再次被流转到该服务器上。
二、配置yum库,安装【Load Balancer】组包
【在primary和backup机上都要安装【Load Balancer】组包】
在光驱中放入红帽6.1安装光盘,进行如下操作:
[root@linux1178 ha]# mount /dev/cdrom/media/cdrom
[root@linux1178 yum.repos.d]# pwd
/etc/yum.repos.d
[root@linux1178 yum.repos.d]# virhel-source.repo
[rhel-source-lvs] name=Red Hat Enterprise Linux $releasever -$basearch - Source-lvs baseurl=file:///media/cdrom/LoadBalancer enabled=1 gpgcheck=0 |
[root@linux1178 yum.repos.d]# yum grouplist
如果没有安装【LoadBalancer】,执行:
[root@linux1178 yum.repos.d]# yum -ygroupinstall "Load Balancer"
三、服务配置
77:
[root@linux1177 ~]# service piranha-gui start【Load Balancer配置通过IE界面,启动该服务才能进行配置】
[root@linux1177 ~]# service pulse start【启动该服务才可以进行负载均衡】
[root@linux1177 ~]# service iptables stop
[root@linux1177 ~]# vi /etc/sysctl.conf
确保如下设置:
# Controls IP packet forwarding net.ipv4.ip_forward= 1 |
[root@linux1177 ~]#sysctl -p【使sysctl.conf文件里的值生效】
[root@linux1177 ~]# piranha-passwd【设置登录配置界面时密码】
78:
[root@linux1178 ~]# service piranha-gui start【Load Balancer配置通过IE界面,启动该服务才能进行配置】
[root@linux1178 ~]# service pulse start【启动该服务才可以进行负载均衡】
[root@linux1178 ~]# service iptables stop
[root@linux1178 ~]# vi /etc/sysctl.conf
确保如下设置:
# Controls IP packet forwarding net.ipv4.ip_forward= 1 |
[root@linux1178 ~]#sysctl -p【使sysctl.conf文件里的值生效】
[root@linux1178 ~]# piranha-passwd【设置登录配置界面时密码】
79:
[root@linux1179 ~]# service httpd start
[root@linux1179 ~]# service iptables stop
[root@linux1179 ~]# iptables -f
[root@linux1179 ~]# iptables -L
[root@linux1179 ~]# iptables -t nat -A PREROUTING -p tcp -d 28.6.11.81 --dport 80 -j REDIRECT
[root@linux1179 ~]# service iptables status
确保有如下:
[root@linux1179 ~]# service iptables status Table: nat Chain PREROUTING (policy ACCEPT) num target prot opt source destination 1 REDIRECT tcp -- 0.0.0.0/0 28.6.11.81 tcp dpt:80 2 REDIRECT tcp -- 0.0.0.0/0 28.6.11.81 tcp dpt:80 |
[root@linux1179 html]# echo "this is 79">a.html
确认通过IE:http://28.6.11.79/a.html可以访问
80:
[root@linux1180 ~]# service httpd start
[root@linux1180 ~]# service iptables stop
[root@linux1180 ~]# iptables -f
[root@linux1180 ~]# iptables -L
[root@linux1180 ~]# iptables -t nat -A PREROUTING -p tcp -d 28.6.11.81 --dport 80 -j REDIRECT
[root@linux1180 ~]# service iptables status
确保有如下:
[root@linux1180 ~]# service iptables status Table: nat Chain PREROUTING (policy ACCEPT) num target prot opt source destination 1 REDIRECT tcp -- 0.0.0.0/0 28.6.11.81 tcp dpt:80 2 REDIRECT tcp -- 0.0.0.0/0 28.6.11.81 tcp dpt:80 |
[root@linux1180 html]# echo "this is 80">a.html
确认通过IE:http://28.6.11.80/a.html可以访问
四、Piranha配置
(一)primary机77的配置
77和78的配置基本相同,77为primary机,先在77上配置然后在把配置文件拷贝到78上,再根据78的具体情况作相应的调整。
使用IE登录如下:http://28.6.11.77:3636,如图:
点击“Login”按钮,输入用户“piranha”和在77上运行piranha-passwd时设置的密码,如下:
“确定”后,进入如下界面
在“GLOBAL SETTINGS”页,输入primary机的地址28.6.11.77,点击“Direct Routing”按钮,确保“Current type is”是direct,然后点击“ACCEPT”按钮保存设置。
在“REDUNDANCY”页,输入backup机的地址28.6.11.78,然后点击“ACCEPT”按钮保存设置。
在“VIRTUAL SERVERS”页,点击“ADD”按钮进行添加,如下:
在“VIRTUALSERVER”页,进行如上的设置,点击“ACCEPT”按钮保存设置。
注:“Scheduling”可以进行调度策略选择。
如果28.6.11.77这个地址是设在eth0上的,上图中的“Device”字段就设置为“eth0:1”,怎么检查11.77是配在eth0上看如下,如果不是需要相应修改。
[root@linux1177~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:50:56:A5:74:53 inet addr:28.6.11.77 Bcast:28.6.11.255 Mask:255.255.255.0 inet6 addr:fe80::250:56ff:fea5:7453/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1647186 errors:0 dropped:0overruns:0 frame:0 TX packets:1278257 errors:0 dropped:0overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:770390855 (734.7 MiB) TX bytes:91967354 (87.7 MiB) |
在“REAL SERVER”页面,点击“ADD”按钮进行添加,如下:
点击“EDIT”进行编辑,如下:
输入如上内容,点击“ACCEPT”保存,点击“REALSERVER”标签,进入如下:
点击“ADD”再添加,进入如下:
选中新添加条目,并点击“EDIT”进行编辑,进入如下:
输入如上内容,点击“ACCEPT”保存,点击“REALSERVER”标签,进入如下:
选中“11.79”条目,点击“(DE)ACTIVATE”按钮,使用同样的方法激活11.80条目,结果如下:
处于“UP”状态,才真正进入分发目标列表里面。
在“MONITORING SCRIPTS”采用默认设置。
点击“CONTROL/MONITORING”进入如下:
点击“Update information now”按钮,把信息同步到77的配置文件/etc/sysconfig/ha/lvs.cf中。
如上内容配置完成后,重启pulse服务。
[root@linux1177 ~]#service pulse restart
(二)backup机78的配置
把primary机77的lvs.cf文件拷贝到78的相同目录,重新启动piranha-gui服务,登录http://28.6.11.78:3636,根据实际情况修改有关内容。
如下:
[root@linux1178 ~]# ifconfig eth0 eth0: error fetching interface information:Device not found [root@linux1178 ~]# ifconfig eth1 eth1 Link encap:Ethernet HWaddr00:50:56:A5:0C:50 inet addr:28.6.11.78 Bcast:28.6.11.255 Mask:255.255.255.0 inet6 addr: fe80::250:56ff:fea5:c50/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:36621 errors:0 dropped:0 overruns:0 frame:0 TX packets:14600 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10089426 (9.6 MiB) TX bytes:1049130 (1.0 MiB) |
由上可知,28.6.11.78是配在eth1上的,所以在“VIRTUALSERVER”页上的“Device”字段就设置为“eth1:1”,见下图:
最后点击“CONTROL/MONITORING”进入如下:
点击“Update information now”按钮,把信息同步到78的配置文件/etc/sysconfig/ha/lvs.cf中。
如上内容配置完成后,重启pulse服务。
[root@linux1178~]# service pulse restart
五、验证方法
使用浏览器【建议使用微软IE】访问如下URL:
根据Round robin的调度策略,如下的两个界面会以同等几率出现,如下:
界面一:
界面二:
更进一步的测试,可以依次关闭77,78,79,80四台机器中的一台机器,看LoadBalancer的表现,然后根据现象排查问题。
PS:
1、piranha-gui服务为配置用,停掉也能进行LB
2、Master server和backup server上的httpd服务器停掉也能进行LB
3、无论是eth1:1还是eth0:1的写法,采用的是同一块网卡配两个地址的方式,所以是eth1还是eth0,对准了很准重要,否则会有如下提示:
Sep 22 16:44:34 linux1178 lvs[7400]:create_monitor for httpd/11.79 running as pid 7411 Sep 22 16:44:34 linux1178 lvs[7400]:create_monitor for httpd/11.80 running as pid 7412 Sep 22 16:44:34 linux1178 nanny[7412]:starting LVS client monitor for 28.6.11.81:80 -> 28.6.11.80:80 Sep 22 16:44:34 linux1178 nanny[7411]:starting LVS client monitor for 28.6.11.81:80 -> 28.6.11.79:80 Sep 22 16:44:34 linux1178 nanny[7412]: [active ] making 28.6.11.80:80 available Sep 22 16:44:34 linux1178 nanny[7411]: [active ] making 28.6.11.79:80 available Sep 22 16:44:34 linux1178 pulse[7405]:SIOCGIFBRDADDR failed: No such device Sep22 16:44:39 linux1178 pulse[7403]: gratuitous lvs arps finished |