天天看点

用Piranha来实现WEB的负载均衡

简述:利用(LVS+Piranha)基于完整开源软件的架构可以提供一个简单的负载均衡及高可用的服务架构。LVS 集群采用 IP 负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率(在DR模式下),将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故 障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。

<a target="_blank" href="http://blog.51cto.com/attachment/201110/074125462.jpg"></a>

环境:CentOS 5.5  x64

lb01:  192.168.0.111

lb02:  192.168.0.112

VIP:   192.168.0.115

yum -y install piranha ipvsadm 

piranha-passwd   

/etc/init.d/piranha-gui start   

通过浏览器访问http://192.168.0.111:3636,单击”Login”,使用用户名piranha及刚刚设定的密码进行登录

注:在此界面下可以图形化配置,也可不启用此WEB界面,直接编辑配置文件来配置

vi /etc/sysconfig/ha/lvs.cf 

serial_no = 41 

#primary_private = 10.0.0.1 

service = lvs 

backup_active = 1 

backup = 192.168.0.112 

#backup_private = 10.0.0.2 

heartbeat = 1 

heartbeat_port = 539 

keepalive = 6 

deadtime = 18 

network = direct 

debug_level = NONE 

monitor_links = 1 

syncdaemon = 1 

virtual web_vip { 

active = 1 

address = 192.168.0.115 eth0:1 

vip_nmask = 255.255.255.255 

sorry_server = 127.0.0.1 

port = 80 

pmask = 255.255.255.255 

use_regex = 0 

load_monitor = none 

scheduler = rr 

protocol = tcp 

timeout = 6 

reentry = 15 

quiesce_server = 0 

server web01 { 

address = 192.168.0.113 

weight = 1 

server web02 { 

address = 192.168.0.114 

#开启路由转发功能

sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#'  /etc/sysctl.conf 

sysctl -p 

#启动piranha

/etc/init.d/pulse start 

登录WEB01、WEB02

WEB环境部署略

RealServer VIP启动脚本:

#!/bin/bash 

VIP=192.168.0.115 

/etc/rc.d/init.d/functions 

case "$1" in 

start) 

echo "start LVS of REALServer" 

for ((i=0; i&amp;lt;`echo ${#VIP[*]}`; i++)) 

do 

interface="lo:`echo ${VIP[$i]}|awk -F . '{print $4}'`" 

/sbin/ifconfig $interface ${VIP[$i]} broadcast ${VIP[$i]} netmask 255.255.255.255 up 

done 

echo "1" &amp;gt;/proc/sys/net/ipv4/conf/lo/arp_ignore 

echo "2" &amp;gt;/proc/sys/net/ipv4/conf/lo/arp_announce 

echo "1" &amp;gt;/proc/sys/net/ipv4/conf/all/arp_ignore 

echo "2" &amp;gt;/proc/sys/net/ipv4/conf/all/arp_announce 

;; 

stop) 

/sbin/ifconfig lo:110 down 

echo "close LVS Directorserver" 

#echo "0" &amp;gt;/proc/sys/net/ipv4/conf/lo/arp_ignore 

#echo "0" &amp;gt;/proc/sys/net/ipv4/conf/lo/arp_announce 

#echo "0" &amp;gt;/proc/sys/net/ipv4/conf/all/arp_ignore 

#echo "0" &amp;gt;/proc/sys/net/ipv4/conf/all/arp_announce 

*) 

echo "Usage: $0 {start|stop}" 

exit 1 

esac 

chmod 700 /root/scripts/lvs_sh 

#启动VIP

/root/scripts/lvs.sh start 

在lb01上查看:

[root@lb01 ~]# ipvsadm -Ln 

IP Virtual Server version 1.2.1 (size=4096) 

Prot LocalAddress:Port Scheduler Flags 

-&amp;gt; RemoteAddress:Port           Forward Weight ActiveConn InActConn 

TCP  192.168.0.115:80 rr 

-&amp;gt; 192.168.0.114:80             Route   1      0          0 

-&amp;gt; 192.168.0.113:80             Route   1      2          0 

到此Piranha负载均衡部署完毕,做测试即可!

PS:以上只是一个简单的部署,目的是为了与大家分享此负载均衡方法与思路!!!

———————————————–

serial_no = 41                #序号

primary = 192.168.0.112       #主LVS的公网IP

#primary_private = 10.0.0.1   #内部ip地址,用于心跳检测

backup_active = 1             #是否有备份

backup = 192.168.1.211        #备份LVS的公网IP

#backup_private = 10.0.0.2

heartbeat = 1                 #是否开启心跳

heartbeat_port = 649          #心跳的UDP端口

keepalive = 6                 #心跳间隔(秒)

deadtime = 18                 #如果主 LVS 节点在deadtime(秒)后没有答复,那么备份 LVS 路由器节点就会发起失效转移。

network = direct              #LVS类型(direct,tunnel,nat),此处用direct类型

debug_level = NONE            #debug信息级别

monitor_links = 1             #是否开启realserver的监视功能,和后面的scheduler(调度算法)以及load_monitor相关

syncdaemon = 1

virtual web_vip {                        #虚拟服务的名称,可自定义. 可定义多个virtual lvs服务

active = 1                          #是否激活

address = 192.168.0.115 eth0:1      #虚拟服务所绑定的ip(vip)以及设备名

sorry_server = 127.0.0.1            #当rs全部失效时访问本机

vip_nmask = 255.255.255.255         #vip相对应的掩码

port = 80                           #虚拟服务的端口

persistent = 30                     #使用持久稳固的服务时间

pmask = 255.255.255.255             #如果使用持久会话,设置子网掩码

use_regex = 0                       #expect中是否使用正则表达式

load_monitor = none                 #LVS 路由器能够使用 rup 或 ruptime 来监视各个真正服务器的载量。

scheduler = rr                      #LVS调度算法

protocol = tcp                      #虚拟服务使用的协议类型

timeout = 6                         #realserver失效后从lvs路由条目中移除realserver所必须经过的时间(秒)

reentry = 15                        #移除以后的realserver重新加入lvs路由条目所必须经过的时间(秒)

quiesce_server = 0

server web01 {                      #realsever服务名称,可自定义,在这里我使用主机名

address = 192.168.0.113         #realserver的ip地址

active = 1                      #是否激活

port = 80                       #rs端口

weight = 1                      #权重

}

server web02 {

address = 192.168.0.114

active = 1

port = 80

weight = 1

转载请注明: 转载自http://www.elain.org

本文转自 elain2012 51CTO博客,原文链接:http://blog.51cto.com/elain/701819

继续阅读