Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1284907
  • 博文数量: 161
  • 博客积分: 10192
  • 博客等级: 上将
  • 技术积分: 2165
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 17:09
文章分类

全部博文(161)

文章存档

2012年(2)

2011年(13)

2010年(137)

2009年(5)

2008年(4)

我的朋友

分类: LINUX

2010-08-27 10:45:01

作者:NetSeek
(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接管。

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方案基本套件安装:
#yum install ipvsadm modcluster piranha system-config-cluster php php-cli php-common


4.配置文件介绍:
/etc/sysconfig/ha/lvs.cf     //由 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配置登陆密码.
输入用户名: piranha 及刚才设置的密码登陆.
通过WEB配置主LVS的信息
1. 配置主LVS
登陆后,选择Global Settings 这是对LVS的配置
Primary server public IP 输入公网IP:192.168.1.210,应用后按ACCEPT按钮保存设置。

2.配置备份LVS
 
在piranha页面的REDUNDANCY里,设置备份LVS的外IP:192.168.1.211,其余默认,确定。

3. 配置添加LVS( VIP信息)
设定虚拟服务器(Virtual Servers)
添加编辑虚拟服务器部分:(Virtual Server)名称:(任意取名);应用:http;协议: tcp;连接:80;地址:192.168.1.212; 子网掩码:255.255.255.0,装置:eth0:1; 重入时间:15 (预设);服务延时:6 (预设);加载监控工具:空(预设);调度策略:Weighted least-connections;持续性:空(预设); 持续性屏蔽: 空(预设);按下激活。

4.配置Realserver
点击”编辑”添加具体的Realsever信息.
实时服务器部分:(Real Servers); 添加编辑:名字:(任意取名); 地址:192.168.1.204; 权重:1 (预设) 按下激活。
另一real server同上,地址:192.168.1.205
5.控制/监控(Controls/Monitoring) 控制,上述内容设定完成后即可按开始键激活piranha.监控器:显示ipvsadm设定之routing table内容 可立即更新或定时更新。

6.启动LVS服务pulse
# /etc/init.d/pulse start
Starting pulse:                                            [  OK  ]

如果不报错,表示启动成功!到此LVS的服务器已经配置完成了启动两个程序
1、piranha-gui  是用来配置LVS的
2、pulse       是用来启动LVS的
   
7.备份LVS安装与配置
备份LVS安装同主LVS安装方法同样.
安装好后,将主LVS的lvs.conf拷贝到相应的目录下:
#scp  lvs.cf :/etc/sysconfig/ha/
# /etc/init.d/pulse start 启动服务即可.
8.配置Realserver
   
DR模式配置文件

#!/bin/bash
#description : start realserver
##LVS/DR控制器一样,广播地址设置为虚拟地址本身,子网掩码4255,不同的是,虚拟ip地址被绑定在环回(loopback)子接口,而不是物理接口的子接口。
##ARP一共四行,其目的是关闭arp响应
VIP=192.168.1.212
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac


Tunnel模式配置文件
#!/bin/bash
#description : start realserver
##LVS/DR控制器一样,广播地址设置为虚拟地址本身,子网掩码4255,不同的是,虚拟ip地址被绑定在环回(loopback)子接口,而不是物理接口的子接口。
##ARP一共四行,其目的是关闭arp响应
VIP=192.168.1.212
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig
tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig
tunl0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/
tunl0/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/
tunl0/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
  

正确配置,并启动服务.
9.    测试与日志分析.
# ipvsadm -ln    //查看LVS连接状态.
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     
# tail -f /var/log/messages

【注】服务切换测试:
停掉主LVS服务上的pulse查看master是否能正常接管.测试过程中多注
意分析日志.在Linuxtone网站编写heartbeat+lvs方案的时候还需要自己送一个arping命令告诉网关我的MAC发生变化了.
但是Piranha方案能自动送一个arp命令.

三.      LVS配置文件详解及相关技巧介绍
1.    lvs.conf 配置及详解:
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,你也可以自定义此端口)
     
     默认WEB界面是能过piranha账号登陆,如何创建自己定义的账号登陆呢?
  # htpasswd -c /etc/sysconfig/ha/conf/lvs.pass netseek     
// 上述命令是添加用户netseek,并将账号信息写入lvs.pass这个文件.  
     # vi /etc/sysconfig/ha/conf/httpd.conf
      
     # /etc/init.d/piranha-gui restart 重启服务即可生效.
     上述技巧只是简单的抛砖引玉,你可以修改WEB服务的PHP相关程序,添加一些流量
     或者WEB连接状态监控的代码.还可以自己给apache添加一些你自己写的模块,
     总之你可以再现有的piranha上做很多的改造去实   现你想要的更完美的系统.
     更多技巧请实时关注: 负载均衡版块.

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

一.相关参考文档
1.
2.  
3.

==================================
注意:
1。如果你用的是RHEL/Fedora版本,那么是无须启动ipvsadm服务的。首先通过piranha-gui服务启动web界面,配置lvs。 然后启动pulse服务就可以。
2.在负载均衡器上,为了获得更好的转发性能,硬件防火墙放在负载均衡器的前面,尽量不要使用主机防火墙。防火墙映射80端口,其余web及数据库均藏于防火墙之后'
3.LVS/DR模式下,防火墙后面的WEB服务器需要能通过硬件防火墙连通外网才行。

阅读(1072) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~