Linux服務之lvs+keepalived nginx+keepalived負載均衡實例解析

目錄

一.LVS+KeepAlived高可用負載均衡集群的部署

二.Nginx+KeepAlived高可用負載均衡集群的部署


一.LVS+KeepAlived高可用負載均衡集群的部署

實驗環境

主keepalived:192.168.181.10? ? ?lvs? ?(7-1)
備keepalived:192.168.181.100? ? ?lvs? (7-2)
web1:192.168.181.11? ? ? ? ? ? ? ? ? ? ? ? ? ? (7-3)
web2:192.168.181.12? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (7-4)
vip:192.168.181.188
客戶機訪問

實驗開始前關閉所有機器的防火墻

systemctl stop firewalld.service?
setenforce 0

主上操作(7-1)

yum install ipvsadm keepalived -y

modprobe ip_vs

cat /proc/net/ip_vs

ipvsadm-save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

cd /etc/keepalived/

cp keepalived.conf keepalived.conf.bak
#復制一份

vim keepalived.conf (修改相關配置)

global_defs {
? ?notification_email {
? ? ?acassen@firewall.loc
? ? ?failover@firewall.loc
? ? ?sysadmin@firewall.loc
? ?}
? ?notification_email_from Alexandre.Cassen@firewall.loc
? ?smtp_server 127.0.0.1
? ?#修改郵箱指向自己(10行)
? ?smtp_connect_timeout 30
? ?router_id LVS_01
? ?#指定服務器名稱主備需要不一樣(12行)
? ?vrrp_skip_check_adv_addr
? ?#vrrp_strict
? ?#14行需要注釋否則服務啟動有問題
? ?vrrp_garp_interval 0
? ?vrrp_gna_interval 0
}

vrrp_instance VI_1 {
? ? state MASTER
? ? #指定服務器類型MASTER為主 BACKUP為備(20行)
? ? interface ens33
? ? #修改網卡名稱為ens33(21)
? ? virtual_router_id 10
? ? #指定虛擬路由器的ID號主備需要一致
? ? #nopreempt?
? ? #非搶占模式兩個節點都需要配置去掉注釋
? ? priority 100
? ? #設定優先級數字越大優先級越高,準備需要不一樣
? ? advert_int 1
? ? #通告間隔(查看是否存活)
? ? authentication {
? ? ? ? auth_type PASS
? ? ? ? #認證類型
? ? ? ? auth_pass 123456
? ? ? ? #修改驗證密碼,主備需要一樣(27行)
? ? }
? ? virtual_ipaddress {
? ? ? ? 192.168.181.188
? ? ? ? #指定群集vip地址
? ? }
}
virtual_server 192.168.181.188 80 {
? ? delay_loop 6
? ? #健康間隔時間6秒
? ? lb_algo rr
? ? #調度算法輪詢
? ? lb_kind DR
? ? #lvs模式為DR?
? ? persistence_timeout 0
? ? #連接保持時間改為0 否則 無法體現效果
? ? protocol TCP
? ? #采用協議
? ??
?real_server 192.168.181.11 80 {
?#43行修改地址為真實主機地址
? ? ? ? weight 1
? ? ? ? #45行刪除
? ? ? ? #節點權重
? ? ? ? TCP_CHECK {
? ? ? ? ? ? connect_port 80
? ? ? ? ? ? #檢查目標端口
? ? ? ? ? ? connect_timeout 3
? ? ? ? ? ? #連接超時?
? ? ? ? ? ? nb_get_retry 3
? ? ? ? ? ? #重試次數
? ? ? ? ? ? delay_before_retry 3
? ? ? ? ? ? #重試間隔時間
? ? ? ? }
? ? }
?real_server 192.168.181.12 80 {
?#第二個
? ? ? ? weight 1
? ? ? ? TCP_CHECK{
? ? ? ? ? ? connect_port 80
? ? ? ? ? ? connect_timeout 3
? ? ? ? ? ? nb_get_retry 3
? ? ? ? ? ? delay_before_retry 3
? ? ? ? }
? ? }

?scp /etc/keepalived/keepalived.conf ?root@192.168.181.100:/etc/keepalived/ (復制給從7-2)

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

?systemctl restart keepalived.service?

備上操作(7-2)

yum install ipvsadm keepalived -y
modprobe ip_vs
cat /proc/net/ip_vs
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
#復制一份
vim keepalived.conf (從主上拷貝過來的修改以下三項)

router_id LVS_02

state BACKUP
priority 90

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

systemctl restart keepalived.service?

在web1 web2 上操作

yum install httpd -y

ifconfig lo:0 192.168.181.188 netmask 255.255.255.255

vim /etc/sysctl.conf

net.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 = 2

sysctl -p

route add -host 192.168.91.188 dev lo:0
#設置路由

分別在web1 web2上輸入

echo ?7-3 > /var/www/html/index.html

echo ?7-4?> /var/www/html/index.html

最后用客戶機curl 192.168.181.188 會發現7-3 7-4 出現概率大概為1:1

即使關掉7-1lvs keepalived 7-2也可以支持工作

二.Nginx+KeepAlived高可用負載均衡集群的部署

實驗環境:

主keepalived:192.168.91.100 ? ? nginx
備keepalived:192.168.91.101? ? ?nginx
web1:192.168.91.102
web2:192.168.91.103 ? ?
vip:192.168.91.188
客戶機訪問

7-3 7-4
systemctl stop firewalld
setenforce 0
yum ?install httpd ?-y
echo ?7-3 > /var/www/html/index.html
systemctl start httpd

systemctl stop firewalld
setenforce 0
yum ?install httpd ?-y
echo ?7-4 > /var/www/html/index.html
systemctl start httpd

7-1?
systemctl stop firewalld
setenforce 0
yum install ?epel-release.noarch -y?
yum install ?-y ?nginx
systemctl start nginx

vim ? /etc/nginx/nginx.conf

?upstream web ?{
? ? server 192.168.91.102;
? ? server 192.168.91.103;
? ? }


?location / ?{
? ? ? ? ?proxy_pass ?http://web;
? ? ? ? }


scp ? /etc/nginx/nginx.conf ? ?192.168.91.101:/etc/nginx/nginx.conf

7-2

systemctl stop firewalld
setenforce 0
yum install ?epel-release.noarch -y?
yum install ?-y ? nginx
systemctl start nginx
?

7-1 ? 7-2 都要操作
yum install keepalived ? -y

7-1
vim /etc/keepalived/keepalived.conf


! Configuration File for keepalived

global_defs {
? ?notification_email {
? ? ?acassen@firewall.loc
? ? ?failover@firewall.loc
? ? ?sysadmin@firewall.loc
? ?}
? ?notification_email_from Alexandre.Cassen@firewall.loc
? ?smtp_server 127.0.0.1 ? ? ?# 修改郵箱地址
? ?smtp_connect_timeout 30 ?
? ?router_id LVS01 ? ? ? ? ? ?# 修改名稱
? ?vrrp_skip_check_adv_addr ?
? ?#vrrp_strict ? ? ? ? ? ? ?#關閉嚴格模式
? ?vrrp_garp_interval 0
? ?vrrp_gna_interval 0
}

vrrp_script check_down {
? ? ? ? script ?"/etc/keepalived/ng.sh" ??
? ? ? ? interval 1
? ? ? ? weight -30
? ? ? ? fall ?3
? ? ? ? rise 2
? ? ? ? timeout 2
}

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.91.188 ? #修改vip?
? ? }
? ? ?track_script {
? ? ?check_down
?}
? ??
}
?

vim ? ?/etc/keepalived/ng.sh
killall ? -0 ? ?nginx

chmod +x ? ?/etc/keepalived/ng.sh
scp ?/etc/keepalived/keepalived.conf ? 192.168.91.101://etc/keepalived/

7-2 ?上操作

vim /etc/keepalived/keepalived.conf

?state BACKUP
?priority 80??

?router_id LVS02 ?

vim ? ?/etc/keepalived/ng.sh
killall ? -0 ? ?nginx

chmod +x ? ?/etc/keepalived/ng.sh

最后用客戶機curl 192.168.181.188 會發現7-3 7-4 出現概率大概為1:1

即使關掉7-1nginx keepalived 7-2也可以支持工作

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83193.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83193.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83193.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

50天50個小項目 (Vue3 + Tailwindcss V4) ? |搭建項目框架

🖤 一個專注于「Vue3 TailwindCSS」的 50 天極簡開發挑戰,探索組件邊界,打磨技術鋒芒。 🎉 歡迎來到 50 個小項目的第一天!今天我們將從零開始搭建一個 Vue3 項目,并引入 Tailwind CSS v4,為后…

Android 中 網絡圖片加載庫 Glide 簡介

Glide 是一個功能強大且廣泛使用的圖片加載庫,適用于 Android 應用程序。它提供了簡單易用的 API,用于從網絡、本地存儲或資源中加載圖片,并支持圖片的緩存、轉換、占位圖、動畫等功能。 一、Glide 主要特點 簡單易用 提供簡潔的 API,一行代碼即可加載圖片。 支持多種數據…

07 web 自動化之 Unittest 應用:測試報告裝飾器斷言

文章目錄 一、常見的第三方庫結合 unittest 生產 html 格式測試報告1、HtmlTestRunner2、BeatifulReport 二、裝飾器 unittest.skip 強制跳過&條件跳過三、unittest的常用斷言方法 一、常見的第三方庫結合 unittest 生產 html 格式測試報告 1、HtmlTestRunner 官網下載 …

【Python 面向對象】

Python 的面向對象編程(OOP)通過類(Class)和對象(Object)實現代碼結構化,支持封裝、繼承和多態三大特性。以下是系統化指南: 一、類與對象基礎 1. 定義類 class Dog:# 類屬性&…

STM32F103_LL庫+寄存器學習筆記23 - PWM波形輸出及軟件方式調整周期與占空比

導言 脈寬調制(PWM)是 STM32 定時器最常用的輸出模式之一,廣泛應用于電機驅動、LED 調光、伺服控制和功率管理等場景。本篇文章將以 TIM5 為例,從寄存器層面深入剖析 PWM 輸出的原理與實現步驟。通過本篇博客,你不僅能…

堆(Heap)

1. 堆(Heap) 1.1. Python實現堆的插入、堆頂刪除和排序 class MaxHeap:def __init__(self):# 初始化空堆,使用列表表示self.heap []def insert(self, val):# 插入元素并執行上浮self.heap.append(val)self._sift_up(len(self.heap) - 1)de…

Spring類

BeanDefinition BeanDefinition表示Bean定義,BeanDefinition中存在很多屬性用來描述一個Bean的特點。比如: class,表示Bean類型scope,表示Bean作用域,單例或原型等lazyInit:表示Bean是否是懶加載initMeth…

在vue中this.$emit有哪些作用,事件監控具體含義,以及這些子組件能封裝哪些功能組件

this.$emit 的作用 this.$emit 的作用是觸發一個自定義事件,并將數據傳遞給父組件。父組件可以通過 v-on(或 )監聽這個事件,并在事件觸發時執行相應的處理函數。 this.content 的作用 this.content 是子組件的 props&#xff0…

前端流行框架Vue3教程:16. 組件事件配合`v-model`使用

組件事件配合v-model使用 如果是用戶輸入,我們希望在獲取數據的同時發送數據配合v-model 來使用,幫助理解組件間的通信和數據綁定。 🧩 第一步:創建子組件(SearchComponent.vue) 這個組件用于處理用戶的搜…

《Navicat之外的新選擇:實測支持國產數據庫的SQLynx核心功能解析》

數據庫工具生態的新變量 在數據庫管理工具領域,Navicat長期占據開發者心智。但隨著國產數據庫崛起和技術信創需求,開發者對工具的兼容性、輕量化和本土化適配提出了更高要求。近期體驗了一款名為SQLynx的國產數據庫管理工具(麥聰旗下產品&am…

AgenticSeek開源的完全本地的 Manus AI。無需 API,享受一個自主代理,它可以思考、瀏覽 Web 和編碼,只需支付電費。

?一、軟件介紹 文末提供程序和源碼下載 AgenticSeek開源的完全本地的 Manus AI。無需 API,享受一個自主代理,它可以思考、瀏覽 Web 和編碼,只需支付電費。這款支持語音的 AI 助手是 Manus AI 的 100% 本地替代品 ,可自主瀏覽網頁…

vue3.0的name屬性插件——vite-plugin-vue-setup-extend

安裝 這個由于是在開發環境下的一個插件 幫助我們支持name屬性 所以需要是-D npm i vite-plugin-vue-setup-extend -D在pasckjson中無法注釋每個插件的用處 可以在vscode中下載一個JsonComments這樣可以在json中添加注釋方便日后維護和查閱API 引入 在vite.config.js中 im…

Linux基礎 -- 在內存中使用chroot修復eMMC

Linux基礎 – 在內存中使用chroot修復eMMC 概述 本教程將介紹如何在Linux系統中,使用chroot在內存中構建一個臨時系統,并在不依賴原有系統的情況下修復eMMC(如/dev/mmcblk2)磁盤。該方法適用于嵌入式系統修復、磁盤清理以及離線…

人工智能、深度學習、機器學習的聯系與區別

定義 人工智能(AI - Artificial Intelligence) :是研究、開發用于模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新的技術科學。它旨在讓計算機能夠像人類一樣思考、學習和決策,涉及到諸如計算機視覺、自然語言處理…

web第二次課后作業--設計一個注冊登錄系統

一、頁面展示 登錄頁面 提交頁面 二、代碼 2.1 登錄頁面 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><html> <head><meta http-equiv"Content-Type" content"…

電腦桌面便簽哪個好?2025年電腦免費用的便簽軟件推薦

我們都知道&#xff0c;一個優秀的桌面便簽軟件可以成為提高效率的得力助手。無論是記錄臨時靈感、管理待辦事項&#xff0c;還是提醒重要日程&#xff0c;合適的便簽工具都能讓您的數字生活更加有序。本文將為您介紹2025年最值得推薦的免費電腦桌面便簽軟件&#xff0c;從Wind…

【SPIN】用Promela驗證順序程序:從斷言到SPIN實戰(SPIN學習系列--2)

你寫了一段自認為“天衣無縫”的程序&#xff0c;但如何確保它真的沒有bug&#xff1f;靠手動測試&#xff1f;可能漏掉邊界情況&#xff1b;靠直覺&#xff1f;更不靠譜&#xff01;這時候&#xff0c;Promela SPIN組合就像程序的“顯微鏡”——用形式化驗證技術&#xff0c;…

LabVIEW中樣條插值實現及應用

在 LabVIEW 編程環境下&#xff0c;B - 樣條插值是處理數據擬合與曲線平滑的重要工具。它憑借靈活的特性和良好的數學性質&#xff0c;在眾多工程領域中發揮著關鍵作用&#xff0c;能夠高效地根據離散數據點生成平滑連續的曲線&#xff0c;為數據分析和處理提供了有力支持。 一…

【油藏地球物理正演軟件ColchisFM】基于數據驅動的油藏參數疊前地震反演研究進展

科吉思基于油藏地球物理參數的正演軟件ColchisFM&#xff0c;有機融合了巖石物理正演與地震正演&#xff0c;具有良好的適用性和便捷性&#xff0c;在業內已經廣泛使用。當用戶在做正演模擬的同時&#xff0c;自然會聯想到是否可以直接開展油藏地球物理參數反演呢&#xff1f;答…

互聯網大廠Java求職面試:AI與大模型集成的云原生架構設計

互聯網大廠Java求職面試&#xff1a;AI與大模型集成的云原生架構設計 引言 在現代互聯網企業中&#xff0c;AI與大模型技術的應用已經成為不可或缺的一部分。特別是在短視頻平臺、電商平臺和金融科技等領域&#xff0c;如何高效地將大模型集成到現有的云原生架構中是一個巨大…