keepalived+LVS高可用性集群部署

发布时间 2023-07-10 09:27:35作者: 往事已成昨天

keepalived+LVS高可用性集群部署小记

keepalived+LVS实现高可用集群部署小记

 

·尽可能提高服务的可用性

·实现原理:心跳检测

一、keepalived+LVS-DR实现高可用负载均衡

点击底部的阅读原文可体验智能聊天机器人,写文案,制定学习计划~等你来体验。

当LVS负载均衡的主服务器出现故障时,keepalived会及时切换到备份服务器;同时会检测后端真实服务器是否存在故障无法访问,keepalived检测到该设备不可用时就会在集群的列表中删除该服务器节点,当服务器恢复时会再次自动添加进来。以此来实现集群的高可用性。

图片

1)部署DR模式的负载均衡集群

禁用网卡发送重定向

#0 表示禁用发送重定向,禁用发送重定向可以防止网络攻击,如 ARP 欺骗和 IP 欺骗
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    #ens33网卡的(根据需要修改为真实网卡即可)
#添加完毕后,刷新内核参数使其生效
sysctl -p   #刷新内核参数

2)配置web服务器

修改内核文件,控制arp行为

#配置内核文件,控制arp行为

arp-ignore
# 0 只要本机配置有相应IP地址就响应;
# 1 仅在请求的目标地址配置在请求到达网络接口上时,才给予响应;
arp-announce
# 0 将本机任何网络接口上的任何地址都向外通告;
# 1 尽可能避免向目标网络通告与其网络不匹配的地址信息表;
# 2 仅向目标网络通告与其网络相匹配的地址信息。
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

3)添加路由

route add -host 10.10.10.100 dev lo:0   #DR模式下,后端的真实服务器必须添加此路由,否则无法与客户端通信

4)配置keepalived

下载keepalived源码包

https://www.keepalived.org/software/keepalived-2.0.18.tar.gz

解压文件:

tar -zxvf [下载的包名]
#安装相关依赖
yum install -y kernel-devel openssl-devel popt-devel gcc*

5)编译安装

编译安装后,在/etc/创建keepalived目录,将keepalived.conf配置文件复制一份过来否则无法启动

 #在解压后的目录中执行编译安装
./configure --prefix=/
 make && make install  
检查/etc/init.d/目录下是否存在 keepalived 文件,如果不存在则在源码的init.d文件夹中拷贝一份启动脚本到/etc/init.d/目录下
cp /root/keepalived-2.0.18/keepalived/etc/init.d  /etc/init.d/
#拷贝完成后设置为开机自启
chkconfig --add keepalived  #添加为系统服务
chkconfig keepalived on     #设置为开机自启
· 采用挂载镜像文件使用yum的方式直接安装keepalived
#安装依赖
yum install -y kernel-devel openssl-devel popt-devel gcc*
#安装keepalived
yum install keepalived -y

6)修改keepalived配置文件

vim /etc/keepalived/keepalived.conf

global_defs {
   router_id LVS_MASTER   #设置自定义名称
}

vrrp_instance VI_1 {
    state MASTER      #设置状态主或备,根据实际情况修改
    interface eth0    #指定网卡做心跳检测
    virtual_router_id 51    #配置虚拟组,主备lvs服务器必须在同一个组里否则不生效
    priority 100            #优先级配置。主与从之间差距最好在50,最大设置为150
    advert_int 1            #心跳检测间隔为1s
    authentication {        #配置主备之间的认证
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.100
        #此处填写集群IP地址
    }
}

#配置集群的IP端口,算法与部署模式
virtual_server 10.10.10.100 80 {
    delay_loop 6    #检测循环的次数以及时间
    lb_algo rr       #设置当前集群使用的算法
    lb_kind DR      #设置当前集群的模式  
    persistence_timeout 50    # 同一IP的连接50秒内被分配到同一台realserver
    protocol TCP      #设置检测使用的协议为TCP

    #配置真实服务器的相关IP和端口信息,有几个真实服务器就填写几个real_server
    real_server 10.10.10.12 80 {          
        weight 1                              #权重,最大越高,lvs就越优先访问
        TCP_CHECK {                           #keepalived默认的健康检查方式为HTTP_GET,其他健康检测方式分别是:SSL_GET | TCP_CHECK | SMTP_CHECK | MISC
            connect_timeout 3                #健康监测超时时间
            retry 3                           #重连次数3次
            delay_before_retry 3              #重连间隔时间
            connect_port 80                   #健康检查realserver的端口
        }                                     
    }                                     
· 修改完配置文件后重启keeplived使其生效
service keeplived start

7)配置backup备份

网卡配置部分略,跟主服务器同网段IP即可,虚拟IP主备必须保持一致。在同一局域网配置相同ip后启动网卡时会报错,这是因为网卡启动时会通过发送ARP请求检测目标IP地址是否与其他主机发生了冲突,所以这里需要手动关闭backup服务器网卡的arp检测功能。

 vim /etc/sysconfig/network-scripts/ifup-eth    
 #由于不同系统版本文件存放位置不一致,此路径为centos7下的配置文件存放位置。其他系统需重新找到ifup-eth文件的正确位置

#在配置文件中注释掉arp命令检测的相关判断,在配置文件的275行左右注释后即可重启网卡成功
if [ $? = 1 ]; then
   ARPINGMAC=$(echo $ARPING |  sed -ne 's/.*\[\(.*\)\].*/\1/p')
   net_log $"Error, some other host ($ARPINGMAC) already uses address ${ipaddr[$idx]}."
   exit 1
 fi

安装keepalived步骤不再赘述,与master安装步骤一致。

修改配置文件,将状态设置为backup

! Configuration File for keepalived

global_defs {
   router_id LVS2   #修改备份服务器的名称,不能与主服务器名称重复
}

vrrp_instance VI_1 {     
    state BACKUP    #状态设置为backup或者SLAVE
    interface ens33    
    virtual_router_id 51
    priority 50    #修改优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.100
    }
}
virtual_server 10.10.10.100 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 10.10.10.12 80 {
        weight 1
        TCP_CHECK{
            connect_port 80
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 10.10.10.13 80 {
        weight 1
        TCP_CHECK{
            connect_timeout 3
            connect_port 80
            retry 3
            delay_before_retry 3
        }
    }
}

8)故障切换测试

(1)模拟lvs负载均衡服务器故障:

图片

 

(2)模拟真实服务器宕机与恢复:

图片

 

至此,实验结束!

图片

青菜浪人
阅读原文
阅读 182
青菜浪人
39篇原创内容