忘记密码   免费注册 查看新帖 | 论坛精华区
ChinaUnix.net
  平台论坛 博客 微博 读书 人才 精华 文库 自测 | 频道操作系统 开发 数据库 存储 服务器 网络 IT新闻 Linux 下载 Power用户组
最近访问板块 发新帖
查看: 16257 | 回复: 37

NetSeek09年巨献:利用红帽Piranha方案实现WEB负载均衡 [复制链接]
更多

LP前带钱侍卫

Rank: 3Rank: 3

帖子
4362
主题
907
精华
4
可用积分
3966
专家积分
0
在线时间
1554 小时
注册时间
2008-07-30
最后登录
2010-08-18
论坛徽章:
0
发表于 2009-01-12 09:27:40 |显示全部楼层

作者:NetSeek http://www.linuxtone.org
(IT
运维专家网|集群架构|性能调优)
欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明.
更新时间:2009-01-12

实验平台 :    CentOS release5.2 (Final)

实验目标 :

快速撑握和理解Piranha方案,并利用15分钟构建WEB高可用负载均衡解决方案.


结构:

LVS-ACTIVE:192.168.1.210
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)HeartbeatHA (pulse,send_arp)
LoadBalancerReal 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接管。
1.jpg


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方案基本套件安装:
  1. #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
2.png

2.配置备份LVS
3.png


3. 配置添加LVS( VIP信息)
4.png

4.配置Realserver
5.png

点击”编辑”添加具体的Realsever信息.
6.png


5.启动LVS服务pulse
  1. # /etc/init.d/pulse start
  2. 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模式配置文件
……........
  1.        ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
  2.        /sbin/route add -host $WEB_VIP dev lo:0
  3.        echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  4.        echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  5.        echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  6.        echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  7.        sysctl -p >/dev/null 2>&1
  8.        echo "RealServer Start OK"
复制代码

      …………………….
Tunnel模式配置文件.
……………………………………
  1.     ifconfig tunl0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
  2.        /sbin/route add -host $WEB_VIP dev tunl0
  3.        echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
  4.        echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
  5.        echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  6.        echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  7.        sysctl -p >/dev/null 2>&1
复制代码

………………………………………….

正确配置,并启动服务.
8.    测试与日志分析.
# ipvsadm –ln    //查看LVS连接状态.
  1. IP Virtual Server version 1.2.1 (size=4096)
  2. Prot LocalAddressort Scheduler Flags
  3.   -> RemoteAddressort           Forward Weight ActiveConn InActConn
  4. TCP  192.168.1.212:80 wrr persistent 30
  5. -> 192.168.1.204:80             Route    1      0          0         
  6. -> 192.168.1.205:80             Route    1      0          0     
复制代码
# tail -f /var/log/messages
7.png

【注】服务切换测试:
停掉主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,你也可以自定义此端口)
    8.png

     默认WEB界面是能过piranha账号登陆,如何创建自己定义的账号登陆呢?
  1.   # htpasswd -c /etc/sysconfig/ha/conf/lvs.pass netseek     
复制代码
// 上述命令是添加用户netseek,并将账号信息写入lvs.pass这个文件.  
     # vi /etc/sysconfig/ha/conf/httpd.conf
       9.png

     # /etc/init.d/piranha-gui restart 重启服务即可生效.
     上述技巧只是简单的抛砖引玉,你可以修改WEB服务的PHP相关程序,添加一些流量
     或者WEB连接状态监控的代码.还可以自己给apache添加一些你自己写的模块,
     总之你可以再现有的piranha上做很多的改造去实   现你想要的更完美的系统.
     更多技巧请实时关注: http://bbs.linuxtone.org/ 负载均衡版块.

  3.  如果启动/etc/init.d/piranha-gui start
若遇到以下错误提示:
  1. Starting piranha-gui: (13)Permission denied: make_sock: could not bind to address [::]:3636
复制代码
关闭掉selinux跟firewall

一.相关参考文档
1.LVS高可用性方案汇总 [Linuxtone为您提供了各种高可用负载均衡解决方案
2.  LVS连接状态监控
3.Piranha官方参考文档推荐阅读

本文基于开源分享精神之上方便大家理解和了解红帽Piranha方案,希望能快速帮你解决工作中的一些问题,如有不足之处请见谅!同时欢迎各位对WEB架构,集群规划等相关的感兴趣的朋友请来加入Linuxtone这个社区。我们热情期待你的加入!
http://www.linuxtone.org IT运维专家网!自由+平等+互助+友爱 = 分享快乐!


下载PDF文档(方便阅读): 利用红帽Piranha方案实现WEB负载均衡.pdf (376.66 KB, 下载次数: 2041)
lvs.conf配置文件详解下载: lvs.rar (1.56 KB, 下载次数: 796)


[ 本帖最后由 gyl4802959 于 2009-1-12 14:05 编辑 ]
已有 2 人评分可用积分 信誉积分 收起 理由
luo118 + 6 正是偶要找的東西,
kns1024wh + 6

总评分: 可用积分 + 6  信誉积分 + 6   查看全部评分

对不起,你呼叫的用户已结婚!

Rank: 8Rank: 8

帖子
16364
主题
1580
精华
4
可用积分
20582
专家积分
50
在线时间
2063 小时
注册时间
2005-05-08
最后登录
2012-02-07
论坛徽章:
0
发表于 2009-01-12 16:19:20 |显示全部楼层

回复 #1 gyl4802959 的帖子

LZ的精神可嘉
有问题加QQ964891849 群27053595,遇忙邮件LVS-HOWTO中文翻译计划
Linux开源技术指导 提供专业Linux技术支持,Linux系统定制指导;每天坚持CU 1小时

Rank: 1

帖子
144
主题
10
精华
0
可用积分
807
专家积分
0
在线时间
76 小时
注册时间
2004-10-12
最后登录
2011-12-16
论坛徽章:
0
发表于 2009-01-13 10:19:04 |显示全部楼层
谢谢 支持楼主!
LP前带钱侍卫

Rank: 3Rank: 3

帖子
4362
主题
907
精华
4
可用积分
3966
专家积分
0
在线时间
1554 小时
注册时间
2008-07-30
最后登录
2010-08-18
论坛徽章:
0
发表于 2009-01-13 11:41:03 |显示全部楼层
我按照netseek大师的文档试验很成功,以前感觉lvs很深奥,现在我改变看法了,是自己没去试,没找到好的指引文档……
谢谢netseek……
我会继续转载netseek的大作
喜欢netseek的朋友也可以关注www.linuxtone.org
ps:他是这个站的站长……
对不起,你呼叫的用户已结婚!

Rank: 3Rank: 3

帖子
753
主题
105
精华
2
可用积分
3267
专家积分
120
在线时间
219 小时
注册时间
2006-06-19
最后登录
2011-06-08
论坛徽章:
0
发表于 2009-01-13 13:01:26 |显示全部楼层
顶!~   个人已实验,的确很简单,比起LVS复杂的配置来说,这个真是方便啊。

每次SSH后习惯性的动作:  rm -rf /

帖子
212
主题
19
精华
0
可用积分
150
专家积分
0
在线时间
45 小时
注册时间
2003-01-16
最后登录
2011-03-16
论坛徽章:
0
发表于 2009-01-14 15:49:19 |显示全部楼层
1. 如果是使用DR方式,是不需要打开ip_forward 的
2. 使用arp_ignore方式并不好,你会乎略所有arp,不利于服务器的重定位,建议使用arptables
#!/bin/bash
# By Kevin Zou
VIP=x.x.x.x
RIP=y.y.y.y
arptables -F
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:1
学习linux的好的地方
http://www.linuxsir.org/bbs/forumdisplay.php?f=61

Rank: 5Rank: 5

帖子
11938
主题
627
精华
1
可用积分
5046
专家积分
10
在线时间
855 小时
注册时间
2005-05-27
最后登录
2012-02-06
论坛徽章:
0
发表于 2009-01-15 12:40:42 |显示全部楼层
感谢!
執法必嚴違法必究大隊隊長

Rank: 1

帖子
2062
主题
136
精华
3
可用积分
452
专家积分
0
在线时间
242 小时
注册时间
2006-11-06
最后登录
2011-12-22
论坛徽章:
0
发表于 2009-01-15 12:49:35 |显示全部楼层
谢谢 支持 ~~~

Rank: 1

帖子
154
主题
40
精华
0
可用积分
206
专家积分
0
在线时间
162 小时
注册时间
2007-11-12
最后登录
2011-11-09
论坛徽章:
0
发表于 2009-01-19 11:02:36 |显示全部楼层
谢谢楼主分享,对我很有帮助。

Rank: 3Rank: 3

帖子
905
主题
3
精华
0
可用积分
2411
专家积分
15
在线时间
3955 小时
注册时间
2007-04-13
最后登录
2011-12-15
论坛徽章:
0
发表于 2009-01-19 11:11:35 |显示全部楼层
支持....
您需要登录后才可以回帖 登录 | 注册

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP