当前位置: 首页 > web >正文

基于LVS和Keepalived实现高可用负载均衡架构

目录

一、资源清单

二、修改主机名

三、配置调度器

四、配置Web节点服务器(web1、web2)

五、测试负载均衡

六、测试LVS+Keepalived高可用群集


一、资源清单

主机

操作系统

IP地址

lb01

OpenEuler24.03

192.168.16.142

lb02

OpenEuler24.03

192.168.16.143

web1

OpenEuler24.03

192.168.16.144

web2

OpenEuler24.03

192.168.16.145

二、修改主机名

hostnamectl set-hostname lb01
hostnamectl set-hostname lb02
hostnamectl set-hostname web1
hostnamectl set-hostname web2

三、配置调度器

1.加载模块(lb01、lb02)

# 加载 ip_vs 模块
modprobe ip_vs# 查看 ip_vs 版本信息
cat /proc/net/ip_vs

2.安装服务(lb01、lb02)

dnf install -y ipvsadm keepalived 

3.修改配置文件(lb01)

vi /etc/keepalived/keepalived.conf! Configuration File for keepalived
global_defs {router_id lb01
}vrrp_instance VI_1 {state MASTER            # 两个 DS,一个为 MASTER 一个为 BACKUPinterface ens33         # 当前 IP 对应的网络接口,通过 ifconfig 查询virtual_router_id 62    # 虚拟路由 ID(0-255),在一个 VRRP 实例中主备服务器 ID 必须一样priority 100            # 优先级值设定:MASTER 要比 BACKUP 的值大advert_int 1            # 通告时间间隔:单位秒,主备要一致authentication {        # 认证机制,主从节点保持一致即可auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.16.100      # VIP,可配置多个}
}# web 配置
virtual_server 192.168.16.100 80  {delay_loop 3                    # 设置健康状态检查时间lb_algo rr                      # 调度算法,这里用了 rr 轮询算法lb_kind DR                      # 这里测试用了 Direct Route 模式#persistence_timeout 50          # 持久连接超时时间,注意添加此项配置客户端连续请求时,请求到同一节点protocol TCPreal_server 192.168.16.144 80 {weight 1TCP_CHECK {connect_timeout 10   retry 3            # 旧版本为 nb_get_retry delay_before_retry 3  # 重试间隔3秒 connect_port 80}}real_server 192.168.16.145 80 {weight 1TCP_CHECK {connect_timeout 10retry 3delay_before_retry 3connect_port 80}}
}

4.修改配置文件(lb02)

vi /etc/keepalived/keepalived.conf! Configuration File for keepalived
global_defs {router_id lb02
}vrrp_instance VI_1 {state BACKUP            # 两个 DS,一个为 MASTER 一个为 BACKUPinterface ens33         # 当前 IP 对应的网络接口,通过 ifconfig 查询virtual_router_id 62    # 虚拟路由 ID(0-255),在一个 VRRP 实例中主备服务器 ID 必须一样priority 90            # 优先级值设定:MASTER 要比 BACKUP 的值大advert_int 1            # 通告时间间隔:单位秒,主备要一致authentication {        # 认证机制,主从节点保持一致即可auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.16.100      # VIP,可配置多个}
}# web 配置
virtual_server 192.168.16.100 80  {delay_loop 3                    # 设置健康状态检查时间lb_algo rr                      # 调度算法,这里用了 rr 轮询算法lb_kind DR                      # 这里测试用了 Direct Route 模式#persistence_timeout 50          # 持久连接超时时间,注意添加此项配置客户端连续请求时,请求到同一节点protocol TCPreal_server 192.168.16.144 80 {weight 1TCP_CHECK {connect_timeout 10   retry 3            # 旧版本为 nb_get_retry delay_before_retry 3  # 重试间隔3秒 connect_port 80}}real_server 192.168.16.145 80 {weight 1TCP_CHECK {connect_timeout 10retry 3delay_before_retry 3connect_port 80}}
}

5.重启Keeplived服务(lb01、lb02)

echo 'net.ipv4.conf.all.send_redirects = 0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.default.send_redirects = 0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.ens33.send_redirects = 0' >> /etc/sysctl.conf
sysctl -p# 启动keepalived
systemctl start keepalived

四、配置Web节点服务器(web1、web2)

1.安装服务

dnf install -y httpd

2.启动服务

systemctl start httpd --now

3.测试网页

#web1
echo "This is web1" > /var/www/html/index.html
#web2
echo "This is web2" > /var/www/html/index.html

4.编写脚本

vi start.sh#!/bin/bash# 修改为自己的VIP
vip='192.168.16.100'# 临时添加 VIP(重启失效)
sudo ip addr add ${vip}/32 dev lo label lo:0
# 临时添加路由(重启失效)
sudo ip route add local ${vip}/32 dev lo# 永久生效(通过 rc.local 或 NetworkManager 脚本)
echo "ip addr add ${vip}/32 dev lo label lo:0" | sudo tee -a /etc/rc.local
echo "ip route add local ${vip}/32 dev lo" | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.localsh start.sh

5.添加环境参数

vi /etc/sysctl.confnet.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 = 2sysctl -p

五、测试负载均衡

C:\Users\Y>curl 192.168.16.100
This is web1C:\Users\Y>curl 192.168.16.100
This is web2C:\Users\Y>curl 192.168.16.100
This is web2C:\Users\Y>curl 192.168.16.100
This is web2

六、测试LVS+Keepalived高可用群集

#添加持续访问脚本
for i in $(seq 1 100);do curl 192.168.16.100 ;sleep 1;done
#关闭主调度器
systemctl stop keepalived
#可发现客户端依然可以访问
for i in $(seq 1 100);do curl 192.168.16.100 ;sleep 1;done
This is web1
This is web2
This is web1
This is web2
This is web2

http://www.xdnf.cn/news/5607.html

相关文章:

  • [Java实战]Spring Boot 整合 Redis(十八)
  • Browserless 快速上手
  • FFmpeg 与 C++ 构建音视频处理全链路实战(一)—— 环境配置与视频解封装
  • ctfshow——web入门351~356
  • 【Pandas】pandas DataFrame cummax
  • web 自动化之 selenium 下拉鼠标键盘文件上传
  • FreeRTOS学习记录(变量命名规则全解、文件介绍)
  • 制造业IT管理方法论:柔性变更与数据治理的融合实践
  • 视觉-语言-动作模型:概念、进展、应用与挑战(上)
  • OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——nettle库
  • ActiveMQ 高级特性:延迟消息与优先级队列实战(一)
  • 【PmHub后端篇】Skywalking:性能监控与分布式追踪的利器
  • 15.three官方示例+编辑器+AI快速学习webgl_buffergeometry_instancing
  • PINN应用案例:神经网络求解热扩散方程高质量近似解
  • Python的安装使用
  • 深度策略梯度算法PPO
  • 《Asp.net Mvc 网站开发》复习试题
  • Java SpringMVC 异常处理:保障应用健壮性的关键策略
  • Spring Bean有哪几种配置方式?
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 09.天空和背景
  • 鸿蒙(HarmonyOS)应用开发入门教程
  • ISSCC 25 14.4 性能达51.6TFLOPs/W的全数据路径存内计算宏单元,逼近稀疏性极限,应用于复合人工智能时损失低于2-30
  • kafka消费组
  • 接口自动化测试设计思路--设计实战
  • 每日一题洛谷P8662 [蓝桥杯 2018 省 AB] 全球变暖c++
  • 专题二:二叉树的深度搜索(二叉树剪枝)
  • tryhackme——Lateral Movement and Pivoting
  • 状态压缩动态规划:用二进制“魔法”破解组合难题
  • 利用D435i相机进行SLAM实现建图的关键环节-----Kalibr标定工具以及常见的问题调试
  • idea查看pom文件依赖