用LVS在Linux上搭建负载均衡集群服务
注:永久修改要修改sysctl.conf
如果想开机保证能运行,需要在/etc/rc.local添加以下内容:
/etc/init.d/ipvsadm restart //确保ipvsadm启动/etc/init.d/ipvsadm load /etc/ipvsadm.rules //加载规则echo "1" >/proc/sys/net/ipv4/ip_forward //开启ip转发
2.分别启动web服务
这里用的是resin-3.1.9,并对resin的首页进行了修改,使得可以分清具体访问的是哪个服务器。
?通过以下指令启动LB和BLB下的keepalived服务:
/etc/init.d/keepalived start
通过以下指令可查看启动情况:
tail -f /var/log/messages
若启动成功会出现以下相似信息:
Feb 24 22:53:57 debian kernel: [ 876.649352] IPVS: sync thread started: state = MASTER, mcast_ifn = eth0, syncid = 51Feb 24 22:53:58 debian Keepalived_vrrp: VRRP_Instance(VI_2) Transition to MASTER STATEFeb 24 22:53:58 debian Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATEFeb 24 22:53:59 debian Keepalived_vrrp: VRRP_Instance(VI_2) Entering to MASTER STATEFeb 24 22:53:59 debian Keepalived_vrrp: VRRP_Group(VG1) Syncing instances to MASTER STATEFeb 24 22:53:59 debian Keepalived_vrrp: VRRP_Instance(VI_1) Entering to MASTER STATE
另外通过ip a命令可反应keepalived启动成功,分别在MASTER和BACKUP上运行ip a命令,会看到192.168.56.254和192.168.0.1出现在MASTER上,而不会出现在BACKUP上。
# Configuration File for keepalived?global_defs { #每个load balancer 都有一个不同的ID lvs_id lvs01}?#这个是外网网段的VRRP实例vrrp_instance VI_1 { state MASTER interface eth0? #每个virtual_router_id都要唯一 virtual_router_id 51? #这个是MASTERT和BACKUP服务器竞争的优先级,习惯MASTERT大于BACKUP priority 150? #检测间隔,默认1s advert_int 1? #这是两个服务器的同步验证,有PASS和AH两种方式 authentication { auth_type PASS auth_pass 1111 }? #这里指定VIP当MASTER和BACKUP切换时,这些IP会添加到相应服务器上 virtual_ipaddress { 192.168.56.254 #这个是我们上面说的VIP #如果有多个,可以继续添加 }}?#下面添加LVS的转发规则#注意:这里的virtual_server的端口跟real_server的端口必须相同virtual_server 192.168.56.254 8080 { delay_loop 6? #调度规则,这里用rr指轮询方式 lb_algo rr? #这里是负载均衡的方式,我们基于DR方式 lb_kind DR? #这是对真实服务器健康检查的方式,这里用TCP方式 protocol TCP? real_server 192.168.56.4 8080 {? #真实服务器的优先级 weight 1? #用TCP方式检查 TCP_CHECK { connect_timeout 3 #连接超时时间 } }? real_server 192.168.56.5 8080 { weight 1 TCP_CHECK { connect_timeout 3 } }}
BLB上的keepalived.conf文件配置:
跟LB上的配置几乎一样,只需要修改以下几点:
1.lvs_id改为lvs02
2.state改为BUCKUP
3.priority改为100,只要比MASTER小就可以。
?配置RS服务器在RS服务器上必须把VIP加到lo上,运行以下命令,或在/etc/network/interfaces文件里配置。
ifconfig lo:0 192.168.56.254 broadcast 192.168.56.254 netmask 255.255.255.255 up?测试
跟NAT模式的测试一样,不过与/proc/sys/net/ipv4/ip_forward里的值无关