高可用集群-Keepalived

倖福魔咒の 提交于 2020-03-05 07:15:34

Keepalived

keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层、第 4 层和第5 层交换。 Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后Keepalived 自劢将 web 服务器加入到服务器群中,这些工作全部自劢完成,不需要人工干涉,需要人工做的只是修复故障的 web 服务器。

工作原理

Layer3,4&5 工作在 IP/TCP 协议栈的 IP 层, TCP 层,及应用层,。

  • Layer3: Keepalived 使用 Layer3 的方式工作式时, Keepalived 会定期向服务器群中的服务器发送一个 ICMP 的数据包(既我们平时用的 Ping 程序) , 如果发现某台服务的 IP 地址没有激活,Keepalived 便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。 Layer3 的方式是以服务器的 IP 地址是否有效作为服务器工作正常不否的标准。
  • Layer4: 主要以 TCP 端口的状态来决定服务器工作正常不否。如 web server 的服务端口一般是80,如果 Keepalived 检测到 80 端口没有启劢,则 Keepalived 将把这台服务器从服务器群中删除。
  • Layer5: Layer5 就是工作在具体的应用层了,比 Layer3,Layer4 要复杂一点,在网络上占用的带宽也要大一些。 Keepalived 将根据用户的设定检查服务器程序的运行是否正常,如果不用户的设定不相符,则 Keepalived 将把服务器从服务器群中剔除。

keepalived 作用:

机器名称 ip 网关 描述
主lvs DIP:192.168.1.20 VIP:192.168.1.30 192.168.1.1
备lvs DIP:192.168.1.40 VIP:192.168.1.30 192.168.1.1
rs2 web2 192.168.1.31 192.168.1.1
rs1 web 192.168.1.32 192.168.1.1
  1. 管理 VIP VIP 会在 LVS 之间漂移
  2. 监控 LVS 分发器运行在主分发的 Keepalived 会以组播的形式向网络中宣告自己,即主分发器还活着,备用节点能收到。当备用节点,在一个时间单位中收丌到组播,备用节点会认为主 LVS 挂了,开始接手主分发器工作,把 VIP 配给自己。
  3. 管理 RS,Keepalived 会每隔一个时间段去做一次类似于访问的操作如:
    探针: elinks http://192.168.3.64 -dump

安装keepalived

在主机上安装

tar zxvf keepalived-1.2.16.tar.gz
cd keepalived-1.2.16
./configure --prefix=/usr/local/keepalived
 make && make install
 
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
chmod +x /etc/init.d/keepalived

修改/etc/init.d/keepalived
. /etc/sysconfig/keepalived
改成

. /usr/local/keepalived/etc/sysconfig/keepalived
export PATH="$PATH:/usr/local/keepalived/sbin"

修改挃定 keepalived 要加载的配置文件

vim /usr/local/keepalived/etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -f /usr/local/keepalived/etc/keepalived/keepalived.conf"

启动

/etc/init.d/keepalived start
## 设置开机自启动
chkconfig keepalived on

扩展知识

VRRP

虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称 VRRP)是由 IETF 提出的解决局域网中配置静态网关出现单点失效现象的路由协议。使用组播方式通信。
VRRP 是一种路由容错协议,也可以叫做备份路由协议。一个局域网络内的所有主机都设置缺省路由(默认网关),当网内主机发出的目的地址丌在本网段时,报文将被通过缺省路由发往外部路由器,从而实现了主机不外部网络的通信。当缺省路由器 down 掉(即端口关闭)之后,内部主机将无法不外部通信,如果
路由器设置了 VRRP 时,那举这时,虚拟路由将启用备份路由器,从而实现全网通信。

使用keepalived配置 LVS-DR 主-备高可用集群模式

描述: 在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。当主节点丌可用时, 备用节点接管虚拟IP,提供正常服务。 配置参数: 节点20(主节点); 节点40(备用节点) ; 虚拟IP 192.168.1.30 对外提供服务的IP。 要求默认情况下由主节点提供服务,当主节点不可用时,由备用节点提供服务 (即虚拟IP漂移至备用节点)。

主机配置

 vim /usr/local/keepalived/etc/keepalived/keepalived.conf 

global_defs 配置为

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id t_20 # 主机标识符
}

vrrp_instance 配置

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

virtual_server 配置
其他的virtual_server 可以删除

virtual_server 192.168.1.30 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.1.31 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connet_port 80
        }
    }
    real_server 192.168.1.32 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connet_port 80
        }
    }
}

备机配置

安装keepalived 和 ipvsadm

 vim /usr/local/keepalived/etc/keepalived/keepalived.conf 

global_defs 配置为

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id t_40 # 主机标识符
}

vrrp_instance 配置

vrrp_instance apache {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.30
    }
}

virtual_server 配置
其他的virtual_server 可以删除

virtual_server 192.168.1.30 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.1.31 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connet_port 80
        }
    }
    real_server 192.168.1.32 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connet_port 80
        }
    }
}

RS server配置

 vim /etc/init.d/lvsrsdr 

内容如下

#!/bin/bash
#description : start realserver
VIP=192.168.1.30
source /etc/init.d/functions
case "$1" in
start)
echo " start LVS of RealServer DR"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS of RealServer DR"
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 +x /etc/init.d/lvsrsdr
 /etc/init.d/lvsrsdr start 
  echo '/etc/init.d/lvsrsdr start' >> /etc/rc.local 

安装httpd

yum install httpd -y
echo {{RS_IP}} > /var/www/html/index.html
service httpd restart

测试

在这里插入图片描述停掉主keepalived,ip漂移到备机

/etc/init.d/keepalived stop

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!