LVS+Keepalived 群集

Keepalived起初是专门针对LVS设计的一款强大的复制工具。

主要用来提供故障切换和健康检查功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换新的服务器。

测试环境:

调度器两台(双机热备)IP

      192.168.30.30

      192.168.30.31

Web服务器 IP

      192.168.30.33

      192.168.30.34

简单快速搭建LVS+Keepalived 集群_第1张图片

安装所需软件

centos7系统中已经自带modprobe ip_vs 只需打开即可使用

modprobe ip_vs #加载IP_vs模块

yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel ipvsadm  #安装编译工具、插件和ipvsadm


在两台调度器上编译安装 keepalived


tar xf keepalived-1.4.2.tar.gz

 cd keepalived-1.4.2

./configure --prefix=/

 make && make install


cp keepalived/etc/init.d/keepalived /etc/init.d/    #加入系统管理服务

[root@lin3036 keepalived-1.4.2]#  systemctl enable keepalived #设为开机自启

另一台安装方式相同


修改第一台master keepalived.conf文件

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   router_id LVS_01            #本服务器的名称

}

vrrp_instance VI_1 {            #定义VRRP热备实例

    state MASTER             #热备状态,MASTER表示主服务器,BACKUP表示从服务器

    interface ens33            #承载VIP地址的物理接口

    virtual_router_id 51        #虚拟路由器的ID号,每个热备组保持一致

    priority 110               #优先级,数值越大优先级越高

    advert_int 1               #通告间隔秒数(心跳频率)

    authentication {            #热备认证信息,每个热备组保持一致

        auth_type PASS        #认证类型

        auth_pass 6666        #密码字符串

    }

    virtual_ipaddress {          #指定漂移地址(VIP),可以有多个

        192.168.30.100

    }

}

virtual_server 192.168.30.100 80 {      #虚拟服务器地址(VIP)、端口

        delay_loop 6               #健康检查的间隔时间(秒)

        lb_algo rr                  #轮询(rr)调度算法

        lb_kind DR                 #直接路由(DR)群集工作模式

        persistence_timeout 60       #连接保持时间(秒)

        protocol TCP                #应用服务器采用的是TCP协议

real_server 192.168.30.33 80 {         #第一个Web服务器节点的地址、端口

        weight 1                   #节点的权重

        TCP_CHECK {                #健康检查方式

        connect_port 80             #检查的目标端口

        connect_timeout 3           #连接超时(秒)

        nb_get_retry 3              #重试次数

        delay_before_retry 3          #重试间隔

        }

}

real_server 192.168.30.34 80 {           #第二个Web服务器节点的地址、端口

        weight 1

        TCP_CHECK {

             connect_port 80

             connect_timeout 3

             nb_get_retry 3

             delay_before_retry 3

     }

  }

}

[root@dd01 keepalived-1.4.2]# service keepalived start

[root@dd01 keepalived-1.4.2]# ip addr show dev ens33    //验证绑定了的虚拟地址

简单快速搭建LVS+Keepalived 集群_第2张图片


备服务配置keepalived.conf文件

! Configuration File for keepalived

global_defs {

   router_id LVS_02

}

vrrp_instance VI_1 {

    state BACKUP

    interface ens33

    virtual_router_id 51

    priority 105

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 6666

    }

    virtual_ipaddress {

        192.168.30.100

    }

}

virtual_server 192.168.30.100 80 {

        delay_loop 6

        lb_algo rr

        lb_kind DR

        persistence_timeout 60

        protocol TCP

real_server 192.168.30.33 80 {

        weight 1

        TCP_CHECK {

        connect_port 80

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 3

        }

}

real_server 192.168.30.34 80 {

        weight 1

        TCP_CHECK {

             connect_port 80

             connect_timeout 3

             nb_get_retry 3

             delay_before_retry 3

     }

  }

}

启动服务


配置主服务器LVS

[root@lin3034 keepalived-1.4.2]# modprobe ip_vs  #加载ip_vs模块

配置主服务器LVS

简单快速搭建LVS+Keepalived 集群_第3张图片

备服务器相同


web服务器也要虚拟出192.168.30.100这个虚拟VIP

ifconfig lo:0 192.168.30.100 broadcast 192.168.30.100 netmask 255.255.255.255 up

route add -host 192.168.30.100 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

sysctl -p 刷新

查看网卡状态

简单快速搭建LVS+Keepalived 集群_第4张图片

另一台web服务器配置相同