keepalived+lvs高可用负载均衡集群配置方案

配置方案

  • 一、配置主备节点

    • [1. 在主备节点上安装软件](#1. 在主备节点上安装软件)
    • [2. 编写配置文件](#2. 编写配置文件)
    • [3. 启动keepalived服务](#3. 启动keepalived服务)
  • 二、配置web服务器

    • [1. 安装并启动http服务](#1. 安装并启动http服务)
    • [2. 编写主页面](#2. 编写主页面)
    • 3.配置虚拟地址
    • [4. 配置ARP](#4. 配置ARP)
  • 三、测试

  • 服务器IP:

    • 主负载均衡服务器 master 192.168.152.71
    • 备负载均衡服务器 backup 192.168.152.72
    • web服务器1 web1 192.168.152.73
    • web服务器2 web2 192.168.152.74
    • 虚拟IP VIP 192.168.152.100

一、配置主备节点

1. 在主备节点上安装软件

bash 复制代码
yum install -y keepalived ipvsadm

2. 编写配置文件

master.ip 和 backup.ip 都要配置,把原本的内容清空

bash 复制代码
vim /etc/keepalived/keepalived.conf

写如下内容: 确保主备节点的 router_id state priority 的值不一样

bash 复制代码
! Configuration File for keepalived

global_defs {
    router_id 1  # 唯一标识本节点的路由器ID,主备节点的ID必须不同
}

vrrp_instance VI_1 {
    state MASTER                # 主节点的状态为MASTER,备节点的状态为BACKUP
    interface ens33             # 用于主备节点之间通信的网卡名称
    virtual_router_id 51        # 虚拟路由器ID,主备节点必须一致
    priority 100                # 节点优先级,数字越大优先级越高
    advert_int 1                # VRRP 广播间隔时间,单位为秒

    authentication {
        auth_type PASS         # 认证方式为PASS
        auth_pass 123456       # 认证密码,主备节点上的密码必须一致,密码最大8位
    }

    virtual_ipaddress {
        192.168.152.100/24    # 配置的虚拟IP地址及子网掩码,VIP地址
    }
}

virtual_server 192.168.152.100 80 {  # 定义虚拟服务器,端口80
    delay_loop 3                # 健康检查的间隔时间,每3秒检查一次后端服务器状态
    lb_algo rr                  # 负载均衡算法,使用轮询(rr)方式
    lb_kind DR                  # LVS 集群模式,使用Direct Routing(DR)模式
    protocol TCP                # 使用TCP协议进行负载均衡

    real_server 192.168.152.73 80 {  # web1服务器IP地址,端口80
        weight 1                # 服务器权重,权重相同表示流量均等分配
        TCP_CHECK {
            connect_timeout 3  # TCP健康检查的连接超时时间,3秒内成功连接视为健康
        }
    }

    real_server 192.168.152.74 80 {  # web2服务器IP地址,端口80
        weight 1                # 服务器权重
        TCP_CHECK {
            connect_timeout 3  # TCP健康检查的连接超时时间
        }
    }
}

3. 启动keepalived服务

bash 复制代码
systemctl start keepalived && systemctl enable keeplavied

二、配置web服务器

下面的内容 web1 和 web2 都要配置

1. 安装并启动http服务

这里用apache测试,不重要其它http服务也无所谓

bash 复制代码
yum install -y httpd && systemctl start httpd && systemctl enable httpd

2. 编写主页面

web1:

bash 复制代码
echo web1 > /var/www/html/index.html

web2:

bash 复制代码
echo web2 > /var/www/html/index.html

这样写是为了在最后访问时效果更明显,方便区分

3.配置虚拟地址

复制 ifcfg-lo 网卡配置文件,并改名为 ifcfg-lo:0

bash 复制代码
cp /etc/sysconfig/network-scripts/{ifcfg-lo,ifcfg-lo:0}

更改 vim /etc/sysconfig/network-scripts/ifcfg-lo:0 文件的内容如下

bash 复制代码
DEVICE=lo:0
IPADDR=192.168.152.100   #对外提供服务的虚拟地址
NETMASK=255.255.255.255
ONBOOT=yes

4. 配置ARP

bash 复制代码
# 在所有网络接口上设置 ARP 请求的响应行为
net.ipv4.conf.all.arp_ignore = 1
# 设置 ARP 忽略规则为 1:只响应目标地址与本接口地址匹配的 ARP 请求。这有助于避免错误的 ARP 响应。

net.ipv4.conf.all.arp_announce = 2
# 设置 ARP 宣告规则为 2:只在接口上声明 IP 地址,当 IP 地址只在该接口上有效时。这有助于避免将 IP 地址错误地声明在多个接口上。

# 在默认的网络接口上设置 ARP 请求的响应行为
net.ipv4.conf.default.arp_ignore = 1
# 设置默认网络接口的 ARP 忽略规则为 1:只响应目标地址与本接口地址匹配的 ARP 请求。这确保新添加的接口也遵循相同的 ARP 忽略规则。

net.ipv4.conf.default.arp_announce = 2
# 设置默认网络接口的 ARP 宣告规则为 2:只在接口上声明 IP 地址,当 IP 地址只在该接口上有效时。这确保新添加的接口也遵循相同的 ARP 宣告规则。

# 在回环接口 (lo) 上设置 ARP 请求的响应行为
net.ipv4.conf.lo.arp_ignore = 1
# 设置回环接口的 ARP 忽略规则为 1:回环接口只响应针对本接口的 ARP 请求,避免干扰其他接口的 ARP 行为。

net.ipv4.conf.lo.arp_announce = 2
# 设置回环接口的 ARP 宣告规则为 2:回环接口只在其上声明 IP 地址,这防止了回环接口在其他接口上错误地声明 IP 地址。

三、测试

在浏览器输入虚拟IP地址 192.168.152.100

刷新观察变化,如果一直没有变化可能是浏览器缓存,可以用下面命令查看,在 master 上执行

bash 复制代码
ipvsadm -Lnc

结果如下:

bash 复制代码
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:37  FIN_WAIT    192.168.152.1:55317 192.168.152.100:80 192.168.152.74:80
TCP 15:02  ESTABLISHED 192.168.152.1:55428 192.168.152.100:80 192.168.152.73:80

看最后一列IP地址,可以看到已经分配到两个web服务器上

把 master 主机的 keepalived 服务关闭,观察 backup 主机

在 backup 主机输入下面命令,看虚拟IP是否存在,并刷新网页看是否可用

bash 复制代码
ip a
相关推荐
浪裡遊1 小时前
Linux常用指令
linux·运维·服务器·chrome·功能测试
SugarPPig2 小时前
PowerShell 查询及刷新环境变量
服务器
段ヤシ.2 小时前
银河麒麟(内核CentOS8)安装rbenv、ruby2.6.5和rails5.2.6
linux·centos·银河麒麟·rbenv·ruby2.6.5·rails 5.2.6
深夜情感老师4 小时前
centos离线安装ssh
linux·centos·ssh
EasyDSS4 小时前
视频监控从安装到优化的技术指南,视频汇聚系统EasyCVR智能安防系统构建之道
大数据·网络·网络协议·音视频
我的作业错错错4 小时前
搭建私人网站
服务器·阿里云·私人网站
rufeike4 小时前
UDP协议理解
网络·网络协议·udp
王景程5 小时前
如何测试短信接口
java·服务器·前端
江理不变情5 小时前
海思ISP调试记录
网络·接口隔离原则
微网兔子5 小时前
伺服器用什么语言开发呢?做什么用什么?
服务器·c++·后端·游戏