使用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图形化搭建  高可用负载均衡集群 成功实现