lvs+keepalived实现LB热备实现网站高可用

在lvs高负载中,LB节点(也就是常说的DR)会存在单点问题;这里使用了keepalived来解决单点问题;实现冗余;

看图操作;

lvs+keepalived实现LB热备实现网站高可用

LB1:eth0:192.168.182.133  (vip:eth0:0 192.168.182.200)

LB2: eth0:192.168.182.138  (vip: eth0:0 192.168.182.200)

rs1: eth0:192.168.182.130  (vip: lo:0   192.168.182.200)

rs2: eth0:192.168.182.129  (vip: lo:0   192.168.182.200)

lvs模型为DR;

首先在两台rs1、rs2上进行操作;

1
2
3
4
5
6
7
8
9
10
11
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
service network restart
ifconfig lo:0 192.168.182.200 netmask 255.255.255.255 broadcast 182.168.182.200
route add -host 192.168.182.200 dev lo:0
yum install httpd -y
echo web1 > /var/www/html/index.html    #rs1标识web1
echo web2 > /var/www/html/index.html    #rs2标识web2
service httpd start

LB1、LB2上进行操作;

1
yum install ipvsadm keepalived httpd -y

LB1的上的keepalived配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
! Configuration File for keepalived
global_defs {
   notification_email {
    coffee_lanshan@sina.com
   }
   notification_email_from root@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_1
}
vrrp_instance VI_1 {
    state MASTER    #LB2为BACKUP
    interface eth0
    virtual_router_id 51
    priority 101       #LB2为100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass lansgg
    }
    virtual_ipaddress {
        192.168.182.200
    }
}
virtual_server 192.168.182.200 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
    real_server 192.168.182.130 80 {
        weight 2
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 1
        connect_port 80
        }
    }
    sorry_server 127.0.0.1 80
    real_server 192.168.182.129 80 {
        weight 2
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 1
        connect_port 80
        }
    }
}

LB1:

1
echo error:192.168.182.133 > /var/www/html/index.html  #此步为了测试错误展示页面

LB2:

1
echo error:192.168.182.138 > /var/www/html/index.html

LB1、LB2分别启动keepalived、httpd、ipvsadm

在LB1查看发现如下:

lvs+keepalived实现LB热备实现网站高可用

发现vip和ipvs规则已经添加;

下面进行测试;

lvs+keepalived实现LB热备实现网站高可用

我们停掉rs1的httpd服务

你会发现LB1的ipvs规则变化;并且进行页面测试;

lvs+keepalived实现LB热备实现网站高可用

现在你可以停掉LB1上的keepalived,vip会自动漂移到LB2上;服务及相关规则不受影响;

1
[root@LB1 ~]# /etc/init.d/keepalived stop

你发现vip由优先级为100的顶替了,也就是LB2

lvs+keepalived实现LB热备实现网站高可用

而我们的业务没有受到影响:

lvs+keepalived实现LB热备实现网站高可用

然后进行测试当停掉2台rs,看看vip显示的页面;

lvs+keepalived实现LB热备实现网站高可用

上图就相当于我们网站的错误提示页面;

欢迎大家更好的建议及补充;


本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1238530


上一篇:Linux之磁盘阵列技术详解(一)--raid0创建


下一篇:在支持ARC工程中编译不支持ARC的文件