您的位置:首页 > 运维架构 > 网站架构

搭建高可用的负载均衡 Piranha+LVS

2014-03-29 13:42 591 查看
使用LVS+Piranha 图形化设置

lvs+piranha整合实现高可用的负载均衡集群,基于web方式管理 相比lvs+keepalived方式,该实验需要前端服务器具有双网卡
1.系统环境 RHEL6.3 X86_64 VMware9.0 清空防火墙 关闭SElinux
服务器名Public IP地址Private IP网关虚拟设备名虚拟IP
Director Server192.168.1.100172.16.1.1192.168.1.1eth0:0192.168.1.135
Backup Server192.168.1.200172.16.1.2192.168.1.1eth0:0192.168.1.135
Real Server1192.168.1.210 192.168.1.1lo:0192.168.1.135
Real Server2192.168.1.220 192.168.1.1lo:0192.168.1.135

2.原理结构描述 基于LVS基础上设计的一套负载均衡高可用解决方案
Pulse
该进程运行在活动LVSRouter和备份LVSRouter上,负责心跳(heartbeat)连接
lvsd该进程调用ipvsadm工具配置和维护IPVS路由表,并为真实服务器上的虚拟服务启动一个nanny进程
nanny该进程检查真实服务器上的虚拟服务状态,并将故障情况通知lvs进程
send_arp如果备份LVS未收到活动LVS的响应,将调用send_arp将虚拟IP地址再分配到备份LVS的公网接口上

3.搭建网络环境:
3.1根据系统环境列表设置:
Director Server eth0 192.168.1.100 eth1 172.16.1.1
Backup Server eth0 192.168.1.200 eth1 172.16.1.2
Real Server1 ech0 192.168.1.210
Real Server2 ech0 192.168.1.220
需要注意的是:所有的eth0都是直接连接到路由器的,可以直接到达外网,(DR模式)。
所有的eth1都是在内网中,用于心跳检测。实验中需将其放置到一个纯净网络中,不被干扰
3.2清空iptables 关闭 SElinux

4.配置YUM 源
[extras-163] name=163-extras baseurl=http://mirrors.163.com/centos/6.3/extras/x86_64/ enabled=1 gpgcheck=0
[update-163] name=163-update baseurl=http://mirrors.163.com/centos/6.3/updates/x86_64/ enabled=1 gpgcheck=0
[os-163] name=163-os baseurl=http://mirrors.163.com/centos/6.3/os/x86_64/ enabled=1 gpgcheck=0
[fasttrack-163] name=163-fasttrack baseurl=http://mirrors.163.com/centos/6.3/fasttrack/x86_64/ enabled=1 gpgcheck=0
[plus-163] name=163-plus baseurl=http://mirrors.163.com/centos/6.3/centosplus/x86_64/ enabled=1 gpgcheck=0
EPEL
YUM源需要安装。
[root@localhost ~]# rpm -ivh epel-release-6-5.noarch.rpm
5.软件的安装
[root@localhost ~]# yum install -y cman* ipvsadm modcluster piranha
配置文件介绍:
配置文件说明
/etc/sysconfig/ha/lvs.cf由web界面生成的配置写入这个文件中
/etc/init.d/piranha-gui start启动piranha服务的WEB配置界面
/etc/init.d/pulse启动piranha服务读取的就是/etc/sysconfig/ha/lvs.cf文件
/etc/sysconfig/ha/conf/httpd.conf
这个文件是他的配置文件可以改用什么端口来管理

6.主piranha服务器配置
6.1开启内核的ip包转发 [root@localhost ~]# vim /etc/sysctl.conf 修改下面字段值为1
net.ipv4.ip_forward = 1 [root@localhost ~]# sysctl -p
6.2开启web管理服务
[root@localhost init.d]# service piranha-gui start启动web页面管理服务
[root@localhost init.d]# netstat -tunapl | grep :3636
查看3636端口是否开启
[root@localhost init.d]# piranha-passwd
设置web登录密码
#http://192.168.1.100:3636用户名piranha
[root@localhost ha]chkconfig piranha-gui on
6.2.1开启piranha-gui web管理服务,执行进程是httpd。但是http服务不用开启。
[root@localhost init.d]# service httpd status
httpd is stopped
6.2.2对登录web管理界面的网段进行限制
[root@localhost init.d]# vim /etc/sysconfig/ha/conf/httpd.conf
6.3web页面配置部分(设置完成 点击 ACCEPT)
6.3.1GLOBAL SETTINGS (就是双机热备的主服务器配置)
Primary server public IP主piranha服务器真实IP
Primary server private IP输入用于心跳检测的网卡IP,这里填写了后面从服务器才会有心跳设置框
Use network typeLVS类型一般连接类型选Directory Routing(路由直连)就可以了
6.3.2REDUNDANCY (就是双机热备的从服务器设置)
Redundant server public IP
从piranha服务器真实IP
Redundant server private IP输入用于心跳检测的网卡IP
Heartbeat interval心跳检查间隔时间点位秒
Assume dead after
设置多久时间确定死亡切换服务单位秒
Heartbeat runs on port服务运行端口
6.3.3VIRTUAL SERVER (虚拟服务器及real server的设置)
ADD先添加一个虚拟调度服务器
EDIT编辑添加的虚拟调度服务器
DELETE删除虚拟服务器
ACTIVATE激活虚拟服务器
首先:添加一台虚拟服务器并设置(ADD --- EDIT) 选项说明:
Service timeout: 表示real server 失效后,从lvs路由表中移除所要经过的时间,S Re-entry Time : 表示某个real server被移除后,重新加入路由表必须经过的时间
Load monitoring tool :用于监视各个real server上的负载状态
rup : 要求real server 启动 rstatd 服务 ruptime : 要求real server 启动 rwhod 服务
Quiesce server :“yes” 表示当有新的节点加入集群时,最少链接数会被清零,此时lvs会发送大量的请求到这个新的服务节点,造成新节点的服务阻塞。建议是 "no"
Scheduling : 使用的调度算法 默认是:wlc 加权最小链接 为了实验便于查看结果,此处使用了 rr 轮询算法
Persistence : 在应用服务器上持续的时间。单位为秒 其次:激活 VIRTUAL SERVERS
6.3.4添加并设置激活 real server
设置:名称、真实IP、端口、权值 激活添加的real server

7.启动pulse服务
[root@localhost init.d]# service pulse start
Starting pulse: [ OK ]
[root@localhost init.d]#chkconfig pules on

8.从Piranha服务器设置(与主Piranha大致相同) 添加网卡eth1 并设置IP 设置YUM源 清空防火墙 关闭SElinux
8.1 安装套件 [root@localhost ~]# yum install cman* ipvsadm modcluster piranha
8.2生成配置文件 [root@localhost ~]# scp -rpv root@192.168.1.100:/etc/sysconfig/ha/lvs.cf /etc/sysconfig/ha/lvs.cf
8.3启动服务 [root@localhost ha]# service piranha-gui start
[root@localhost ha]chkconfig piranha-gui on
8.4设置web登录密码 [root@localhost ha]# piranha-passwd
New Password:
Verify:
Adding password for user piranha
8.5启动pulse服务 [root@localhost ha]# service pulse start
Starting pulse: [ OK ]
[root@localhost ha]#chkconfig pulse on

9.REAL SERVER 配置
(所有的real server都要设置,且设置完全相同) 在选择连接类型有NAT、DR(路由直连)、Tunneling三种,选择不同类型真实服务器也要对应不同的设置
设置原理:
9.1 编辑内核运行参数 (使本地不知ARP的解析,防止用户不经过前端服务器转发就直接访问到real server上绑定的VIP) 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
9.2绑定VIP地址 [root@localhost /]# ifconfig lo:0 192.168.0.135 broadcast 192.168.0.135 netmask 255.255.255.255 up [root@localhost /]# route add -host 192.168.0.135 dev lo:0
9.3编辑配置脚本 ----由于9.1 和 9.2 设置都是设置后立即生效,但是重启后失效。
编辑脚本如下:
[root@localhost ~]# cat real-server-bat.sh
#!/bin/bash
VIP=192.168.1.135
/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
/usr/sbin/setenforce 0
/sbin/iptables -F
/sbin/iptables -Z
service iptables save
###############
/bin/cat <<
EOF
>> /etc/rc.d/rc.local /sbin/lvs.sh
EOF
/bin/cat <<
EOF
>>
/sbin/lvs.sh
#!/bin/bash
VIP=192.168.1.135
/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
/usr/sbin/setenforce 0
EOF
/bin/chmod a+x /sbin/lvs.sh
9.4启动http服务 本实验是对http服务做负载均衡
[root@localhost Desktop]# echo "this is real server 3" >> /var/www/html/index.html
[root@localhost Desktop]# service httpd start
[root@localhost Desktop]# chkconfig httpd on
至此:高可用的负载均衡集群搭建完毕。
测试:
1.LVS高可用测试: 关闭 Director Server ,运行Backup Server 在备用服务器查看:
2.LVS负载均衡测试:
3.故障转移 分别停掉 real server 3和4 的http服务,在启动http服务。
查看日志:
至此使用Piranha+LVS图形化搭建 高可用负载均衡集群 成功实现

本文出自 “DavideyLee” 博客,请务必保留此出处http://davideylee.blog.51cto.com/8703117/1386479
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: