LVS+keepalived实战案例

目录

部署LVS

安装软件

创建VIP

创建保存规则文件

给RS添加规则

验证规则

部署RS端

安装软件

页面内容

添加VIP

配置系统ARP

传输到rs-2

客户端测试

查看规则文件

实现keepalived

编辑配置文件

传输文件给backup

修改backup的配置文件

开启keepalived服务

查看VIP

停止master查看VIP是否漂移

测试访问

LVS的高可用已实现

部署LVS

安装软件

[root@lvs-master ~]# yum install ipvsadm keepalived -y[root@lvs-backup ~]# yum install ipvsadm keepalived -y

创建VIP

[root@lvs-master ~]# ip a a dev ens160 192.168.193.20/32[root@lvs-backup ~]# ip a a dev ens160 192.168.193.20/32

创建保存规则文件

[root@lvs-master ~]# ipvsadm -S > /etc/sysconfig/ipvsadm
[root@lvs-master ~]# systemctl start ipvsadm[root@lvs-backup ~]# ipvsadm -S > /etc/sysconfig/ipvsadm
[root@lvs-backup ~]# systemctl start ipvsadm

给RS添加规则

[root@lvs-master ~]# ipvsadm -A -t 192.168.193.20:80 -s rr
[root@lvs-master ~]# ipvsadm -a -t 192.168.193.20:80 -r 192.168.193.162:80 -g
[root@lvs-master ~]# ipvsadm -a -t 192.168.193.20:80 -r 192.168.193.163:80 -g[root@lvs-backup ~]# ipvsadm -A -t 192.168.193.20:80 -s rr
[root@lvs-backup ~]# ipvsadm -a -t 192.168.193.20:80 -r 192.168.193.162:80 -g
[root@lvs-backup ~]# ipvsadm -a -t 192.168.193.20:80 -r 192.168.193.163:80 -g

验证规则

[root@lvs-master ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.193.20:80 rr-> 192.168.193.162:80           Route   1      0          0         -> 192.168.193.163:80           Route   1      0          0  [root@lvs-backup ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.193.20:80 rr-> 192.168.193.162:80           Route   1      0          0         -> 192.168.193.163:80           Route   1      0          0  

部署RS端

安装软件

[root@rs-1 ~]# yum install -y nginx[root@rs-1 ~]# systemctl start nginx[root@rs-2 ~]# yum install -y nginx[root@rs-2 ~]# systemctl start nginx

页面内容

[root@rs-1 ~]# echo "rs-1" > /usr/share/nginx/html/index.html[root@rs-2 ~]# echo "rs-2" > /usr/share/nginx/html/index.html

添加VIP

[root@rs-1 ~]# ip a a dev lo 192.168.193.20/32[root@rs-2 ~]# ip a a dev lo 192.168.193.20/32

配置系统ARP

忽略ARP广播

匹配精确ip地址回包

[root@rs-1 ~]# vim /etc/sysctl.conf
[root@rs-1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

传输到rs-2

[root@rs-1 ~]# scp /etc/sysctl.conf root@192.168.193.163:/etc/sysctl.conf
The authenticity of host '192.168.193.163 (192.168.193.163)' can't be established.
ED25519 key fingerprint is SHA256:uMFqXde/hjx7VDo4nYuEbEq2Mf0JkBwzkezkB5D64NQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.193.163' (ED25519) to the list of known hosts.
root@192.168.193.163's password: 
sysctl.conf                               100%  584   893.1KB/s   00:00  [root@rs-2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

客户端测试

[root@localhost ~]# curl 192.168.193.20
rs-1
[root@localhost ~]# curl 192.168.193.20
rs-2
[root@localhost ~]# curl 192.168.193.20
rs-1
[root@localhost ~]# curl 192.168.193.20
rs-2
[root@localhost ~]# curl 192.168.193.20
rs-1

查看规则文件

增加了访问次数

[root@lvs-master ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.193.20:80 rr-> 192.168.193.162:80           Route   1      0          0         -> 192.168.193.163:80           Route   1      0          0 

实现keepalived

编辑配置文件

[root@lvs-master ~]# cd /etc/keepalived/
[root@lvs-master keepalived]# ls
keepalived.conf[root@lvs-master keepalived]# cat keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id master
}vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 80priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.193.20/24}
}
virtual_server 192.168.193.20 80 {delay_loop 3lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.193.162 80 {weight 1inhibit_on_failure TCP_CHECK {connect_port 80 connect_timeout 3  } }	real_server 192.168.193.163 80 {weight 1inhibit_on_failureTCP_CHECK {     connect_port 80 connect_timeout 3}}}

传输文件给backup

[root@lvs-master keepalived]# scp /etc/keepalived/keepalived.conf root@192.168.193.165:/etc/keepalived/keepalived.conf
The authenticity of host '192.168.193.165 (192.168.193.165)' can't be established.
ED25519 key fingerprint is SHA256:uMFqXde/hjx7VDo4nYuEbEq2Mf0JkBwzkezkB5D64NQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.193.165' (ED25519) to the list of known hosts.
root@192.168.193.165's password: 
keepalived.conf                                    100%  771     1.0MB/s   00:00 

修改backup的配置文件

nopreempt  #不抢占资源

[root@lvs-backup ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalivedglobal_defs {router_id backup
}vrrp_instance VI_1 {state BACKUPinterface ens160nopreemptvirtual_router_id 80priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.193.20/24}
}
virtual_server 192.168.193.20 80 {delay_loop 3lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.193.162 80 {weight 1inhibit_on_failure TCP_CHECK {connect_port 80 connect_timeout 3  } }	real_server 192.168.193.163 80 {weight 1inhibit_on_failureTCP_CHECK {     connect_port 80 connect_timeout 3}}}

开启keepalived服务

[root@lvs-master ~]# systemctl start keepalived
[root@lvs-master ~]# systemctl status keepalived
● keepalived.service - LVS and VRRP High Availability MonitorLoaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; preset: d>Active: active (running) since Tue 2025-05-13 20:27:23 CST; 7s agoMain PID: 17223 (keepalived)Tasks: 3 (limit: 5900)Memory: 2.2M[root@lvs-backup ~]# systemctl start keepalived
[root@lvs-backup ~]# systemctl status keepalived
● keepalived.service - LVS and VRRP High Availability MonitorLoaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; preset: d>Active: active (running) since Tue 2025-05-13 20:28:13 CST; 6s agoMain PID: 6321 (keepalived)Tasks: 3 (limit: 5900)

查看VIP

[root@lvs-master ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:1a:14:ce brd ff:ff:ff:ff:ff:ffaltname enp3s0inet 192.168.193.164/24 brd 192.168.193.255 scope global dynamic noprefixroute ens160valid_lft 1581sec preferred_lft 1581secinet 192.168.193.20/32 scope global ens160valid_lft forever preferred_lft foreverinet 192.168.193.20/24 scope global secondary ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe1a:14ce/64 scope link noprefixroute valid_lft forever preferred_lft forever[root@lvs-backup ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:e1:d9:00 brd ff:ff:ff:ff:ff:ffaltname enp3s0inet 192.168.193.165/24 brd 192.168.193.255 scope global dynamic noprefixroute ens160valid_lft 1067sec preferred_lft 1067secinet 192.168.193.20/32 scope global ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fee1:d900/64 scope link noprefixroute valid_lft forever preferred_lft forever

停止master查看VIP是否漂移

[root@lvs-master ~]# systemctl stop keepalived
[root@lvs-master ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:1a:14:ce brd ff:ff:ff:ff:ff:ffaltname enp3s0inet 192.168.193.164/24 brd 192.168.193.255 scope global dynamic noprefixroute ens160valid_lft 1413sec preferred_lft 1413secinet 192.168.193.20/32 scope global ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe1a:14ce/64 scope link noprefixroute valid_lft forever preferred_lft forever[root@lvs-backup ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:e1:d9:00 brd ff:ff:ff:ff:ff:ffaltname enp3s0inet 192.168.193.165/24 brd 192.168.193.255 scope global dynamic noprefixroute ens160valid_lft 1795sec preferred_lft 1795secinet 192.168.193.20/32 scope global ens160valid_lft forever preferred_lft foreverinet 192.168.193.20/24 scope global secondary ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fee1:d900/64 scope link noprefixroute valid_lft forever preferred_lft forever

测试访问

[root@localhost ~]# curl 192.168.193.20
rs-1
[root@localhost ~]# curl 192.168.193.20
rs-2
[root@localhost ~]# curl 192.168.193.20
rs-1

LVS的高可用已实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/82854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(C语言)超市管理系统(测试版)(指针)(数据结构)(二进制文件读写)

目录 前言&#xff1a; 源代码&#xff1a; product.h product.c fileio.h fileio.c main.c 代码解析&#xff1a; fileio模块&#xff08;文件&#xff08;二进制&#xff09;&#xff09; 写文件&#xff08;保存&#xff09; 函数功能 代码逐行解析 关键知识点 读文…

ubuntu----100,常用命令2

目录 文件与目录管理系统信息与管理用户与权限管理网络配置与管理软件包管理打包与压缩系统服务与任务调度硬件信息查看系统操作高级工具开发相关其他实用命令 在 Ubuntu 系统中&#xff0c;掌握常用命令可以大幅提升操作效率。以下是一些常用的命令&#xff0c;涵盖了文件管理…

WiFi密码查看器打开软件自动获取数据

相信有很大一部分人都不知道怎么看已经连过的WiFi密码。 你还在手动查询自己的电脑连接过得WiFi密码吗&#xff1f; —————【下 载 地 址】——————— 【本章单下载】&#xff1a;https://drive.uc.cn/s/dbbedf933dad4 【百款黑科技】&#xff1a;https://ucnygalh6…

开目新一代MOM:AI赋能高端制造的破局之道

导读 INTRODUCTION 在高端制造业智能化转型的深水区&#xff0c;企业正面临着个性化定制、多工艺场景、动态生产需求的敏捷响应以及传统MES柔性不足的考验……在此背景下&#xff0c;武汉开目信息技术股份有限公司&#xff08;简称“开目软件”&#xff09;正式发布新一代开目…

Android开发-视图基础

在Android应用开发中&#xff0c;视图&#xff08;View&#xff09;是构建用户界面的基本元素。无论是按钮、文本框还是复杂的自定义控件&#xff0c;它们都是基于View类或其子类实现的。掌握视图的基础知识对于创建功能强大且美观的应用至关重要。本文将深入探讨Android中的视…

无人机信号线被电磁干扰导致停机

问题描述&#xff1a; 无人机飞控和电调之间使用PWM信号控制时候&#xff0c;无人机可以正常起飞&#xff0c;但是在空中悬停的时候会出现某一个电机停机&#xff0c;经排查电调没有启动过流过压等保护&#xff0c;定位到电调和飞控之间的信号线被干扰问题。 信号线被干扰&am…

VSCode设置SSH免密登录

引言 2025年05月13日20:21:14 原来一直用的PyCharn来完成代码在远程服务器上的运行&#xff0c;但是PyCharm时不时同步代码会有问题。因此&#xff0c;尝试用VSCode来完成代码SSH远程运行。由于VSCode每次进行SSH连接的时候都要手动输入密码&#xff0c;为了解决这个问题在本…

硬密封保温 V 型球阀:恒温工况下复杂介质控制的性价比之选-耀圣

硬密封保温 V 型球阀&#xff1a;恒温工况下复杂介质控制的性价比之选 在沥青储运、化学原料加工、食品油脂输送等工业领域&#xff0c;带颗粒高粘度介质与料浆的恒温输送一直是生产的关键环节。普通阀门在应对此类介质时&#xff0c;常因温度流失导致介质凝结堵塞、密封失效&…

最终一致性和强一致性

最终一致性和强一致性是分布式系统中两种不同的数据一致性模型&#xff0c;它们在数据同步的方式和适用场景上有显著区别&#xff1a; 1. 强一致性&#xff08;Strong Consistency&#xff09; 定义&#xff1a;所有节点&#xff08;副本&#xff09;的数据在任何时刻都保持一…

基于单应性矩阵变换的图像拼接融合

单应性矩阵变换 单应性矩阵是一个 3x3 的可逆矩阵&#xff0c;它描述了两个平面之间的投影变换关系。在图像领域&#xff0c;单应性矩阵可以将一幅图像中的点映射到另一幅图像中的对应点&#xff0c;前提是这两幅图像是从不同视角拍摄的同一平面场景。 常见的应用场景&#x…

如何同步虚拟机文件夹

以下是一些常见的同步虚拟机文件夹的方法&#xff1a; 使用共享文件夹&#xff08;以VMware和VirtualBox为例&#xff09; - VMware&#xff1a;打开虚拟机&#xff0c;选择“虚拟机”->“设置”&#xff0c;在“选项”中选择“共享文件夹”&#xff0c;点击“添加”选择…

前端流行框架Vue3教程:15. 组件事件

组件事件 在组件的模板表达式中&#xff0c;可以直接使用$emit方法触发自定义事件 触发自定义事件的目的是组件之间传递数据 我们来创建2个组件。父组件&#xff1a; ComponentEvent.vue,子组件&#xff1a;Child.vue Child.vue <script> export default {// 子组件通…

Python+1688 API 开发教程:实现商品实时数据采集的完整接入方案

在电商行业竞争日益激烈的当下&#xff0c;掌握商品实时数据是企业制定精准营销策略、优化供应链管理的关键。1688 作为国内重要的 B2B 电商平台&#xff0c;其开放平台提供了丰富的 API 接口&#xff0c;借助 Python 强大的数据处理能力&#xff0c;我们能够高效实现商品数据的…

聊一聊Electron中Chromium多进程架构

Chromium 多进程架构概述 Chromium 的多进程架构是其核心设计之一&#xff0c;旨在提高浏览器的稳定性、安全性和性能。Chromium 将不同的功能模块分配到独立的进程中&#xff0c;每个进程相互隔离&#xff0c;避免了单进程架构中一个模块的崩溃导致整个浏览器崩溃的问题。 在…

CodeBuddy 中国版 Cursor 实战:Redis+MySQL双引擎驱动〈王者荣耀〉战区排行榜

文章目录 一、引言二、系统架构设计2.1、整体架构概览2.2、数据库设计2.3、后端服务设计 三、实战&#xff1a;从零构建排行榜3.1、开发环境准备3.2、用户与战区 数据管理3.2.1、MySQL 数据库表创建3.2.2、实现用户和战区数据的 CURD 操作 3.3、实时分数更新3.4、排行榜查询3.5…

Oracle OCP认证考试考点详解083系列15

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 71. 第71题&#xff1a; 题目 解析及答案&#xff1a; 关于在 Oracle 18c 及更高版本中基于 Oracle 黄金镜像的安装&#xff0c;以下哪…

LS-NET-012-TCP的交互过程详解

LS-NET-012-TCP的交互过程详解 附加&#xff1a;TCP如何保障数据传输 TCP的交互过程详解 一、TCP协议核心交互流程 TCP协议通过三次握手建立连接、数据传输、四次挥手终止连接三大阶段实现可靠传输。整个过程通过序列号、确认应答、窗口控制等机制保障传输可靠性。 1.1 三次…

【Pandas】pandas DataFrame cumprod

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…

C语言之旅5---分支与循环【2】

&#x1f4ab;只有认知的突破&#x1f4ab;才来带来真正的成长&#x1f4ab;编程技术的学习&#x1f4ab;没有捷径&#x1f4ab;一起加油&#x1f4ab; &#x1f341;感谢各位的观看&#x1f341;欢迎大家留言&#x1f341;咱们一起加油&#x1f341;努力成为更好的自己&#x…

docker大镜像优化实战

在 Docker 镜像优化方面&#xff0c;有许多实战技巧可以显著减小镜像体积、提高构建效率和运行时性能。以下是一些实用的优化策略和具体操作方法&#xff1a; 1. 选择合适的基础镜像 策略 使用 Alpine 版本&#xff1a;Alpine 镜像通常只有 5-10MB&#xff0c;比 Ubuntu/Deb…