rocky9.2实现lvs(DR模式)+keepalived实现高可用的案例详解(双机热备、lvs负载均衡、对后端服务器健康检查)

### 文章目录

  • [@TOC](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)
  • [前言](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)
  • [lvs(DR模式)的工作原理](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)
  • [环境](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)
  • [实现过程](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)
  • [一、lvs1配置](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)
  • [二、lvs2配置](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)
  • [web1配置](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)
  • [web2配置](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)
  • [结果验证](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)
  • [总结](#文章目录 @[TOC] 前言 lvs(DR模式)的工作原理 环境 实现过程 一、lvs1配置 二、lvs2配置 web1配置 web2配置 结果验证 总结)

前言

想必能搜到这个也不是来看知识点的,这里就简单描述一下lvs的dr模式的工作原理,其他的就不过多阐述了,直接看操作步骤就好,还是很详细的

lvs(DR模式)的工作原理

LVS DR(Direct Routing)模式通过一个负载均衡器的虚拟 IP 地址(VIP)接收客户端请求,然后将请求转发给后端真实服务器(RIP),而不经过负载均衡器的返回路径,真实服务器直接将响应发回客户端。这也是和nat模式的区别所在,nat模式则需要经过负载均衡器返回。DR这种模式提高了性能和资源利用率,但所有真实服务器必须在同一局域网内。

环境

系统 主机名 ip 服务 虚拟ip
rocky9.2 lvs1 192.168.10.11 lvs+keepalived 192.168.10.111
rocky9.2 lvs2 192.168.10.12 lvs+keepalived 192.168.10.111
rocky9.2 web1 192.168.10.13 httpd 无
rocky9.2 web2 192.168.10.14 httpd 无
rocky9.2 client 192.168.10.11 仅访问使用 无

需要注意的地方

这篇博文的操作部分是根据原先centos7版本的笔记来做的,改了一些部分,可能有一些多余的操作,但最后结果是没有问题的

实现过程

一、lvs1配置

1.dnf安装ipvsadm和keepalived

复制代码
yum -y install ipvsadm keepalived

2. 加载ip_vs模块

复制代码
modprobe ip_vs

3.修改内核参数,关闭icmp重定向

复制代码
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

使配置生效

复制代码
sysctl -p

4.配置keepalived

主要有双机热备、lvs负载均衡、对后端服务器健康检查

复制代码
vim /etc/keepalived/keepalived.conf 
\ 复制代码
   global_defs {
       router_id LVS_DEVEL1
   }
   vrrp_instance VI_1 {
       state MASTER
       interface ens33
       virtual_router_id 51
       priority 100
       advert_int 1
       authentication {
           auth_type PASS
           auth_pass 1111
       }
       virtual_ipaddress {
           192.168.10.111
       }
   }
   virtual_server 192.168.10.111 80 {
       delay_loop 3
       lb_algo rr
       lb_kind DR
       persistence_timeout 0
       protocol TCP
       real_server 192.168.10.13 80 {
           weight 1
           TCP_CHECK {
               connect_timeout 10
               retry 3
               delay_before_retry 3
               connect_port 80
           }
       }
       real_server 192.168.10.14 80 {
           weight 1
           TCP_CHECK {
               connect_timeout 10
               retry 3
               delay_before_retry 3
               connect_port 80
           }
       }
   }

5.启动keepalived服务

复制代码
systemctl start keepalived
systemctl enable keepalived

不出意外的话ip add 是能看到虚拟ip的

复制代码
ip add
二、lvs2配置

这里跟lvs1同步,区别仅在于keepalived配置文件

复制代码
vim /etc/keepalived/keepalived.conf 
\ 复制代码
   global_defs {
       router_id LVS_DEiVEL2
   }
   vrrp_instance VI_1 {
       state BACKUP
       interface ens33
       virtual_router_id 51
       priority 99
       advert_int 1
       authentication {
           auth_type PASS
           auth_pass 1111
       }
       virtual_ipaddress {
           192.168.10.111
       }
   }
   virtual_server 192.168.10.111 80 {
       delay_loop 3
       lb_algo rr
       lb_kind DR
       persistence_timeout 0
       protocol TCP
       real_server 192.168.10.13 80 {
           weight 1
           TCP_CHECK {
               connect_timeout 10
               retry 3
               delay_before_retry 3
               connect_port 80
           }
       }
       real_server 192.168.10.14 80 {
           weight 1
           TCP_CHECK {
               connect_timeout 10
               retry 3
               delay_before_retry 3
               connect_port 80
           }
       }
   }
web1配置

1.配置虚拟ip

因为lvs是dr模式,所以这里也需要配置虚拟ip才行

本来想配置永久ip地址的,结果老是出问题,所以这里就配置临时ip了

不过更怪的就来了,我重启这个接口后这个ip还会存在

呃呃呃,凑合用吧

复制代码
ip addr add 192.168.10.111/32 dev lo

2.添加一条到虚拟ip的路由

复制代码
route add -host 192.168.10.111 dev lo

3.关闭到虚拟IP的arp响应

复制代码
vim /etc/sysctl.conf
\ 复制代码
net.ipv4.conf.default.arp_ignore = 1 
net.ipv4.conf.all.arp_ignore = 1 
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.default.arp_announce =2 
net.ipv4.conf.all.arp_announce =2
net.ipv4.conf.lo.arp_announce = 2

使配置生效

复制代码
sysctl -p

4.配置服务(httpd)

复制代码
yum -y install httpd
echo web1 > /var/www/html/index.html
systemctl start httpd
systemctl enable httpd

浏览器查看

web2配置

同web1

区别仅有web页面内容不一样

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

浏览器查看

结果验证

客户机(client)访问虚拟ip

在lvs1断开主keepalived查看热备效果

复制代码
systemctl stop keepalived
ip add

可以看到已经没有虚拟ip了

在lvs2查看

复制代码
ip add

可以看到虚拟ip地址已经转移过去了

客户机访问

可以看到客户机访问也是没有问题

恢复主keepalived

复制代码
systemctl start keepalived
ip add

可以看到虚拟地址已经回来了

lvs2查看

虚拟地址已经消失

客户端访问验证

依旧没有问题

总结

大体就是上面这些操作了

如果能看到这里,提前祝大家国庆快乐,吃好玩好

相关推荐
无奈笑天下7 小时前
银河麒麟上nproc命令教程详解
linux·运维·服务器
Rabitebla10 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
火云代理10 小时前
更换网络后为什么会退出登录?分清 IP、Cookie 与会话的关系
服务器·网络·网络协议·tcp/ip·php·ip
威嵌神州10 小时前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存
Decay__11 小时前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
罗小爬EX11 小时前
Helm 从概念到实战:以一个普通 Web 应用为例
云原生·helm
java_logo12 小时前
Docker 部署 DeepSeek Harness(moelin):轻松搭建带登录的本地 AI Agent 平台
运维·docker·容器·ai agent·deepseek·harness·轩辕镜像
火云代理14 小时前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖14 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
AI_Gump14 小时前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek