实验目标 :
快速撑握和理解Piranha方案,并利用15分钟构建WEB高可用负载均衡解决方案.
结构:
LVS-BACKUP: 192.168.1.211
LVS-VIP: 192.168.1.212
Realsever: 192.168.1.204,192.168.1.205
一. Piranha 方案基本简绍.
1.Piranha 方案优点:
1.1.1 配置简洁高效:
配置简便一个lvs.conf 配置文件即可搞定( 类keepalived 方案.)
1.1.2WEB 配置界面.
WEB 配置对于那些不懂LVS 配置的人员来说非常吸引力, 你几乎只要花15 分钟就可以配置好一个完美的负载均衡及高可用性方案.
1.1.3 完整的功能:
主备 LVS (Load Balancer) 的 Heartbeat 和 HA (pulse,send_arp)
LoadBalancer 和 Real Server 间进程服务的 Heartbeat (nanny)
IPVS 功能 (lvsd)
IPVS 的管理 (ipvsadm)
2.Piranha 方案原理结构描述:
Piranha 方案是基于LVS 基础上设计的一套负载均衡高可用解决方案.
LVS 运行在一对有相似配置的计算机上:
一个作为活动 LVS Router(Active LVS Router) ,
一个作为备份 LVS Router(Backup LVS Router) 。
活动LVS Router 服务有两个角色:
* 均衡负载到真实服务器上。
* 检查真实服务器提供的服务是否正常。
备份LVS Router 用来监控活动的LVS Router ,以备活动的LVS Router 失败时由备份LVS Router 接管。
![](http://linux.chinaunix.net/bbs/attachments/month_0901/20090112_d37cc64171b838e6cb55T7ZY8WAqtE4i.jpg)
![attachimg.gif](http://linux.chinaunix.net/bbs/images/default/attachimg.gif)
Pulse:
Pulse进程运行在活动LVS Router和备份LVS Router上。
在备份LVS Router上,pulse发送一个心跳(heartbeat)到活动LVS Router的公网接口上以检查活动LVS Router是否正常。
在活动LVS Router上,pulse启动lvs进程并响应来自于备份LVS Router的心跳。
lvsd:
lvs进程调用ipvsadm工具去配置和维护IPVS路由表,并为每一个在真实服务器上的虚拟服务启动一个nanny进程。
nanny:
每一个nanny进程去检查真实服务器上的虚拟服务状态,并将故障情况通知lvs进程。假如一个故障被发现,lvs进程通知ipvsadm在IPVS路由表中将此节点删除。
send_arp:
如果备份LVS Router未收到来自于活动LVS Router的响应,
它将调用send_arp将虚拟IP地址再分配到备份LVS Router的公网接口上。
并在公网接口和局域网接口上分别发送一个命令去关掉活动LVS Router上的lvs进程。同时启动自己的lvs进程来调度客户端请求。
3.Piranha方案基本套件安装:
CODE:
#yum install ipvsadm modcluster piranha system-config-cluster php php-cli php-common
4.配置文件介绍:
/etc/sysconfig/ha/lvs.cf //由http://ip:3636 web界面配置的配置文件写入此文件.
/etc/init.d/piranha-gui start //启动piranha服务的WEB配置界面.
/etc/init.d/pulse //启动piranha服务读取的就是/etc/sysconfig/ha/lvs.cf.
二. Piranha配置
配置主LVS服务器.
# vi /etc/sysctl.conf找到下面行 //启用数据转发.
net.ipv4.ip_forward = 0将0 改成1,net.ipv4.ip_forward = 1
执行如下命令来应用:sysctl –p
通过WEB界面配置Piranha服务.
# /etc/init.d/piranha-gui start //启动Piranha服务.
#/usr/sbin/piranha-passwd //设置密码,请设置你的piranha服务WEB配置登陆密码.
http://192.168.1.210:3636/ 输入用户名: piranha 及刚才设置的密码登陆.
登陆后,选择Global Settings 这是对LVS的配置
Primary server public IP 输入公网IP:192.168.1.210,应用后按ACCEPT按钮保存设置。
通过WEB配置主LVS的信息
1. 配置主份LVS
![](http://linux.chinaunix.net/bbs/attachments/month_0901/20090112_9d3839e461fbd7bfd3b9x779J5s7UXsw.png)
![attachimg.gif](http://linux.chinaunix.net/bbs/images/default/attachimg.gif)
2.配置备份LVS
![](http://linux.chinaunix.net/bbs/attachments/month_0901/20090112_7f6d865046641d9ee23cp32PrbO49za6.png)
![attachimg.gif](http://linux.chinaunix.net/bbs/images/default/attachimg.gif)
3. 配置添加LVS( VIP信息)
![](http://linux.chinaunix.net/bbs/attachments/month_0901/20090112_f4ba7b6143b09515c0cc1DIzH9cHCHp1.png)
![attachimg.gif](http://linux.chinaunix.net/bbs/images/default/attachimg.gif)
4.配置Realserver
![](http://linux.chinaunix.net/bbs/attachments/month_0901/20090112_a80ee9fd9f4b566e1708NVXDDaX13vDM.png)
![attachimg.gif](http://linux.chinaunix.net/bbs/images/default/attachimg.gif)
点击”编辑”添加具体的Realsever信息.
![](http://linux.chinaunix.net/bbs/attachments/month_0901/20090112_a353ba1c877cb4973a39eEs371pqeQqZ.png)
![attachimg.gif](http://linux.chinaunix.net/bbs/images/default/attachimg.gif)
5.启动LVS服务pulse
CODE:
# /etc/init.d/pulse start
Starting pulse: [ OK ]
Starting pulse: [ OK ]
如果不报错,表示启动成功!到此LVS的服务器已经配置完成了启动两个程序
1、piranha-gui 是用来配置LVS的
2、pulse 是用来启动LVS的
6.备份LVS安装与配置
备份LVS安装同主LVS安装方法同样.直接将lvs.conf拷贝到相应的目录下:
#scp lvs.cf root@192.168.1.211:/etc/sysconfig/ha/
# /etc/init.d/pulse start 启动服务即可.
7.配置Realserver
DR模式配置文件
……........
CODE:
ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
/sbin/route add -host $WEB_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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
/sbin/route add -host $WEB_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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
…………………….
Tunnel模式配置文件.
……………………………………
CODE:
ifconfig tunl0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
/sbin/route add -host $WEB_VIP dev tunl0
echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
/sbin/route add -host $WEB_VIP dev tunl0
echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
………………………………………….
正确配置,并启动服务.
8. 测试与日志分析.
# ipvsadm –ln //查看LVS连接状态.
CODE:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddressort Scheduler Flags
-> RemoteAddressort Forward Weight ActiveConn InActConn
TCP 192.168.1.212:80 wrr persistent 30
-> 192.168.1.204:80 Route 1 0 0
-> 192.168.1.205:80 Route 1 0 0
Prot LocalAddressort Scheduler Flags
-> RemoteAddressort Forward Weight ActiveConn InActConn
TCP 192.168.1.212:80 wrr persistent 30
-> 192.168.1.204:80 Route 1 0 0
-> 192.168.1.205:80 Route 1 0 0
# tail -f /var/log/messages
![](http://linux.chinaunix.net/bbs/attachments/month_0901/20090112_e17429a244b8d21920afugyu38Z33o3U.png)
![attachimg.gif](http://linux.chinaunix.net/bbs/images/default/attachimg.gif)
【注】服务切换测试:
停掉主LVS服务上的pulse查看master是否能正常接管.测试过程中多注
意分析日志.在Linuxtone网站编写heartbeat+lvs方案的时候还需要自己送一个arping命令告诉网关我的MAC发生变化了.
但是Piranha方案能自动送一个arp命令.
三. LVS配置文件详解及相关技巧介绍
1. lvs.conf 配置及详解: http://bbs.linuxtone.org/thread-1603-1-1.html
2. 修改Piranha登陆用户名及监听端口?
启动/etc/init.d/piranha-gui,实际上是执行如下配置文件.
/usr/sbin/piranha_gui -f /etc/sysconfig/ha/conf/httpd.conf
#cd /etc/sysconfig/ha 下目录介绍.
lvs.cf //Piranha方案实现LVS核心配置文件.
conf/{httpd.conf, piranha.passwd} //apache及认证相关文件.
web/ //此目录下存放WEB配置界面的PHP相关程序,
如果想对WEB界面美化,请修改文件.
mdules/ //apache一些相关模块.
# vi /etc/sysconfig/ha/conf/httpd.conf (将原端口3636改为81,你也可以自定义此端口)
![](http://linux.chinaunix.net/bbs/attachments/month_0901/20090112_0a993c8ace708d1f856akun4uazq11BK.png)
![attachimg.gif](http://linux.chinaunix.net/bbs/images/default/attachimg.gif)
默认WEB界面是能过piranha账号登陆,如何创建自己定义的账号登陆呢?
CODE:
# htpasswd -c /etc/sysconfig/ha/conf/lvs.pass netseek
// 上述命令是添加用户netseek,并将账号信息写入lvs.pass这个文件.
# vi /etc/sysconfig/ha/conf/httpd.conf
![](http://linux.chinaunix.net/bbs/attachments/month_0901/20090112_812293094dd772e784932SzFYF0sfhF1.png)
![attachimg.gif](http://linux.chinaunix.net/bbs/images/default/attachimg.gif)
# /etc/init.d/piranha-gui restart 重启服务即可生效.
上述技巧只是简单的抛砖引玉,你可以修改WEB服务的PHP相关程序,添加一些流量
或者WEB连接状态监控的代码.还可以自己给apache添加一些你自己写的模块,
总之你可以再现有的piranha上做很多的改造去实 现你想要的更完美的系统.
更多技巧请实时关注: http://bbs.linuxtone.org/ 负载均衡版块.
3. 如果启动/etc/init.d/piranha-gui start
若遇到以下错误提示:
CODE:
Starting piranha-gui: (13)Permission denied: make_sock: could not bind to address [::]:3636
关闭掉selinux跟firewall
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21996817/viewspace-609275/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21996817/viewspace-609275/