centos7:本地部署lvs与keepalived

本文详细介绍了在CentOS7环境下如何部署LVS和Keepalived。首先,确保三台虚拟机bg01、bg02和bg03网络互通,然后依次配置LVS的bg01、bg02和bg03。接着,部署Keepalived,需要四台虚拟机bg01、bg02、bg03和bg04,配置VIP服务器和Real服务器。最后,进行网卡插拔和Real服务器重启的测试,确保高可用性。

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统
keepalived的作用是检测后端TCP服务的状态,如果有一台提供TCP服务的后端节点死机,或者工作出现故障,keepalived会及时检测到,并将有故障的节点从系统中剔除,当提供TCP服务的节点恢复并且正常提供服务后keepalived会自动将TCP服务的节点加入到集群中。
图片来源于百度

部署lvs

先决条件

  1. 本地已经在virtualbox中安装了三台centos7虚拟机
  2. 三节点之间网络已经互联,通常情况下,只有用作LVS服务器的节点能访问外网
  3. 三节点分别名为bg01,bg02,bg03,其中 bg01 用作LVS

接下来按顺序操作下面三步,不要擅自修改顺序

Step1 配置bg01

# 首先为网卡(这里的网卡为enp0s3)添加一个没有被占用的ip(当前添加的是192.168.30.100)
ifconfig enp0s3:3 192.168.30.100/24

# 检查上一步添加的ip是否已经加上
ifconfig

# 修改 ip_forward(请求操作方式,忽略、转发、处理),默认情况下为 0
cd /proc/sys/net/ipv4
cat ip_forward
echo 1 > ip_forward

Step 2 配置bg02和bg03

bg02 和 bg03 配置一致

# 首先修改相关配置文件,都是修改请求操作方式
echo 1 > /proc/sys/net/ipv4/conf/enp0s3/arp_ignore 
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
echo 2 > /proc/sys/net/ipv4/conf/enp0s3/arp_announce 

# 添加一个lo转发方式
ifconfig lo:3 192.168.30.100 netmask 255.255.255.255

# 安装一个apache服务器
yum install -y httpd

# 为服务器添加一个默认html文件(以下是一个bg02的示范,在bg03中操作时将echo的内容改为 echo "form bg03" )
echo  "from bg02" > /var/ww/html/index.html

# 启动服务
systemctl start httpd

# 检测一下服务是否正常
# 在物理机浏览器中分别输入bg02的ip和bg03的ip,查看是否显示之前echo的内容

Step 3继续配置bg01

# 首先安装LVS,在kernel中的名字为ipvsadm
yum install ipvsadm -y

# 设置ipvsadm 的负载模式为轮询
ipvsadm -A -t 192.168.30.100:80 -s rr

# 为负载添加两个DIP,192.168.30.56 和 192.168.30.57 分别是 bg01 和 bg02 的
ipvsadm -a -t 192.168.30.100:80 -r 192.168.30.56
ipvsadm -a -t 192.168.30.100:80 -r 192.168.30.57

# 检测负载是否正常
# 在浏览器中输入 192.168.30.100 ,一直刷新,查看页面显示内容是否在一直变化,分别是之前bg02和bg03的内容
# 有可能一直刷新内容不变,是因为浏览器缓存导致的

# 相关命令,查看负载访问情况
ipvsadm -ln
ipvsadm -lnc
netstat -natp

部署keepalived

先决条件

  1. 本地已经在virtualbox中安装了4台centos7虚拟机
  2. 4节点之间网络已经互联
  3. 4节点分别命名为bg01,bg02,bg03,bg04,其中bg01和bg04用作vip server,另外两台作real server

接下来按照以下顺序操作

Step1 配置bg01 和bg04

如果之前 bg01 或者 bg04 已经安装过lvs,并且配置过网卡,需要清除之前的网卡配置
命令为 ifconfig -C
以下命令以及配置 bg01 与 bg04 都需要

# 首先安装 keepalived
yum install -y keepalived

# 配置 keepalvied.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.backup
vim keepalived.conf

# 当前配置文件如下
# start
# 对于 global_defs 邮件服务,本地可以不需要
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   # 需要注释掉vrrp_strict,否则会出现无法ping通vip 的情况
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    # 配置statue,对于bg01 配置为MASTER,对于bg04 配置为BACKUP作为HA(主备)
    state MASTER
    # 根据实际修改 interface
    interface enp0s3
    virtual_router_id 51
    
    # 对于priority 优先级配置,当 MASTER > BACKUP 时,
    # 如果 MASTER 挂了再恢复时,服务最终会交给MASTER
    # 当 MASTER == BACKUP,则两者具有相同优先级,
    # 如果 MASTER 挂了再恢复时,服务最终不会交给MASTER,仍然由BACKUP持有
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        # 配置 vip 和网卡
        192.168.30.100/24 dev enp0s3 label enp0s3:3
    }
}
# 添加vip 和开放端口
virtual_server 192.168.30.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
    # 添加real server 和端口,并且配置HTTP_GET
    real_server 192.168.30.56 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    # 添加real server 和端口,并且配置HTTP_GET
    real_server 192.168.30.57 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
# end

Step2 配置bg02 和bg03

配置与配置 lvs 时,配置 bg02 和 bg03 时相同
因此此处省略,请上翻参考 配置lvs 的Step2 部分

Step3 继续配置 bg01 和 bg04

# 分别启动keepalived,通过浏览器访问 192.168.30.100 即可访问,即表示成果
systemctl start keepalived

相关测试

网卡插拔测试

# 当 MASTER(bg01) 优先级大于 BACKUP(bg04),先分别在 bg01 和 bg04 中执行以下命令
ifconfig

# 得到结果中有一条类似下图,bg01 有而 bg04 没有

在这里插入图片描述

# 此时在bg01 中继续执行以下命令,拔掉网卡 enp0s3
ifconfig enp0s3 down

# 此时,分别在 bg01 和bg04 中分别执行 ifconfig ,发现结果反过来了,bg01 没有上述图片中的内容,而 bg04 中出现了图片中的内容
# 这里实现了keepalived 的主备切换

# 继续,在 bg01 中执行以下命令,将拔掉的 enp0s3网卡插回去
ifconfig enp0s3 up

# 紧接着,分别在 bg01 和 bg04 中分别执行 ifconfig
# 打印结果又恢复到测试开始时第一次执行 ifconfig 的结果
# 这就是因为 MASTER(bg01) 的优先级 高于BACKUP(bg04)的原因,
# 只要 MASTER alived,那么服务交由 MASTER 接管

real server 重启测试

# 在bg01 中执行以下命令
ipvsadm -ln

# 结果如下图所示

在这里插入图片描述

# 此时,负载有两台real server

# 接着,进入 bg02 ,执行以下命令,关闭 httpd 服务
systemctl stop httpd

# 再回到 bg01 中,执行以下命令
ipvsadm -ln

# 结果如下图所示

在这里插入图片描述

# 此时只剩下 bg03 负载只剩下这台real server

# 紧接着,回到 bg02 中,重启httpd 服务
systemctl start httpd

# 最后,回到 bg01 中,重新执行以下命令
ipvsadm -ln

# 显示结果如下图,keepalived又重新把 bg02 加入负载server

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值