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.pswp.cn/diannao/82854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82854.shtml
英文地址,請注明出處:http://en.pswp.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…