Keepalived双机热备(LVS+Keepalive高可用群集)

简介:

Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。

Keepalived的官方网站位于:http://www.keepalived.org/

Keepalived的热备方式

     Keepalived采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务,每个热备组内同一时刻只有一个路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替(根据优先级)虚拟IP地址,以继续提供服务。
    热备组内的每台路由器都可能称为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址,使用Keepalived时,漂移地址的实现不需要手动建立虚拟接口配置文件(如ens33:0)

 

 

 

Keepalived双机热备(LVS+Keepalive高可用群集)_第1张图片

配置主调度器

1.安装Keepalived和ipvsadm

[root@localhost ~]# yum -y install keepalived ipvsadm
//安装Keepalived和ipvsadm

 2.配置内核参数,防止icmp重定向

[root@localhost ~]# vim /etc/sysctl.conf
  //添加下列内容
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0


[root@localhost ~]# sysctl -p

3.调用lvs

modprobe ip_vs

4.配置keepalive

! Configuration File for keepalived

global_defs {
   router_id LVS_HA_R1 //本路由器名称
}

vrrp_instance VI_1 {    //定义vrrp热备份
    state MASTER       //热备状态,MASTER表示为主服务器
    interface ens33    //承载vip的地址物理接口
    virtual_router_id 1 //虚拟路由器的ID,每个热备组保持一致
    priority 100       //优先级(主要比次大)
    advert_int 1       //通告间隔秒数(心跳频率)
    authentication {    //认证信息,每个热备组要保持一致
        auth_type PASS  //认证类型
        auth_pass 1111  //密码字符串
    }
    virtual_ipaddress { //指定漂移地址(vip地址)可以有多个
        172.16.16.172
    }
}
virtual_server 172.16.16.172 80 {  //虚拟服务器地址(vip)
    delay_loop 6          //健康检查间隔时间
    lb_algo rr           //轮询(rr)调度算法
    lb_kind DR          //直接路由dr群集工作模式
!   persistence_timeout 50     //连接保持时间(秒),启用请去除!号
    protocol TCP              //采用tcp协议

    real_server 172.16.16.177 80 {   //第一个web节点地址,端口
        weight 1             //节点权重
        TCP_CHECK {         //健康检查方式
                connect_port 80    //检查目标端口
                connect_timeout 3   //连接超时
                nb_get_retry 3     //重试次数
                delay_before_retry 4  //重试间隔
        }
    }
    real_server 172.16.16.178 80 {   //第二个节点
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
        }
    }
}

4.启动keepalive

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start keepalived
[root@localhost ~]# ip addr show dev ens33 //查看漂移地址

配置从调度器

1.安装keepalive和ipvsadm(1-3参考主配置)

2.配置内核参数,防止icmp重定向

3.调用lvs

4配置keepalive

[root@localhost ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   router_id LVS_HA_R2     //路由名称
}

vrrp_instance VI_1 {
    state BACKUP        //从调度器
    interface ens33
    virtual_router_id 1
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.16.172
    }
}
virtual_server 172.16.16.172 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
!   persistence_timeout 50
    protocol TCP

    real_server 172.16.16.177 80 {
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
        }
    }
    real_server 172.16.16.178 80 {
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
        }
    }
}

5启动keepalive

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start keepalived

配置节点服务器(其他节点配置相同)

1.调整内核参数,防止arp攻击

[root@localhost ~]#vim /etc/sysctl.conf 
//添加下列
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]# sysctl -p

2.安装httpd并修改默认首页

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo "

web1:172.16.16.177

" > /var/www/html/index.html [root@localhost ~]# systemctl start httpd //开启服务

3.配置lo:0

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0
IPADDR=172.16.16.172
NETMASK=255.255.255.255
ONBOOT=yes

[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# route add -host 172.16.16.172 dev lo:0

验证

在调度器上查看是否有节点

 [root@localhost ~]# sysctl -p -ln

 

你可能感兴趣的:(Linux架构)