LVS(Linux Virtual Server)
工作模式:
1)Virtual server via NAT(VS-NAT)
LVS 的可能会成为一个系统瓶颈问题
2)Virtual server via IP tunneling(VS-TUN)
3)Virtual Server via Direct Routing(VS-DR)
LVS 的VIP 和 realserver 必须在同一个网段
所有的realserver 都必须绑定VIP的IP地址
Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户。
1. yum -y install ipvsadm piranha
(1/5): ipvsadm-1.26-2.el6.x86_64.rpm
(2/5): php-5.3.3-27.el6_5.x86_64.rpm
(3/5): php-cli-5.3.3-27.el6_5.x86_64.rpm
(4/5): php-common-5.3.3-27.el6_5.x86_64.rpm
(5/5): piranha-0.8.6-4.el6_5.2.x86_64.rpm
安装成功
[root@***~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
2. vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 #把原来的0改成1
sysctl -p
3. 设置piranha的管理密码
piranha-passwd
New Password:123456
4. /etc/init.d/piranha-gui start
http://IP:3636/
login:piranha/123456
####/usr/sbin/httpd -f /etc/sysconfig/ha/conf/httpd.conf
####cat /etc/sysconfig/ha/lvs.cf
测试环境
lvs-1服务器:192.168.19.9
lvs-2服务器:192.168.19.10 (作为内网的转发IP 点)
VIP:192.168.19.11 (真实的对外网的IP,给用户访问的IP)
Real server:
192.168.19.194和192.168.19.195安装了httpd服务。
1. vim /etc/hosts
192.168.19.9 lvs-1
192.168.19.10 lvs-2
2.http://IP:3636/
1> 主服务器信息配置 , 点击菜单:GLOBAL SETTINGS
Primary server public IP:192.168.19.9 主服务器用于与应用服务器(Real Server)连接的IP。
Primary server private IP:192.168.19.9 主服务器用于与备用服务器连接的心跳IP。
TCP timeout (seconds):300
TCP FIN timeout (seconds):15 这是处于TIME_WAIT状态的连接在回收前必须等待的最小时间。改小它可以加快回收(默认值为 60 )
UDP timeout (seconds):300
Use Network Type:tunnel 所选用的LVS模式。
2> 单击"REDUNDANCY" 后通过单击"ENABLE"来启用备用LVS服务器。
Redundant server public IP: 192.168.19.10 备用服务器用于与主服务器连接的心跳IP
Heartbeat interval (seconds): 6 备用服务器对主服务器进行心跳检测的轮询时间
Assume dead after (seconds): 18 如果主服务器在指定时间内没有恢复心跳,则宣告服务器失效并进行接管
Heartbeat runs on port: 539 使用心跳来检测所使用的端口
Monitor NIC links for failures: 选中 是否检测网卡的连接状态
Use sync daemon: 开启LVS 状态同步
Sync daemon interface:
Sync daemon ID:
3> 单击"VIRTUAL SERVERS"进行服务器集群配置,单击"ADD"添加一个虚拟服务器
Name:定义虚拟服务器的名称。
Application port:指定此目标应用服务的端口。
Protocol:目标应用服务的网络协议,TCP或UDP。
Virtual IP Address:定义目标应用所使用的虚拟IP。
Virtual IP Network Mask:定义目标应用所使用的虚拟IP的子网掩码。
Firewall Mark:当目标应用要使用多个IP端口时,结合IPTABLE设定防火墙标记。
Device:虚拟IP所挂接的网卡设备名。
Re-entry Time:当发现一个Real Server故障后,LVS Route对这个Server的检测间隔时间。
Server timeout:LVS Route对Real Server发送指令后,若超过此时间没有响应则认为服务器发生故障。
Quiesce server:一旦有Real Server加入或恢复,则所有负载队列记录均归"0"并重新进行分配。
Load monitoring tool:在Real Server中通过ruptime或rup命令获得系统负载,以结合相应用的Scheduling算法进行调度计算。
Scheduling:此虚拟服务器使用的调度算法。
Persistence:同一客户端长连接的保持时间。
Persistence Network Mask:长连接保持的子网掩码(网段)范围。
Load monitoring tool要求Real Server安装有ruptime或rup,并要求LVS服务器可以使用root账号在不需要密码的情况下通过SSH连接到Real Server。
Scheduling中包括以下8种调度策略:
Round-Robin Scheduling:轮询策略,IP分发时逐个地对Real Server进行轮询。
Weighted Round-Robin Scheduling:加权轮询策略,配合权值进行轮询策略计算。
Least-Connection:最小连接优先策略,将新的IP请求分发到访问队列较短的Real Server。
Weighted Least-Connections:加权最小连接优先策略,配合权值进行最小连接优先策略计算。
Locality-Based Least-Connection Scheduling:以下简称LBLCS,根据目标IP地址找出最近使用的服务器,若该服务器可用并且没有超载(系统压力未达到一半),就将请求发送到该服务器,否则使用最小连接优先策略。此策略主要针对的是Cache网关服务器。
Locality-Based Least Connections with Replication Scheduling:与LBLCS类似,在LBLCS的基础上加入复制调度策略,使得"热门"网站使用时尽量Cache在同一台网关服务器中,进一步避免了在多台服务器中保存相同的Cache信息。此策略主要针对的边是Cache网关服务器。
Destination Hashing Scheduling:通过对目标地址的Hash计算来确定目标服务器。此策略主要针对的是Cache网关服务器。
Source Hashing Scheduling:通过对源地址的Hash计算来确定目标服务器。此策略主要针对的是Cache网关服务器。
4> 单击"REAL SERVER"并通过单击"ADD"来添加两个Real Server。
Weight:设置此Real Server的权值,当各Real Server的性能不相同时可设定性能较高的服务器得到较高的权值。
5> 再次单击"REAL SERVER",依此选中两个Real Server并分别单击"(DE)ACTIVATE",将两个Real Server的状态设置为"UP"。
6> 单击"MONITORING SCRIPTS",配置LVS使之检查Real Server中对目标应用的规则,这里我选“blank expect”。
Sending Program:通过程序实现Real Server中对应用服务可用性的判断(不能与Send同时使用)。
Send:直接通过VIRTUAL SERVER中指定的端口发送指令。
Expect:Sending Program或Send后的返回值,如果与此返回值匹配,则表明此应用服务在当前Real Server中运行正常。
Treat expect string as a regular expression:将Expect中的值作为正则表达式与返回值进行比对。
注意:
此处的功能主要用于判断Real Server中的目标服务运行是否正常,如果发现服务失效,则主动在此VIRTUAL SERVER中隔离该Real Server。
至此,LVS服务配置完成。通过Piranha进行配置实际上就是修改/etc/sysconfig/ha/lvs.cf文件。
7> real server 配置
在2台real server中运行以下指令,通过iptables实现Real Server的目标地址重定向:
iptables -t nat -A PREROUTING -p tcp -d 192.168.19.11 --dport 80 -j REDIRECT
etc/init.d/iptables save
chkconfig iptables on
8> 在server1及server2中分别通过以下指令启动或停止LVS服务:
/etc/init.d/pulse start
停止LVS服务
/etc/init.d/pulse stop
自动启动LVS服务
chkconfig pulse on
9> 监控
ipvsadm