部署LVS+Keepalived高可用群集(抢占模式,非抢占模式,延迟模式)

目录

一、LVS+Keepalived高可用群集

1、实验环境

[2、 主和备keepalived的配置](#2、 主和备keepalived的配置)

[2.1 yum安装ipvsadm和keepalived工具](#2.1 yum安装ipvsadm和keepalived工具)

[2.2 添加ip_vs模块并开启ipvsadm](#2.2 添加ip_vs模块并开启ipvsadm)

​编辑

[2.3 修改keepalived的配置文件](#2.3 修改keepalived的配置文件)

[2.4 调整proc响应参数,关闭linux内核的重定向参数响应](#2.4 调整proc响应参数,关闭linux内核的重定向参数响应)

[​编辑2.5 将主服务器的keepalived的配置文件远程传输到备服务器上,并进行必要的修改](#编辑2.5 将主服务器的keepalived的配置文件远程传输到备服务器上,并进行必要的修改)

[3、 真实web服务器的配置(web1,web2配置一样)](#3、 真实web服务器的配置(web1,web2配置一样))

[3.1 下载httpd服务](#3.1 下载httpd服务)

[​编辑3.2 配置VIP地址](#编辑3.2 配置VIP地址)

[​编辑 3.3 修改配置,使得系统只响应目的ip为本地ip的请求](#编辑 3.3 修改配置,使得系统只响应目的ip为本地ip的请求)

[3.4 配置访问默认页面内容 ​编辑](#3.4 配置访问默认页面内容 编辑)

4、测试​编辑

[4.1 将主服务器关闭](#4.1 将主服务器关闭)

二、非抢占模式

三、延迟抢占


一、LVS+Keepalived高可用群集

1、实验环境

主keepalived:192.168.80.100 lvs

备keepalived:192.168.80.101 lvs

web1:192.168.80.102

web2:192.168.80.103

vip:192.168.80.188

客户机访问

2、 主和备keepalived的配置

2.1 yum安装ipvsadm和keepalived工具
复制代码
#关闭防火墙和selinux服务
[root@localhost ~]#systemctl stop firewalld.service 
[root@localhost ~]#setenforce 0
 
#yum安装keepalived和ipvsadm工具
[root@localhost ~]#yum install ipvsadm keepalived -y
复制代码
2.2 添加ip_vs模块并开启ipvsadm
复制代码
#添加ip_vs模块
[root@localhost ~]#modprobe ip_vs
[root@localhost ~]#cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
#保存原来的配置并开启ipvsadm
[root@localhost keepalived]#ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost keepalived]#systemctl start ipvsadm.service
2.3 修改keepalived的配置文件
复制代码
[root@localhost keepalived]#cd /etc/keepalived/
[root@localhost keepalived]#cp keepalived.conf keepalived.conf.bak
#复制一份,备份使用
 
#修改keepalived的配置文件
[root@localhost keepalived]#vim keepalived.conf
global_defs {
   router_id HA_TEST_R2                  ####本路由器的服务器名称 HA_TEST_R2
}
vrrp_instance VI_1 {                     ####定义VRRP热备实列
   state BACKUP                          ####热备状态,backup表示辅服务器
   interface ens33                       ####表示承载VIP地址的物理接口
   virtual_router_id 1                   ####虚拟路由器的ID号,每个热备组保持一致
   priority 99                           ####优先级,优先级越大优先级越高
   advert_int 1                          ####通告间隔秒数(心跳频率)
   authentication {                      ####认证信息,每个热备组保持一致
      auth_type PASS                     ####认证类型
      auth_pass 123456                   ####认证密码
   }
   virtual_ipaddress {                   ####漂移地址(VIP),可以是多个
      192.168.100.10
   }
}
 
 
#需要修改项
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   #修改邮箱指向自己(10行)
   smtp_connect_timeout 30
   router_id LVS_01
   #指定服务器名称主备需要不一样(12行)
   vrrp_skip_check_adv_addr
   #vrrp_strict
   #14行需要注释否则服务启动有问题
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_instance VI_1 {
    state MASTER
    #指定服务器类型MASTER为主 BACKUP为备(20行)
    interface ens33
    #修改网卡名称为ens33(21)
    virtual_router_id 10
    #指定虚拟路由器的ID号主备需要一致
    #nopreempt 
    #非抢占模式两个节点都需要配置去掉注释
    priority 100
    #设定优先级数字越大优先级越高,准备需要不一样
    advert_int 1
    #通告间隔(查看是否存活)
    authentication {
        auth_type PASS
        #认证类型
        auth_pass 123456
        #修改验证密码,主备需要一样(27行)
    }
    virtual_ipaddress {
        192.168.80.188
        #指定群集vip地址
    }
}
virtual_server 192.168.80.188 80 {
    delay_loop 6
    #健康间隔时间6秒
    lb_algo rr
    #调度算法轮询
    lb_kind DR
    #lvs模式为DR 
    persistence_timeout 0
    #连接保持时间改为0 否则 无法体现效果
    protocol TCP
    #采用协议
    
 real_server 192.168.91.102 80 {
 #43行修改地址为真实主机地址
        weight 1
        #45行删除
        #节点权重
        TCP_CHECK{
            connect_port 80
            #检查目标端口
            connect_timeout 3
            #连接超时 
            nb_get_retry 3
            #重试次数
            delay_before_retry 3
            #重试间隔时间
        }
    }
 real_server 192.168.80.103 80 {
 #第二个
        weight 1
        TCP_CHECK{
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
2.4 调整proc响应参数,关闭linux内核的重定向参数响应
复制代码
#启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	
 
#调整proc响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
 
#刷新一下
sysctl -p
2.5 将主服务器的keepalived的配置文件远程传输到备服务器上,并进行必要的修改
复制代码
[root@localhost keepalived]#scp keepalived.conf root@192.168.80.101:/etc/keepalived/
 
 
[root@localhost keepalived]#vim keepalived.conf
#备份keepalive
12    router_id LVS_02
20     state BACKUP
23     priority 99
[root@localhost keepalived]#systemctl start keepalived.service 
[root@localhost keepalived]#ipvsadm
[root@localhost keepalived]#ipvsadm -ln
[root@localhost keepalived]#vim /etc/sysctl.conf 
[root@localhost keepalived]#sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

3、 真实web服务器的配置(web1,web2配置一样)

3.1 下载httpd服务
复制代码
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y httpd
3.2 配置VIP地址
复制代码
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
 
[root@localhost network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.80.188
NETMASK=255.255.255.255
NETWORK=127.0.0.0
 
[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# systemctl restart network
3.3 修改配置,使得系统只响应目的ip为本地ip的请求
复制代码
[root@localhost network-scripts]# vim /etc/sysctl.conf
[root@localhost network-scripts]# sysctl -p
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 network-scripts]# route add -host 192.168.80.188 lo:0
3.4 配置访问默认页面内容

4、测试

4.1 将主服务器关闭

此时虚拟VIP在备用服务器,且依旧可以访问网站

关闭主服务器,我们也可以抓包来看变化

--关闭主服务器时,是192.168.80.101

--开启主服务器后,主服务器会抢占,因为主服务器优先级高,又会变成主服务器,192.168.80.100

二、非抢占模式

默认模式使用的 抢占式,上面的实验使用的就是抢占模式

主节点会抢占回来,会造成两次网络动荡。

#注意:要关闭 VIP抢占,必须将各 keepalived 服务器state配置为BACKUP

复制代码
#1主机配置
vrrp_instance VI_1 {
 state BACKUP     #都为BACKUP
 interface ens33
 virtual_router_id 66
 priority 100   #优先级高
 advert_int 1
 nopreempt         #添加此行,都为nopreempt
#2主机配置
vrrp_instance VI_1 {
 state BACKUP         #都为BACKUP
 interface ens33
 virtual_router_id 66
 priority 80       #优先级低
 advert_int 1
 nopreempt   #添加此行,都为nopreempt

三、延迟抢占

复制代码
#延迟抢占
preempt_delay #     #指定抢占延迟时间为#s,默认延迟300s
#注意:需要各keepalived服务器state为BACKUP,并且不要启用 vrrp_strict
#1主机配置
vrrp_instance VI_1 {
 state BACKUP     #都为BACKUP
 interface eth0
 virtual_router_id 66
 
 priority 100     #优先级高
 advert_int 1 
 preempt_delay 30  #抢占延迟模式,默认延迟300s
 
 #2主机配置
vrrp_instance VI_1 {
 state BACKUP       #都为BACKUP
 interface eth0
 virtual_router_id 66
 priority 80     #优先级低
 advert_int 1 
 
 priority 80   #优先级高
 advert_int 1 
 preempt_delay 60    #抢占延迟模式,默认延迟300s
相关推荐
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz1 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_1 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈1 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
施努卡机器视觉1 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
程序猿阿伟1 天前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome