LVS負載均衡之--Keepalived模式(超詳細)

一.Keepalived概述

  • Keepalived起初是專門針對LVS設計的一款強大的輔助工具,主要用來提供故障切換和健康檢查功能-----判斷LVS負載調度器,節點服務器的可用性,及時隔離并替換為新的服務器,當故障主機恢復后將其重新加入群集中
  • Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,并將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常后Keepalived自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。
    ?

1.1Keepalived的工作原理

Keepalived 是一個基于VRRP協議來實現的LVS服務高可用方案,可以解決靜態路由出現的單點故障問題。

在一個LVS服務集群中通常有主服務器(MASTER)和備份服務器(BACKUP)兩種角色的服務器,但是對外表現為一個虛擬IP,主服務器會發送VRRP通告信息給備份服務器,當備份服務器收不到VRRP消息的時候,即主服務器異常的時候,備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。
?

1.2Keepalived體系主要模塊及其作用

?? keepalived體系架構中主要有三個模塊,分別是core、check和vrrp。

  • core模塊:為keepalived的核心,負責主進程的啟動、維護及全局配置文件的加載和解析。
  • vrrp模塊:是來實現VRRP協議的。
  • check模塊:負責健康檢查,常見的方式有端口檢查及URL檢查。

1.3?VRRP (虛擬路由冗余協議)

vrrp會把多臺路由器組成一個虛擬路由組vrid,VRRP會生成一個虛擬路由(包含虛擬IP和虛擬MAC,局域網內用戶不關心哪個是主哪個是備,他們只用虛擬路由器的的虛擬IP作為他們的網關)實際上虛擬IP是承載再master路由器,也就是說實際的數據通過master進行轉發,backup是通過優先級來決定哪個是master路由,優先級最大的那臺就是master,backup只是用來監聽master定時發來的vrrp報文,如果超時未收到master發來的vrrp報文 backup就會搶占master 虛擬IP也就會一漂移到backup上
?

二、LVS負載均衡之--Keepalived模式實例部署

部署準備

主服務器:192.168.50.22? ? ?虛擬VIP:192.168.50.23

備服務器:192.168.50.41

Web服務器1:192.168.50.56

Web服務器2:192.168.50.57

?部署主服務器配置(192.168.50.22)

必須執行操作

1.#關閉防火墻

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0

[root@localhost keepalived]# modprobe ip_vs
[root@localhost keepalived]# cat /proc/net/ip_vs

2.#安裝Keepalived服務

[root@localhost ~]# yum -y install ipvsadm keepalived

3.#備份keeplived.conf文件

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# ls

4.#修改配置keeplived.conf文件

[root@localhost keepalived]# vim keepalived.conf

--10行--修改,郵件服務指向本地
? smtp_server 127.0.0.1

--12行--修改,指定服務器(路由器)的名稱,主備服務器名稱須不同,主為LVS_01,備為LVS_02

? router_id LVS_01

--14行--注釋掉,取消嚴格遵守VRRP協議功能,否則VIP無法被連接

? ?#vrrp_strict

vrrp_instance VI_1 { ? ? ? ? ? ? ? ?#定義VRRP熱備實例參數
--20行--修改,指定熱備狀態,主為MASTER,備為BACKUP
? ? state MASTER
--21行--修改,指定承載vip地址的物理接口
? ? interface ens33
--22行--修改,指定虛擬路由器的ID號,每個熱備組保持一致 ? ?
? ? virtual_router_id 10
? ? #nopreempt ? ? ? ?#如果設置非搶占模式,兩個節點state必須為bakcup,并加上配置 nopreempt
--23行--修改,指定優先級,數值越大優先級越高,這里設置主為100,備為90
? ? priority 100
? ? advert_int 1 ? ? ? ? ? ? ? ? ? ?#通告間隔秒數(心跳頻率)
? ? authentication { ? ? ? ? ? ? ? ?#定義認證信息,每個熱備組保持一致
? ? ? ? auth_type PASS ? ? ? ? ? ? ? ?#認證類型
--27行--修改,指定驗證密碼,主備服務器保持一致
? ? ? ? auth_pass 123
? ? }
? ? virtual_ipaddress { ? ? ? ? ? ? ? ?#指定群集vip地址
? ? ? ? 192.168.50.23
? ? }
}

--36行--修改,指定虛擬服務器地址(VIP)、端口,定義虛擬服務器和Web服務器池參數
virtual_server 192.168.50.23?80 {
? ? delay_loop 6 ? ? ? ? ? ? ? ? ? ?#健康檢查的間隔時間(秒)
? ? lb_algo rr ? ? ? ? ? ? ? ? ? ? ? ?#指定調度算法,輪詢(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
? ? lb_kind DR
? ? persistence_timeout 0 ? ? ? ? ? ?#連接保持時間(秒)
? ? protocol TCP ? ? ? ? ? ? ? ? ? ?#應用服務采用的是 TCP協議
--43行--修改,指定第一個Web節點的地址、端口
? ? real_server 192.168.50.56?80 {
? ? ? ? weight 1 ? ? ? ? ? ? ? ? ? ?#節點的權重
--45行--刪除,添加以下健康檢查方式 ? ? ? ?
? ? ? ? TCP_CHECK {
? ? ? ? ? ? connect_port 80 ? ? ? ? ? ?#添加檢查的目標端口
? ? ? ? ? ? connect_timeout 3 ? ? ? ?#添加連接超時(秒)
? ? ? ? ? ? nb_get_retry 3 ? ? ? ? ? ?#添加重試次數
? ? ? ? ? ? delay_before_retry 3 ? ?#添加重試間隔
? ? ? ? }
? ? }

? ? real_server 192.168.50.57?80 { ? ? ? ?#添加第二個 Web節點的地址、端口
? ? ? ? weight 1
? ? ? ? TCP_CHECK {
? ? ? ? ? ? connect_port 80
? ? ? ? ? ? connect_timeout 3
? ? ? ? ? ? nb_get_retry 3
? ? ? ? ? ? delay_before_retry 3
? ? ? ? }
? ? }
##刪除后面多余的配置##
}

5.#刷新服務并查看虛擬網卡的IP

[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33?

6.#調整響應參數

[root@localhost keepalived]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

?#刷新一下

?[root@localhost keepalived]# sysctl -p

7.#配置策略并且啟動服務

?[root@localhost keepalived]# ipvsadm-save >/etc/sysconfig/ipvsadm
?[root@localhost keepalived]# systemctl start ipvsadm

8.#清空ipvsadm,并做策略

?[root@localhost keepalived]# ipvsadm -C
[root@localhost keepalived]# ipvsadm -A -t 192.168.50.23:80 -s rr
[root@localhost keepalived]# ?ipvsadm -a -t 192.168.50:23:80 -r 192.168.50.56:80 -g
illegal virtual server address[:port] specified
[root@localhost keepalived]# ?ipvsadm -a -t 192.168.50.23:80 -r 192.168.50.56:80 -g
[root@localhost keepalived]# ?ipvsadm -a -t 192.168.50.23:80 -r 192.168.50.57:80 -g
[root@localhost keepalived]# ipvsadm?

[root@localhost keepalived]# ipvsadm -ln

?[root@localhost keepalived]# ipvsadm-save >/etc/sysconfig/ipvsadm

部署備服務器配置(192.168.50.41)

注:所有部署參照上方部署主服務器配置

部署節點服務器

Web服務器1:192.168.50.56

Web服務器2:192.168.50.57

Web服務器2:192.168.50.56

1.#關閉防火墻

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

2.#安裝并開啟httpd服務

[root@localhost ~]#yum -y install httpd

[root@localhost ~]#systemctl start httpd

3.#配置站點文件

[root@localhost ~]# vim /var/www/html/index.html

?4.#配置虛擬IP

[root@localhost ~]#? /etc/sysconfig/network-scripts/ifcfg-lo:0
[root@localhost opt]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.50.23
NETMASK=255.255.255.255

5.#重啟服務并配置虛擬網卡
[root@localhost network-scripts]# systemctl restart network

[root@localhost ~]# ifup lo:0
[root@localhost ~]# ifconfig lo:0

6.#設置路由

[root@localhost ~]# route add -host 192.168.50.23 dev lo:0
[root@localhost ~]# route -n

7.?#調整響應參數并查看

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

?[root@localhost ~]# sysctl -p ? ? ? ? ? ?

注:Web服務器2:192.168.50.57 同Web服務器2配置

瀏覽器驗證?

?過一會刷新

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

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

相關文章

【數據結構】二叉樹

🐇 🔥博客主頁: 云曦 📋系列專欄:數據結構 💨吾生也有涯,而知也無涯 💛 感謝大家👍點贊 😋關注📝評論 文章目錄 前言一、樹的概念及結構&#x…

簡單理解Python中的深拷貝與淺拷貝

I. 簡介 深拷貝會遞歸的創建一個完全獨立的對象副本,包括所有嵌套的對象,而淺拷貝只復制嵌套對象的引用,不復制嵌套對象本身。 簡單來說就是兩者都對原對象進行了復制,因此使用is運算符來比較新舊對象時,返回的都是F…

java把數字轉換成漢字 java 數字轉漢字

使用java將數字轉化為中文漢字_java數字轉中文_javaerly的博客-CSDN博客 package com.unicom.apartment.utils;public class NumUtil {public static String convert(int number) {if(number < 0){return "";}if(number 1){return "當天";}//數字對應的…

C#實現普通的語音播報

Windows有文字轉語音功能&#xff0c;C#提供了調用的類庫Interop.SpeechLib.dll 使用方法很簡單&#xff0c;在你的項目中添加Interop.SpeechLib.dll引用&#xff0c;在類中引用&#xff1a; using SpeechLib;這里提供一個CVoice類 幫助實現語音播報 public class CVoice{pri…

【5G 核心網】5G 多PDU會話錨點技術介紹

博主未授權任何人或組織機構轉載博主任何原創文章&#xff0c;感謝各位對原創的支持&#xff01; 博主鏈接 本人就職于國際知名終端廠商&#xff0c;負責modem芯片研發。 在5G早期負責終端數據業務層、核心網相關的開發工作&#xff0c;目前牽頭6G算力網絡技術標準研究。 博客…

Spring Boot(六十四):SpringBoot集成Gzip壓縮數據

1 實現思路 2 實現 2.1 創建springboot項目 2.2 編寫一個接口,功能很簡單就是傳入一個Json對象并返回 package com.example.demo.controller;import com.example.demo.entity.Advertising; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframewo…

LeetCode150道面試經典題-- 加一(簡單)

1.題目 給定一個由 整數 組成的 非空 數組所表示的非負整數&#xff0c;在該數的基礎上加一。 最高位數字存放在數組的首位&#xff0c; 數組中每個元素只存儲單個數字。 你可以假設除了整數 0 之外&#xff0c;這個整數不會以零開頭。 2.示例 示例 1&#xff1a; 輸入&am…

excel提示更新外部引用文件 這個提示能手動禁用

是的&#xff0c;你可以手動禁用 Excel 中的更新外部引用文件的提示。這些步驟可能因 Excel 版本而有所不同&#xff0c;以下是一般的步驟&#xff1a; 1. **打開 Excel**&#xff1a; 2. **進入“選項”**&#xff1a; - 在 Excel 中&#xff0c;點擊頂部菜單中的“文件”…

網絡通信原理傳輸層TCP三次建立連接(第四十八課)

ACK :確認號 。 是期望收到對方的下一個報文段的數據的第1個字節的序號,即上次已成功接收到的數據字節序號加1。只有ACK標識為1,此字段有效。確認號X+1SEQ:序號字段。 TCP鏈接中傳輸的數據流中每個字節都編上一個序號。序號字段的值指的是本報文段所發送的數據的第一個字節的…

「UG/NX」Block UI 面收集器FaceCollector

?博客主頁何曾參靜謐的博客??文章專欄「UG/NX」BlockUI集合??全部專欄「UG/NX」NX二次開發「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序設計「C/C+&#

LangChain手記 Question Answer 問答系統

整理并翻譯自DeepLearning.AILangChain的官方課程&#xff1a;Question Answer&#xff08;源代碼可見&#xff09; 本節介紹使用LangChian構建文檔上的問答系統&#xff0c;可以實現給定一個PDF文檔&#xff0c;詢問關于文檔上出現過的某個信息點&#xff0c;LLM可以給出關于該…

【vue】項目基礎環境搭建、css樣式重置與公用

nodejs環境 nodejs是當下前端工程化開發必不可少的環境, 使用 nodejs的 npm功能來管理依賴包 查看node 和 npm的版本 node -v #查看node版本npm -v #查看npm版本 git版本控制 git版本控制工具是目前最為流行的分布式版本管理工具,代碼的**提交, 檢出, 日志**, 都需要通過git完…

Matplotlib數據可視化(二)

目錄 1.rc參數設置 1.1 lines.linestype取值 1.2 lines.marker參數的取值 1.3 繪圖中文預設 1.4 示例 1.4.1 示例1 1.4.2 示例2 1.rc參數設置 利用matplotlib繪圖時為了讓繪制出的圖形更加好看&#xff0c;需要對參數進行設置rc參數設置。可以通過以下代碼查看matplotli…

C++11并發與多線程筆記(8) condition_variable、wait、notify_one、notify_all

C11并發與多線程筆記&#xff08;8&#xff09; condition_variable、wait、notify_one、notify_all 1、條件變量condition_variable、wait、notify_one、notify_all1.1 std::condition_variable1.2 wait()1.3 notify_one()1.4 notify_all() 2、深入思考 1、條件變量condition_…

JS內存泄漏

JS內存泄漏 1.意外的全局變量 全局變量的生命周期很長&#xff0c;直到頁面關閉&#xff0c;它都存活&#xff0c;所以全局變量上的內存一直都不會被回收 當全局變量使用不當&#xff0c;沒有及時回收&#xff08;手動賦值null&#xff09;&#xff0c;或者拼寫錯誤等將某個變…

[Machine Learning] decision tree 決策樹

&#xff08;為了節約時間&#xff0c;后面關于機器學習和有關內容哦就是用中文進行書寫了&#xff0c;如果有需要的話&#xff0c;我在目前手頭項目交工以后&#xff0c;用英文重寫一遍&#xff09; &#xff08;祝&#xff0c;本文同時用于比賽學習筆記和機器學習基礎課程&a…

【算法學習】兩數之和II - 輸入有序數組

題目描述 原題鏈接 給你一個下標從 1 開始的整數數組 numbers &#xff0c;該數組已按 非遞減順序排列 &#xff0c;請你從數組中找出滿足相加之和等于目標數 target 的兩個數。如果設這兩個數分別是 numbers[index1] 和 numbers[index2] &#xff0c;則 1 < index1 < …

Springboot MultipartFile文件上傳與下載

yml文件配置是否可以上傳及上傳附件大小 servlet:multipart:# 允許文件上傳enabled: true# 單個文件大小max-file-size: 20MB# 設置總上傳的文件大小max-request-size: 50MB /*** param files* param request* Description 上傳文件* Throws* Return java.util.List* Date 202…

南大通用數據庫(Gbase 8s) 創建UDR外部函數

一、在使用 date_format、from_unixtime、to_days、yearweek 函數時&#xff0c;Gbase 8s 數據庫不支持&#xff0c;可以使用創建 UDR 外部函數來實現 二、登錄命令控制臺或者使用 navicat 連接 Gbase 數據庫 這里使用 navicat &#xff0c;點擊新增連接選擇 PostGreSql 驅動…

動手學深度學習—卷積神經網絡LeNet(代碼詳解)

1. LeNet LeNet由兩個部分組成&#xff1a; 卷積編碼器&#xff1a;由兩個卷積層組成&#xff1b;全連接層密集塊&#xff1a;由三個全連接層組成。 每個卷積塊中的基本單元是一個卷積層、一個sigmoid激活函數和平均匯聚層&#xff1b;每個卷積層使用55卷積核和一個sigmoid激…