首页 > 其他分享 >keepalived+LVS实现高可用性集群

keepalived+LVS实现高可用性集群

时间:2023-08-20 10:06:38浏览次数:35  
标签:arp LVS keepalived 网卡 高可用性 conf 服务器 net

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

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

keepalived+LVS实现高可用性集群_服务器

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目录,如果不存在则在解压的源码目录/root/keepalived-2.0.18/keepalived/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负载均衡服务器故障:

keepalived+LVS实现高可用性集群_服务器_02

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

keepalived+LVS实现高可用性集群_服务器_03

标签:arp,LVS,keepalived,网卡,高可用性,conf,服务器,net
From: https://blog.51cto.com/u_16227807/7156830

相关文章

  • systemctl开机自启keepalived--九五小庞
    一、通过systemctl开机自启keepalived设置1.查看已启动的服务列表:systemctllist-unit-files|grepenabled输出的结果中无keepalived.service2.设置在开机时启用服务:systemctlenablekeepalived.service3.查看服务是否开机启动:systemctlis-enabledkeepalived.service结果......
  • LVS专访阿里云席明贤,从视频云2.0到“数能生智”的超长畅谈
    这是一篇人物专访,源自LiveVideoStack与阿里云视频云负责人席明贤(花名右贤)的对话。面对风云变幻的内外环境,阿里云在视频云赛道是坚定向前的,右贤没有回避多媒体当下行业面临的困难以及业务面临的挑战,作为多媒体圈的新人,他用了很多时间调研了解市场和客户,他坚定地选择ToB作为突破口,......
  • SElinux 导致 Keepalived 检测脚本无法执行
    哈喽大家好,我是咸鱼今天我们来看一个关于Keepalived检测脚本无法执行的问题一位粉丝后台私信我,说他部署的keepalived集群vrrp_script模块中的脚本执行失败了,但是手动执行这个脚本却没有任何问题这个问题也是咸鱼第一次遇到,为了能让更多的小伙伴以后不会踩这个坑,便有了今......
  • 代理服务器之 squid、lvs、nginx、haproxy之间的区别
    1、正向代理正向代理服务器:squid用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上,然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端。2、反向代理:image.......
  • keepalived安装及配置文件详解
    一、安装Keepalived服务两种安装方式:(1)yum方式安装yum-yinstallkeepalived#查看安装路径rpm-qlkeepalived(2)源码安装1)安装依赖yum-yinstallgccopenssl-devellibnfnetlink-devel2)下载源码wgethttps://www.keepalived.org/software/keepalived-1.4.5.tar.......
  • 监控keepalived_vip控制容器的状态
    需求:监控server服务器的vip状态,如果vip存在,则判断容器是否启动,如果没有启动,则启动容器。如果vip不存在则关闭容器。方法一:方法一 #!/bin/bashipadd|grepeth0>/data/keepalivedcat/data/keepalived|grep${yunguan_svc_vip.ip}&>/dev/nullif[$?-eq0];then......
  • Nginx+keepalived主从双机热备自动切换解决方案
    Nginx+keepalived主从双机热备自动切换解决方案测试环境如下:系统:Ceentos6.464位主nginx服务器:192.168.122.5备nginx服务器:192.168.122.6VIP:192.168.122.15一、Nginx+keepalived安装—脚本安装#!/bin/bash#author:kuangl#mail:[email protected]#description:The......
  • keepalived 邮件通知无法发送邮件问题解决【亲测有效,没有效果来找我】
    环境keepalivedkeepalived-2.2.7操作系统cenos7安装方式源码编译安装问题最近在安装keepalived高可用服务,环境是安装完了,但是我想要使用邮件通知这个功能,通过网上捞针怎么也不成功,真是绝绝子,折磨我1天多。终于在刚刚得到了解决办法解决在vrrp_instance自定义的名字中添加......
  • centos7 源码安装keepalived 【亲测有效,没有效果你来找我】
    环境keepalived版本:keepalived-2.2.7操作系统:cenos7安装方式:源码编译安装环境安装#安装包下载wgethttps://keepalived.org/software/keepalived-2.2.7.tar.gz#安装编译源码所需依赖yum-yinstallgccopenssl-devellibnfnetlink-devellibnllibnl-develpopt-devel......
  • 基于keepalived+gtid半同步主从复制的MySQL集群
    mysql的安装(二进制安装)[root@my-slv1~]#catmysql_install.sh#!/bin/bash#解决软件的依赖关系yuminstallcmakencurses-develgccgcc-c++vimlsofbzip2openssl-develncurses-compat-libs-y#解压mysql二进制安装包tarxfmysql-5.7.38-linux-glibc2.12-x86_64.ta......