LVS + Keepalived 之DR实现

[不指定 2008/09/19 17:25 | by askwan ]
LVS原理可以看章博士的文章,Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现

OS:   CentOS5.2/RHEL5.2
VIP:   129.0.3.236
LoadBalance :   129.0.3.230
BackUP:   129.0.3.231
RealServer1:   129.0.3.233
RealServer2:  129.0.3.234


1.  LoadBalance配置
设置

net.ipv4.ip_forward = 1


安装ipvsadm
下载地址:http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
如果编译错误,看时候做了内核的软连接 /usr/src/linux
然后 make && make install


配置lvs
依次执行:

ipvsadm –C
ipvsadm -A -t 129.0.3.236:80 -s wlc
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.233 -g
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.234 –g
或者执行这脚本
Quotation
#!/bin/sh
ipvsadm -C
ipvsadm -A -t 129.0.3.236:80 -s wlc
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.233 -g
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.234 -g


                                              
安装keepalived
下载地址:http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
编辑keepalived.conf

Quotation
./configure  --prefix=/you/path/ 
make && make install


lobal_defs {
   notification_email {
     askwan1@yahoo.com
   }
   notification_email_from askwan@yahoo.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        129.0.3.236
    }
}
virtual_server 129.0.3.236 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 129.0.3.233 80 {
        weight 1
        TCP_CHECK {
        connect_port 80
        connect_timeout 30
        }
    }
   real_server 129.0.3.234 80 {
        weight 1
        TCP_CHECK {
        connect_port 80
        connect_timeout 30
        }
    }
}


2.  BackUP主机配置
BackUP主机配置同上。
只需配置文件简单修改下
lobal_defs {
   notification_email {
     askwan1@yahoo.com
   }
   notification_email_from askwan@yahoo.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        129.0.3.236
    }
}
virtual_server 129.0.3.236 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 129.0.3.233 80 {
        weight 1
        TCP_CHECK {
        connect_port 80
        connect_timeout 30
        }
    }
   real_server 129.0.3.234 80 {
        weight 1
        TCP_CHECK {
        connect_port 80
        connect_timeout 30
        }
    }
}

启动keepalived
看系统实时日志查找出现问题

3.  Realserver配置
/etc/sysctl.conf
Quotation
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生效

lo地址绑定VIP
Quotation
ip addr add 129.0.3.236/32 dev lo

ip addr list 查看是否绑定争取

开启Realserver上httpd

4.  调试与测试

下面是捕获的日志信息
Quotation
Sep 12 05:32:58 server230 kernel: IPVS: Registered protocols (TCP, UDP, AH, ESP)
Sep 12 05:32:58 server230 kernel: IPVS: Connection hash table configured (size=4096, memory=32Kbytes)
Sep 12 05:32:58 server230 kernel: IPVS: ipvs loaded.
Sep 12 06:00:35 server230 kernel: IPVS: [wlc] scheduler registered.
Sep 12 06:00:38 server230 Keepalived: Starting Keepalived v1.1.15 (09/12,2008)
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Using MII-BMSR NIC polling thread...
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Netlink reflector reports IP 129.0.3.230 added
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Registering Kernel netlink reflector
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Registering Kernel netlink command channel
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Configuration is using : 11811 Bytes
Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Service already exists
Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Destination already exists
Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Destination already exists
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Activating healtchecker for service [129.0.3.233:80]
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Activating healtchecker for service [129.0.3.234:80]
Sep 12 06:00:38 server230 Keepalived: Starting Healthcheck child process, pid=10650
Sep 12 06:00:38 server230 Keepalived_vrrp: Using MII-BMSR NIC polling thread...
Sep 12 06:00:38 server230 Keepalived: Starting VRRP child process, pid=10651
Sep 12 06:00:38 server230 Keepalived_vrrp: Netlink reflector reports IP 129.0.3.230 added
Sep 12 06:00:38 server230 Keepalived_vrrp: Registering Kernel netlink reflector
Sep 12 06:00:38 server230 Keepalived_vrrp: Registering Kernel netlink command channel
Sep 12 06:00:38 server230 Keepalived_vrrp: Registering gratutious ARP shared channel
Sep 12 06:00:38 server230 Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
Sep 12 06:00:38 server230 Keepalived_vrrp: Configuration is using : 36198 Bytes
Sep 12 06:00:39 server230 Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(8,9)]
Sep 12 06:00:40 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 129.0.3.236

Sep 12 06:00:41 server230 Keepalived_healthcheckers: Netlink reflector reports IP 129.0.3.236 added
Sep 12 06:00:41 server230 avahi-daemon[8014]: Registering new address record for 129.0.3.236 on eth0.
Sep 12 06:00:41 server230 Keepalived_vrrp: Netlink reflector reports IP 129.0.3.236 added
Sep 12 06:00:42 server230 Keepalived_healthcheckers: Removing service [129.0.3.234:80] from VS [129.0.3.236:80]
Sep 12 06:00:42 server230 Keepalived_healthcheckers: Remote SMTP server [127.0.0.1:25] connected.
Sep 12 06:00:43 server230 Keepalived_healthcheckers: SMTP alert successfully sent.
Sep 12 06:00:46 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 129.0.3.236


红色表示的部分表面LoadBalance主机已经获得VIP的地址,进入MASTER状态,实现成功。

作者:askwan@『AskWan』
地址:http://www.askwan.com/post/108/
可以转载,转载时请以链接形式注明作者和原始出处及本声明!

Tags: , ,
Architecture & HA | Comments(0) | Trackbacks(0) | Reads(1517)
收藏到网摘:百度搜藏 Google书签 Yahoo收藏 新浪ViVi收藏夹 365天天网摘 天极网摘 我摘·网摘·网络书签 POCO网摘 和讯网摘 Bolaa博拉博客收录中心 天下图摘
Add a comment
Emots
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
Enable HTML
Enable UBB
Enable Emots
Hidden
Remember
Nickname   Password   Optional
Site URI   Email   [Register]