linux AS5在lvs+keepalived实现HA和load balancing
lvs说明:目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);十种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh,sed,nq)。
在调度器的实现技术中,IP负载均衡技术是效率最高的。在已有的IP负载均衡技术中有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation),大多数商品化的IP负载均衡调度器产品都是使用此方法,如Cisco的LocalDirector、F5的Big/IP和 Alteon的ACEDirector。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。
下面实验用keepalived 配合来做lvs中的DR模式和HA
实验环境
OS:redhat enterprise linux 5
VIP:10.1.1.1
dr1:10.1.1.2
dr2:10.1.1.3
rs1:10.1.1.4 (apache服务1)
rs2:10.1.1.5(apache服务2)
gw:10.1.1.254
软件:ipvsadm keepalived
一. dr1 和 dr2配置
1.安装好 ipvsadm 和 keepalived
2.在 /etc/keepalived 里添加一个keepalived.conf 文件默认是没有的,可用rpm -ql keepalived找到模板复制到/etc/keepalived修改即可。修改如下即可 (确保dr1和dr2的80端口是关闭的)
先做dr1的配置
vim keepalived.conf
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 200
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.1.1.2
}
}
virtual_server 10.1.1.2 80 {
delay_loop 6
lb_algo rr
lb_kind DR
# persistence_timeout 50
protocol TCP
real_server 10.1.1.4 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
real_server 10.1.1.5 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
}
dr2中的配置与dr1中的配置基本相同,只要修改两处即可,把state MASTER改成state BACKUP priority 调成小于200 即可,在这里dr1与dr2同在一个交换机上,再配合keepalived,也用不着做什么心跳线了。。
3.在dr1和dr2上添加VIPeth0:0 10.1.1.1
vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
BOOTPROTO=static
IPADDR=10.1.1.1
NETMASK=255.255.255.0
ONBOOT=yes
GATEWAY=10.l.1.254
当然还在加arp广播屏蔽
在 /etc/sysctl.conf 添加
net.ipv4.ip_forward=1
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.rp_filter=1
在dr1和dr2的eth0中也要设置网关。用命令sysctl -p使立即生效。
二.配置 rs1 和rs2
1.apache 安装与配置不多说,在默认页面
rs1:10.1.1.4index.html10.1.1.4
rs2:10.1.1.5index.html10.1.1.5
2.在 /etc/sysctl.conf添加
net.ipv4.ip_forward=0
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
用命令sysctl -p使立即生效。
3.修改 /etc/network/interfaces 固定IP 和 轮循lo:0
vi /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
BOOTPROTO=static
IPADDR=10.1.1.1
NETMASK=255.255.255.0
ONBOOT=yes
GATEWAY=10.l.1.254
三.测试
在 dr1 和 dr2 上启动服务~
/etc/init.d/keepalived start
然后在浏览器上 输入 10.1.1.4 显示 10.1.1.4
在打开一个浏览器输入 10.1.1.5 显示10.1.1.5
说明 lvs工作正常
在dr上执行watch ipvsadm -ln
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP10.1.1.1:80 rr
-> 10.1.1.4:80 Route 1 0 0
-> 10.1.1.5:80 Route 1 0 0
然后把 停掉 10.1.1.5的服务
只显示有 10.1.1.4``说明`` keepalived 工作正常
然后再把dr1停掉,在/var/log/messages中可看到服务已转向BACKUP那台,当dr1这台MASTER正常工作后,它就立马收回自己的权限,dr2就又在等待。
注:MASTER总是会抢BACKUP的服务的,在能在有的时候当MASTER坏掉时,BACKUP接替工作下常运行,可当MASTER一正常,它就会去抢BACKUP的服务,这势必会造成有时请求连接的不正常,为避免这种情况,可将MASTER也修改为
BACKUP并再添加nopreempt
上述IP只是在实验中测试使用,在真实环境中,所有的IP地址必须都是公网IP。
页:
[1]