互联网架构路途

集群 --- LVS + Keepalived

2016-11-11  本文已影响314人  月白白222

1、LVS Keepalived 集群的组成

LVS(linux virtual server,linux 虚拟服务器),由以下三部分组成:

LVS_Keepalived_组成.png

2、IPVS 的简单介绍

IPVS: 安装于 Director Server 上,并在 Director Server 上虚拟出一个 VIP(Virtual IP)。用户的访问请求通过 VIP 到达负载调度器,然后由负载调度器从 Real Server 列表中选取一个服务节点响应用户的请求。

2.1、IPVS 转发请求的 3 种方式:
2.2、IPVS 的负载调度算法:

上面我们谈到,负载调度器是根据各个服务器的负载情况,动态地选择一台 Real Server 响应用户请求,那么动态选择是如何实现呢,其实也就是我们这里要说的负载调度算法,根据不同的网络服务需求和服务器配置,IPVS 实现了如下八种负载调度算法,这里我们详细讲述最常用的四种调度算法,剩余的四种调度算法请参考其它资料。

3、keepalived 的原理的简单介绍:

VRRP (Virtual Router Redundancy Protocol,虚拟路由器冗余协议): 在现实的网络环境中,主机之间的通信都是通过配置静态路由(默认网关)完成的,而主机之间的路由器一旦出现故障,通信就会失败,因此,在这种通信模式中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了 VRRP 协议。

VRRP 可以将两台或多台物理路由器设备虚拟成一个虚拟路由器,每个虚拟路由器都有一个唯一标识,称为 VRID,一个 VRID 与一组 IP 地址构成了一个虚拟路由器。这个虚拟路由器通过虚拟IP(一个或多个)对外提供服务。而在虚拟路由器内部,同一时间只有一台物理路由器对外提供服务,这台物理路由器被称为主路由器(处于 MASTER 角色)。而其他物理路由器不拥有对外的虚拟 IP,也不提供对外网络功能,仅仅接收 MASTER 的 VRRP 状态通告信息,这些路由器被统称为备份路由器(处于 BACKUP 角色)。当主路由器失效时,处于 BACKUP 角色的备份路由器将重新进行选举,产生一个新的主路由器进入 MASTER 角色继续提供对外服务,整个切换过程对用户来说完全透明。

Keepalived 作为一个高性能集群软件,它还能实现对集群中服务器运行状态的监控及故障隔离。下面继续介绍下 Keepalived 对服务器运行状态监控和检测的工作原理。

Keepalived 工作在 TCP/IP 参考模型的第三、第四和第五层,也就是网络层、传输层和应用层。根据 TCP/IP 参考模型各层所能实现的功能,Keepalived运行机制如下:

4、安装配置 load balance 层主机

4.1、安装规划:

IP 地址规划:

4.2、安装 lvs 管理软件

注1:

以下操作在 lvs_master_dr(192.168.135.42)上进行

下载链接:

http://www.linuxvirtualserver.org/software/ipvs.html

检查主机内核版本

]# uname -r
2.6.32-642.el6.x86_64

根据内核对应关系,下载 ipvsadm-1.26 版本

]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz -P /usr/local/src/

安装依赖环境

]# yum install 'gcc' 'kernel-devel' 'libnl-devel' 'openssl-devel' -y
]# yum install 'popt-devel' 'popt-static' -y

编译安装

]# cd /usr/local/src/
]# tar -xzvf ipvsadm-1.26.tar.gz
]# cd ipvsadm-1.26
]# make && make install

注2:

也可以直接使用 yum 进行安装

]# yum install ipvsadm -y
4.3、安装 keepalived

下载链接:

http://www.keepalived.org/download.html

下载:

]# wget http://www.keepalived.org/software/keepalived-1.2.20.tar.gz -P /usr/local/src/

安装依赖环境

]# yum install libnfnetlink-devel -y

编译安装:

]# cd /usr/local/src/
]# tar -xzvf keepalived-1.2.20.tar.gz 
]# cd keepalived-1.2.20
]# ./configure --prefix=/usr/local/keepalive --with-kernel-dir=/usr/src/kernels/2.6.32-573.el6.x86_64/
]# make && make install

注:

--with-kernel-dir: 这个参数并不是要把 Keepalived 编译进内核,而是指定使用内核源码中的头文件,即 include 目录。只有在使用 LVS 时,才需要用到 --with-kernel-dir 参数,其他时候是不需要的。

环境调整:

]# ln -s /usr/local/keepalive/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
]# ln -s /usr/local/keepalive/etc/sysconfig/keepalived /etc/sysconfig/
]# mkdir /etc/keepalived
]# ln -s /usr/local/keepalive/etc/keepalived/keepalived.conf /etc/keepalived/
]# ln -s /usr/local/keepalive/sbin/keepalived /usr/sbin/

]# vim /etc/profile
export PATH=$PATH:/usr/local/keepalive/sbin:/usr/local/keepalive/bin
]# source /etc/profile
4.5、配置 keepalived
4.5.1、备份配置文件
]# cd /usr/local/keepalive/etc/keepalived/
]# cp keepalived.conf keepalived.conf_`date +%F`.bak
4.5.2、配置文件的整体说明

Keepalived 的配置文件都是以块(block)的形式组织的,每个块的内容都包含在 {} 中,以 #! 开头的行都是注释。

根据配置文件所实现的功能,将 Keepalived 配置分成三类,分别是:

4.5.3、全局配置

全局配置就是对整个 Keepalived 都生效的配置,基本内容如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
}

全局配置以 global_defs 作为标识,在 global_defs 区域内的都是全局配置选项,其中:

4.5.4、VRRPD 配置

VRRP 实例的配置,也就是配置 Keepalived 的高可用功能。VRRP 实例段主要用来配置节点角色(主或从)、实例绑定的网络接口、节点间验证机制、集群服务IP等。下面是实例 VI_1 的一个配置样例。

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.135.46
    }
}

以上 VRRP 配置以 vrrp_instance 作为标识,在这个实例中包含了若干配置选项,分别介绍如下:

virtual_server 192.168.135.46 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 120
    protocol TCP

    # sorry_server 192.168.200.200 1358

    real_server 192.168.135.44 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    
    real_server 192.168.135.45 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

下面介绍每个选项的含义。

健康检测段允许多种检查方式,常见的有 HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK。此处使用的为 TCP_CHECK,下面介绍每个选项的含义:

注:

在安装配置 lvs_backup_dr 主机时,步骤与上面完全一致,只是在修改 Keepalived 配置文件时,有两点不一样

state MASTER --> BACKUP
priority 100 --> 90
4.5.5、启动 keepalived
]# /etc/init.d/keepalived start
4.6、安装配置 real server 层主机
4.6.1、安装配置 Apache 服务
]# yum install httpd

# 配置一个首页,填写 real server 主机实际地址,以便在后期测试过程中标识主机
]# vim /var/www/html/index.html
This is 192.168.135.4X

# 启动 http 服务
]# /etc/init.d/httpd start
4.6.2、配置启动 real server
]# vim /etc/init.d/lvsrs
#!/bin/bash
# chkconfig: 35 15 85
# description: start/stop LVS(load balancing software for Linux kernel–based operating systems)

# Source function library.
. /etc/rc.d/init.d/functions

VIP=192.168.135.46

case "$1" in
    start)
        echo " Start LVS  of  Real Server"
        /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
        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 
        ;;
    stop)
        echo "close LVS Director server"
        /sbin/ifconfig lo:0 down
        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 "Usage: $0 {start|stop}"
        exit 1
esac

]# chmod 755 /etc/init.d/lvsrs
]# /etc/init.d/lvsrs start
上一篇 下一篇

猜你喜欢

热点阅读