`
jack_boy
  • 浏览: 135354 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LVS+keepalived配置备忘

阅读更多
LVS + keepalived实现负载均衡的文档很多,这里不再重复说明,只记录在配置过程中容易忘记的地方。
1. 确保IP转发功能开启
# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1

方法有三种
  1)sysctl net.ipv4.ip_forward=1
  2) echo "1" > /proc/sys/net/ipv4/ip_forward
  3) 修改sysctl.conf, net.ipv4.ip_forward = 1, 执行sysctl -p命令

2. virtual ip的配置
  keepalived 采用RD转发模式
  测试拓扑结构
                 linux director
                 ip:192.168.1.199
                vip:192.168.1.210
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
          |                          |
real server                    real server
ip: 192.168.1.13               ip: 192.168.1.14
vip: 192.168.1.210             vip: 192.168.1.210

lvs客户端也就是real server的vip,要和linux director的vip保持一致
lvs-real.sh
#!/bin/bash
VIP=192.168.1.210
/etc/rc.d/init.d/functions
case "$1" in
start)
       ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
       /sbin/route add -host $VIP dev lo:0
       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig lo:0 down
       route del $VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0


linux director上keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        #huaying@staff.sina.com.cn
   }
   #notification_email_from Alexandre.Cassen@firewall.loc
   #smtp_server 127.0.0.1
   #smtp_connect_timeout 30
   router_id LVS_DEVEL
}

virtual_server 192.168.1.210 80 {
   delay_loop 3
   lb_algo rr
   lb_kind DR
   persistence_timeout 120
   protocol TCP

   real_server 192.168.1.13 80 {
     weight 100
     TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
     }
   }

   real_server 192.168.1.14 80 {
     weight 100
     TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
     }
   }
}


说明:由于是测试lvs负责均衡功能,没有配置vrrp_instance,在实际应用中,可以配置双linux director。所以在linux director上手工添加vip:192.168.1.210,可以使用如下方法
# ip addr add 192.168.1.210 dev eth0


3. keepalived DR转发模式,需要将real server的ip与virtual ip设定在同一个网段

4. linux director 需要安装ipvsadm,当ipvsadm启动后可以查看它是否被加载
# lsmod | grep ip_vs
ip_vs                  94742  5 

#lpvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.210:80 rr persistent 120
  -> 192.168.1.13:80              Route   100    0          0         
  -> 192.168.1.14:80              Route   100    0          0   


5. 如果配置都正确,需要考虑是否将ipvs框架编译进keepalived
6. 如还不行,考虑其它原因


二. NAT转发模式的配置
1. linux director需要两块网卡,一块对外提供服务,一块对内作为转发用,对内ip作为real server的网关
2. real server 不需要配置成lvs客户端,只要将网关配置为linux director的对内ip即可
3. 如果开启了iptables,请注意调整iptables FORWARD链的规则


参考:
1. lvs + keepalived 系统架构测试
2. Keepalived+LVS-DR模式配置高可用负载均衡集群
3.Linux Virtual Server Tutorial
4. The Keepalived Solution
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics