lvs/DR模式+keepalived实现负载集群高可用架构

lvs+keepalived实现负载集群高可用架构

keepalived工作原理和配置说明

keepalived是什么

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个 backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当 backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

VRRP是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台

VRRP是一种路由容错协议,也可以叫做备份路由协议

VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)是一种容错协议

 

服务环境搭建

实验主机环境介绍:

主机使用版本 : redhat rhe6.5

iptables stop  以及 selinux  disablesl

主机ip :172.25.254.79

MASTER: wyx1 :172.25.79.1 

Realserver1   :wyx2 : 172.25.79.2 vip 172.25.79.111 (仅对同一WLAN用户开放)

Realserver1   :wyx3:  172.25.79.3 vip 172.25.79.111 (仅对同一WLAN用户开放)

BACKUP :  wyx4 :172.25.79.4

 

 

wyx1 配置

下载keepalived安装包并进行减压

root@wyx1 /]# tar zxf keepalived-2.0.6.tar.gz

[root@wyx1 /]# cd /keepalived-2.0.6(必须在此目录中,才能进行如下操作)

安装 openssl-devel 

[root@wyx1 ~]# yum install -y openssl-devel

lvs/DR模式+keepalived实现负载集群高可用架构_第1张图片

编译软件

[root@wyx1 keepalived-2.0.6]# ./configure --with-init=SYSV

[root@wyx1 keepalived-2.0.6]# ./configure --with-init=SYSV  --prefix=/usr/local/keepalived

[root@foundation79 Desktop]# make&&make install

lvs/DR模式+keepalived实现负载集群高可用架构_第2张图片

设置权限

[root@wyx1 keepalived-2.0.6]# chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

设置软链接

[root@wyx1 init.d]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/

[root@wyx1 init.d]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived/etc/sysconfig/

[root@wyx1 init.d]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

[root@wyx1 init.d]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

lvs/DR模式+keepalived实现负载集群高可用架构_第3张图片

设置开机自启

[root@wyx1 keepalived-2.0.6]# chkconfig keepalived on

[root@wyx1 keepalived-2.0.6]# chkconfig keepalived --list
keepalived         0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@wyx1 keepalived-2.0.6]# /etc/init.d/keepalived start
Starting keepalived:

查看进程 。开启keepalived 服务后会开启3个进程

[root@wyx1 keepalived-2.0.6]# ps -ef |grep keepalived
root       932     1  0 21:41 ?        00:00:00 keepalived -D      父进程:内存管理,子进程管理等等
root       935   932  0 21:41 ?        00:00:00 keepalived -D    子进程:VRRP子进程
root       936   932  0 21:41 ?        00:00:00 keepalived -D    子进程:healthchecker子进程

配置keepalived 文件

global_defs {                          ##全局定义
   notification_email {             ##邮件
         root@localhost
}

##notification_email指定keepalived在发生事件(切换),需要发送email到的对象。可以有多个,每行一个

##指定keepalived在发送事件(切换),需要发送email到的对象。可以有多个。在下添加

   notification_email_from keepalived@localhost  
   smtp_server 127.0.0.1                     ##指定发送email的smtp服务器
   smtp_connect_timeout 30              ##指定时间为30秒
   router_id LVS_DEVEL                     ##负载均衡标示
}

vrrp_instance示例配置

主要定义vrrp_sync_group里面的每个组的漂移 IP等

vrrp_instance VI_1 {
    state MASTER                             ##指定instance的初始化状态,当2台装有keepalived的机子开启时,会发生竞争,master 为主backup为辅

    interface eth0                         ##绑定的网卡
    virtual_router_id 51                    ##vrid 标示
    priority 100                                 ##prioity等级为100,master要比backup高最少50
    advert_int 1                                ##检查间隔,默认1S
    authentication {                         ##设置认证
        auth_type PASS                      ##认证方式为PASS或者AH
        auth_pass 1111                      ## 认真的密码
    }
    virtual_ipaddress {
        172.25.79.111             ##指定飘逸地址,
    }
}

虚拟服务块配置

    virtual server IP port

virtual_server 172.25.79.111 80 {          ##服务vip以及服务端口
    delay_loop 6                                       ##延时时间
    lb_algo rr                                     ##lvs调度算法   为轮询
    lb_kind DR                                   ##lvs的集群模式为DR
    #persistence_timeout 50           ##会话保持时间
    protocol TCP                               ##所用协议为TCP

    real_server 172.25.79.2 80 {        
        weight 1                                        ##默认为1,0为失效
           TCP_CHECK {                           ##tcp方式的健康检查
            connect_timeout 3                  
            retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.79.3 80 {
        weight 1
           TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }

wyx4与wxy1 类似
只需要改变

vrrp_instance VI_1 {
    state BACKUP                            ##指定instance的初始化状态,当2台装有keepalived的机子开启时,会发生竞争,master 为主backup为辅

    interface eth0                         ##绑定的网卡
    virtual_router_id 51                    ##vrid 标示
    priority 50                                 ##prioity等级为100,master要比backup高最少50
    advert_int 1                                ##检查间隔,默认1S
    authentication {                         ##设置认证
        auth_type PASS                      ##认证方式为PASS或者AH
        auth_pass 1111                      ## 认真的密码
    }
    virtual_ipaddress {
        172.25.79.111             ##指定飘逸地址,
    }
}

WYX2 配置

安装http服务

[root@wyx2 ~]# yum install httpd -y

编辑默认发布目录

[root@wyx2 ~]# cat /var/www/html/index.html

www.wyx.org: wyx2

启动http服务

[root@wyx2 ~]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.79.2 for ServerName
                                                           [  OK  ]

添加vip

[root@wyx2 ~]# ip addr add 172.25.79.111/24 dev eth0

[root@wyx2 ~]# ip addr
1: lo: mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:77:c2:f5 brd ff:ff:ff:ff:ff:ff
    inet 172.25.79.2/24 brd 172.25.79.255 scope global eth0
    inet 172.25.79.111/24 scope global secondary eth0
    inet6 fe80::5054:ff:fe77:c2f5/64 scope link
       valid_lft forever preferred_lft forever

 

对外隐藏vip

[root@wyx2 ~]# arptables -A IN -d 172.25.79.111 -j DROP

[root@wyx2 ~]# arptables -A OUT -s 172.25.79.111 -j mangle --mangle-ip-s 172.25.79.2

保存修改

[root@wyx2 ~]# /etc/init.d/arptables_jf save

wyx 3与wyx2类似

只需要更改http的默认发目录内容

安装http服务

[root@wyx3 ~]# yum install httpd -y

编辑默认发布目录

[root@wyx3 ~]# cat /var/www/html/index.html

www.wyx.org: wyx3

 

测试

wyx1   MAC:  52:54:00:d7:33:0f

wyx2   MAC: 52:54:00:77:c2:f5

wyx3   MAC: 52:54:00:e6:31:59

wyx4   MAC: 52:54:00:0f:0c:31

负载均衡及健康检测测试

[root@foundation79 Desktop]# for i in {1..10};do curl 172.25.79.111;done

lvs/DR模式+keepalived实现负载集群高可用架构_第4张图片

当关闭 wyx2 上的http服务时

如下图该服务健康检测到wyx2http已经停止则不输出wyx2,之间输入wyx3的http默认发布目录

lvs/DR模式+keepalived实现负载集群高可用架构_第5张图片

高可用测试:

主备机器都开启时:

由图得,对比MAC地址发现此时发挥作用的是主机wyx1

lvs/DR模式+keepalived实现负载集群高可用架构_第6张图片

此时wyx1的ip情况为

vdip已经自动添加

lvs/DR模式+keepalived实现负载集群高可用架构_第7张图片

备机wyx4

vdip没有添加

lvs/DR模式+keepalived实现负载集群高可用架构_第8张图片

当主机wxy1的keepalived停止

由图得,对比MAC地址发现此时发挥作用的是备机wyx4

lvs/DR模式+keepalived实现负载集群高可用架构_第9张图片

查看主机wyx1的ip

刚才的vdip已经不存在

lvs/DR模式+keepalived实现负载集群高可用架构_第10张图片

查看备机wyx4的ip

发现vdip已经添加

lvs/DR模式+keepalived实现负载集群高可用架构_第11张图片

总结:lvs+keepalived可以实现对于服务的负载均衡以及健康检查 和 高可用

 

你可能感兴趣的:(lvs/DR模式+keepalived实现负载集群高可用架构)