实验平台 : 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)的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接管。 piranha.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 1gs.png 2.配置备份LVS 2backuplvs.png 3. 配置添加LVS( VIP信息) VS3.png 4.配置Realserver rsa4.png 点击”编辑”添加具体的Realsever信息. rsa5.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 启动服务即可. 绑定vip #ifconfig eth0:1 192.168.2.212 netmask 255.255.255.0 borcast 192.168.2.255 7.配置Realserver DR模式配置文件 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 注意:上面的语句只是临时关闭。服务器重新启动以后设置就自动消失了。 如果需要让设置长时间有效那么,进行如下操作: # vi /etc/sysctl.conf net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.tunl0.arp_ignore = 1 net.ipv4.conf.tunl0.arp_announce = 2 正确配置,并启动服务. 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 log.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,你也可以自定义此端口) port.png 默认WEB界面是能过piranha账号登陆,如何创建自己定义的账号登陆呢? 1. # htpasswd -c /etc/sysconfig/ha/conf/lvs.pass netseek 复制代码 // 上述命令是添加用户netseek,并将账号信息写入lvs.pass这个文件. # vi /etc/sysconfig/ha/conf/httpd.conf auth.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 (责任编辑:IT) |