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上添加VIP  eth0: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.4  index.html  10.1.1.4
rs2:10.1.1.5  index.html  10.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
TCP  10.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。
 
 
 
 

本文出自 “理想CTO” 博客,谢绝转载!

你可能感兴趣的:(linux,LVS,keepalived,职场,休闲)