小阿軒yx-LVS負載均衡群集

小阿軒yx-LVS負載均衡群集

  • 構建群集服務器—通過整合多臺服務器
  • 使用 LVS 達到服務器的高可用和負載均衡
  • 并以同一個 IP 地址對外提供相同的服務

LVS 群集應用基礎

  • 群集稱呼來自英文單詞“Cluster”
  • 在服務器領域則表示大量服務器的集合體,區分單個服務器

Cluster

  • 表示一群、一串的意思

LVS 群集技術概述

  • 根據企業環境不同
  • 群集提供的功能也不同
  • 采用的技術細節也不同
群集的三種類型

每種群集都至少包含兩臺服務器,對外表現為一個整體,只提供一個訪問入口

負載均衡群集(Load Balance Cluster)

  • 提高應用系統的響應能力
  • 盡可能處理更多的訪問請求
  • 減少延遲為目標
  • 獲得高并發、高負載的整體性能

高可用群集(High Availability Cluster)

  • 提高應用系統的可靠性
  • 盡可能地減少中斷時間為目標
  • 確保服務的連續性
  • 達到高可用(HA)的容錯效果

高性能運算群集(High Performance Computer Cluster)

  • 提高應用系統的 CPU運算速度、擴展硬件資源和分析能力為目標
  • 獲得相當于大型、超級計算機的高性能運算(HPC)能力

不同類型的群集在必要時可以合并,如高可用的負載均衡群集

負載均衡的分層結構

典型的負載均衡群集中包括三個層次的組件

  • 前端至少有一個負載調度器(Load Balancer,或稱為 Director)負責響應并分發來自客戶機的訪問請求
  • 后端由大量真實服務器(Real Server)構成服務器池(Server Poo1),提供實際的應用服務,整個群集的伸縮性通過增加、刪除服務器節點來完成

第一層,負載調度器

  • 這是訪問整個群集系統的唯一入口
  • 對外使用所有服務器共有的 VIP(Virtual IP,虛擬 IP)地址,也稱為群集 IP 地址

第二層,服務器池

  • 群集所提供的應用服務(如HTTP、FTP)由服務器池承擔,每個節點具有獨立的RIP(Real IP,真實 IP)地址,只處理調度器分發過來的客戶機請求
  • 當某個節點暫時失效時,負載調度器的容錯機制會將其隔離,等待錯誤排除以后再重新納入服務器池

第三層,共享存儲

  • 為服務器池中的所有節點提供穩定、一致的文件存取服務,確保整個群集的統一性。
  • Linux/UNIX 環境中,共享存儲可以使用 NAS 設備,或者提供 NFS(Network File System,網絡文件系統)共享服務的專用服務器
負載均衡的工作模式
  • 群集的負載調度技術,可以基于 IP、端口、內容等進行分發
  • 其中基于 IP 的負載調度是效率最高的

基于IP的負載均衡模式中,常見的三種工作模式有

  • 地址轉換
  • IP 隧道
  • 直接路由

地址轉換(Network Address Translation)

  • 簡稱 NAT 模式
  • 類似于防火墻的私有網絡結構,負載調度器作為所有服務器節點的網關,即作為客戶機的訪問入口,也是各節點回應客戶機的訪問出口。
  • 服務器節點使用私有IP地址,與負載調度器位于同一個物理網絡,安全性要優于其他兩種方式。

IP 隧道(IP Tunnel)

  • 簡稱 TUN 模式
  • 采用開放式的網絡結構,
  • 負載調度器僅作為客戶機的訪問入口,各節點通過各自的 Internet 連接直接回應客戶機,而不再經過負載調度器。
  • 服務器節點分散在互聯網中的不同位置,具有獨立的公網IP地址,通過專用 IP隧道與負載調度器相互通信。

直接路由(Direct Routing)

  • 簡稱 DR 模式
  • 采用半開放式的網絡結構,與 TUN模式的結構類似,但各節點并不是分散在各地,而是與調度器位于同一個物理網絡。
  • 負載調度器與各節點服務器通過本地網絡連接,不需要建立專用的IP隧道。

NAT方式只需要一個公網 IP地址,從而成為最易用的一種負載均衡模式,許多硬件負載均衡設備就采用這種方式

優勢

  • 安全性也比較好

相比較而言DR 模式和 TUN 模式

優勢

  • 負載能力更加強大
  • 適用范圍更廣

缺點

  • 節點的安全性稍差一些

LVS 虛擬服務器

Linux Virtual Server

  • 是針對Linux 內核開發的一個負載均衡項目
  • 由我國的章文嵩博士在 1998年5月創建
  • 官方站點位于 http://www.linuxvirtualserver.org/
  • LVS 實際上相當于基于 IP地址的虛擬化應用
  • 為基于 IP地址和內容請求分發的負載均衡提出了一種高效的解決方法
  • LVS 現在已成為 Linux 內核的一部分
  • 默認編譯為 ip_vs 模塊
  • 必要時能夠自動調用
LVS 的負載調度算法
  • 針對不同網絡服務和配置,LVS 調度器提供多種不同的負載調度算法

最常用的四種算法

  • 輪詢
  • 加權輪詢
  • 最少連接
  • 加權最少連接

輪詢(RoundRobin)

  • 將收到的訪問請求按照順序輪流分配給群集中的各節點,均等地對待每臺服務器,而不管服務器實際的連接數和系統負載。

加權輪詢(Weighted Round Robin)

  • 根據調度器設置的權重值來分發請求,權重值高的節點優先獲得任務并且分配的請求越多,這樣可以保證性能高的節點承擔更多請求。

最少連接(Least Connections)

  • 根據真實服務器已建立的連接數進行分配,將收到的訪問請求優先分配給連接數最少的節點。如果所有的服務器節點性能相近,采用這種方式可以更好地均衡負載。

加權最少連接(Weighted Least Connections)

  • 在服務器節點的性能差異較大的情況下,調度器可以根據節點服務器負載自動調整權重,權重較高的節點將承擔更大比例的活動連接負載。
使用 ipvsadm 管理工具

ipvsadm 是在負載調度器上使用的 LVS 群集管理工具,通過調用 ip_vs 模塊來添加、刪除服務器節點,以及查看群集的運行狀態。

構建 LVS 負載均衡群集
地址轉換模式(LVS-NAT)

實驗環境

各web節點需要設置網關,NFS不需要

CentOS 系統,手動加載 ip_vs 模塊并查看信息

//加載 ip_vs模塊
[root@localhost ~]# modprobe ip_vs
//查看 ip_vs 版本信息
[root@localhost ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1(size=4096)
Prot LocalAddress:Port Scheduler Flags->RemoteAddress:Port Forward Weight ActiveConn InActConn

配置負載調度器

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

安裝 ipvsadm

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

查看?ipvsadm 版本

[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

添加配置文件

[root@localhost ~]# vim /etc/sysctl.conf 
## 添加下面代碼
net.ipv4.ip_forward = 1

語句生效

[root@localhost ~]# sysctl -p

配置新策略

[root@localhost ~]# ipvsadm -C

創建虛擬服務器

[root@localhost ~]# ipvsadm -A -t 172.16.16.172:80 -s rr

添加服務器節點

[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.102:80 -m -w 1
[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.103:80 -m -w 1

查看當前策略信息

[root@localhost ~]# ipvsadm-save
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.10.102:http -m -w 1
-a -t localhost.localdomain:http -r 192.168.10.103:http -m -w 1

-s:指定調度算法

  • rr:輪詢

  • wrr:加權輪詢

  • lc:最小鏈接數

  • wlc:加權最小連接數

  • -A????添加一個新的集群服務;

  • -E????修改一個己有的集群服務;

  • -D????刪除指定的集群服務;

  • -a????向指定的集群服務中添加RS及屬性;

  • -e????修改RS屬性;

  • -t????指定為tcp協議;

  • -u????指定為udp協議;

  • -s????調度方法,默認為wlc;

  • -w????指定權重,默認為1;

  • -g????Gateway,?DR模型;

  • -i????ipip,?TUN模型;

  • -m????masquerade,?NAT模型;

  • -S????保存ipvsadm設定的規則策略,默認保存在/etc/sysconfig/ipvsadm中;

  • -R????載入己保存的規則策略,默認加載/etc/sysconfig/ipvsadm;

  • -C????清除所有集群服務;

  • -Z????清除所有記數器;

  • -L????顯示當前己有集群服務,能通過相應的options查看不同狀態信息;

  • -r ?????????指定真實服務器的地址

啟動 ipvsadm

[root@localhost ~]# systemctl enable ipvsadm

配置 web 節點服務器

在兩個 web 節點上安裝 httpd

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl stop firewalld 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install nfs-utils

?創建測試頁

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

啟動 httpd 服務

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

客戶端測試 LVS 群集

[root@localhost ~]# curl 172.16.16.172

在 LVS 上產看調度信息

[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.16.172:80 rr-> 192.168.10.102:80              Masq    1      0          0         -> 192.168.10.103:80              Masq    1      0          0 
  • ActiveConn是活動連接數,也就是tcp連接狀態的ESTABLISHED

  • InActConn是指除了ESTABLISHED以外的,所有的其它狀態的tcp連接

linux 做客戶端時可以用以下代碼進行測試

[root@localhost ~]# for i in $(seq 10);do curl 172.16.16.172;done

?NFS 共享存儲服務

NFS

  • 是一種基于 TCP/IP 傳輸的網絡文件系統協議
  • 最初由 Sun 公司開發
  • 通過使用 NFS協議,客戶機可以訪問遠程服務器中的共享資源
  • 對于大多數負載均衡群集來說,使用 NFS協議來共享數據存儲是比較常見的做法
  • NFS也是NAS存儲設備必然支持的一種協議
使用 NFS 發布共享資源
  • NFS 服務的實現依賴于 RPC(Remote Process Call,遠端過程調用)機制
  • 以完成遠程到本地的映射過程

CentOS7系統中,需要安裝軟件包提供 NFS共享服務

  • nfs-utils
  • rpcbind

前者用于 NFS 共享發布和訪問

后者用于RPC支持

安裝 nfs-utils、rpcbind 軟件包

[root@localhost ~]# systemctl stop firewalld 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind

設置共享目錄

[root@localhost ~]# mkdir -p /opt/wwwroot
[root@localhost ~]# vi /etc/exports
/opt/wwwroot   192.168.10.0/24(rw,sync,no_root_squash)

可以同時發布多個目錄,并且可以為不同的客戶端設置不同的訪問權限

  • rw 可讀寫的權限?
  • ro 只讀的權限?
  • no_root_squash?登入NFS主機,使用該共享目錄時相當于該目錄的擁有者,如果是root的話,那么對于這個共享的目錄來說,他就具有root的權限,這個參數極不安全,不建議使用
  • root_squash 登入NFS主機,使用該共享目錄時相當于該目錄的擁有者。但是如果是以root身份使用這個共享目錄的時候,那么這個使用者(root)的權限將被壓縮成為匿名使用者,即通常他的UID與GID都會變成nobody那個身份
  • all_squash 不論登入NFS的使用者身份為何,他的身份都會被壓縮成為匿名使用者,通常也就是nobody
  • sync?資料同步寫入到內存與硬盤當中?
  • async 資料會先暫存于內存當中,而非直接寫入硬盤?
  • insecure 允許從這臺機器過來的非授權訪問

啟動 NFS 服務程序

[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# netstat -anpt | grep rpc
tcp        0      0 0.0.0.0:20048     0.0.0.0:*               LISTEN      44153/rpc.mountd    
tcp        0      0 0.0.0.0:50661     0.0.0.0:*               LISTEN      7511/rpc.statd      
tcp6       0      0 :::20048          :::*                    LISTEN      44153/rpc.mountd    
tcp6       0      0 :::54742          :::*                    LISTEN      7511/rpc.statd

查看本機發布的 NFS 共享目錄

[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/opt/wwwroot 192.168.7.0/24
/var/ftp/pub 192.168.10.173,192.168.7.172

在客戶機中訪問 NFS 共享資源

  • NFS 協議的目標是提供一種網絡文件系統
  • 對 NFS 共享的訪問使用 mount 命令來進行掛載,對應的文件系統類型為nfs
  • 既可以手動掛載,也可以加入/etc/fstab 配置文件來實現開機自動掛載
  • 考慮到群集系統中的網絡穩定性,NFS服務器與客戶機之間最好使用專有網絡進行連接

安裝 rpcbind 軟件包,并啟動 rpcbind 服務

[root@localhost ~]# yum -y install rpcbind nfs-utils
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl start rpcbind

手動在 web 節點掛載 nfs

[root@localhost ~]# mount -t nfs 192.168.10.105:/opt/wwwroot /var/www/html

在 nfs 上創建測試網頁

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

linux做客戶端時可以用一下代碼進行測試

[root@localhost ~]# for i in $(seq 10);do curl 172.16.16.172;done

小阿軒yx-LVS負載均衡群集

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

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

相關文章

創新驅動,智享未來:電動車儀表盤之藍牙芯方案

電動車行業不斷發展的浪潮中,我們自豪地推出引領時代的電動車儀表盤藍牙芯方案,為您的騎行之旅帶來前所未有的智能與便捷。 精準掌控,一目了然 我們的藍牙芯方案搭載了高性能BLE 5.0藍牙芯片-HS6621CG-C 內核ARM Cortex-M4F, max 64MHZ,SRAM…

Operations Research課程之帶約束的非線性規劃(凸分析|Lagrange松弛|Lagrange對偶|KKT條件)

目錄 1.凸分析 1.1 為什么需要凸分析 1.2 凸分析相關概念 1.3 凸規劃定義 1.4 單變量NLP凸分析 1.5 多變量NLP凸分析 2.拉格朗日松弛 2.1 拉格朗日函數 2.2 拉格朗日對偶 2.2.1 弱對偶性 2.2.2 凸性 2.2.3 強對偶性 2.2.4 與LP對偶關系 3.KKT條件 3.1 KKT介紹…

Redis 管道(Pipeline)是什么?有什么用?

目錄 1. redis 客戶端-服務端模型的不足之處 2. redis 管道是什么?有什么好處? 3. 管道的使用場景 4. 管道使用的注意事項 1. redis 客戶端-服務端模型的不足之處 眾所周知,redis 是一個客戶端-服務端的模型設計,客戶端向服務…

Qt的信號與槽機制底層原理

Qt的信號與槽機制是Qt框架的核心特性之一,它允許對象之間進行解耦通信。信號(Signal)是一個類成員函數,當特定事件發生時,信號會被自動觸發。槽(Slot)也是一個類成員函數,它可以被信…

上海網站建設如何做

上海是中國最繁華的城市之一,作為全國的經濟、文化和科技中心,網站建設在上海變得越來越重要。如何做好上海網站建設,讓網站更加吸引人,成為企業和個人宣傳自身的重要平臺呢? 首先,要有清晰的定位和目標。在…

SCI一區級 | Matlab實現BO-Transformer-BiLSTM時間序列預測

SCI一區級 | Matlab實現BO-Transformer-BiLSTM時間序列預測 目錄 SCI一區級 | Matlab實現BO-Transformer-BiLSTM時間序列預測效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 1.【SCI一區級】Matlab實現BO-Transformer-BiLSTM時間序列預測,貝葉斯優化Transfor…

Zoom視頰會議軟件使用

GPT-3.5 (OpenAI) Zoom是一款極受歡迎的視頻會議軟件。使用Zoom可以方便地進行視頻會議、遠程授課、在線研討會等活動。以下是Zoom的使用步驟: 1. 下載Zoom客戶端 可以在Zoom官網上下載對應平臺的Zoom客戶端。下載并完成安裝后,雙擊打開客戶端。 2. 創建…

【AI】ChatTTS實現文本轉語音

最近有時間繼續研究一下各種有趣的開源項目,一個叫ChatTTS的項目吸引了我的注意,這個項目可以把文本轉換成語音,配合gpt生成文本,可以直接用于生產有聲書作品了,這可以說是直接的生產力項目了。 項目對顯存的要求不高&…

el-table 樹狀表格查詢符合條件的數據

需要對el-table的樹狀表格根據輸入機構名稱&#xff0c;篩選出符合條件的數據&#xff0c;可用如下方法&#xff1a; 頁面內容如下&#xff1a; <el-input v-model"ogeName" placeholder"請輸入機構名稱"><el-table :data"list" row…

Git 操作補充:cherry-pick、變基

1. 挑選提交合并 git cherry-pick 對于多分支的代碼庫&#xff0c;將代碼從一個分支轉移到另一個分支是一種常見的需求&#xff0c;這可以分成兩種情況&#xff1a;一種情況是&#xff0c;你需要另一個分支的所有代碼變動&#xff0c;那么就采用 git merge&#xff1b;另一種情…

如何準確測量 Android 應用中 Activity 和 Fragment 的啟動時間

如何準確測量 Android 應用中 Activity 和 Fragment 的啟動時間 在 Android 應用開發中&#xff0c;了解每個 Activity 和 Fragment 的啟動時間對于性能優化至關重要。本文將介紹幾種方法來準確測量 Activity 和 Fragment 的啟動時間&#xff0c;并提供實際操作步驟&#xff0…

Spark SQL----內置函數JSON Functions

Spark SQL----內置函數JSON Functions JSON Functions 例子&#xff1a; -- from_json SELECT from_json({"a":1, "b":0.8}, a INT, b DOUBLE); --------------------------- |from_json({"a":1, "b":0.8})| -----------------------…

c++之auto

auto auto與for結合begin(),end()說明 auto c11標準引入auto類型說明符必須有初始值通過初始值來推斷變量的類型 #include<cstdio> using namespace std; int main(){int v1 10;auto v2 v1;printf("v2%d\n",v2);double v310.5;auto v4 v3;printf("v4…

SF-HCI-SAP問題收集17:值映射布爾型EC數據

Complacency is the enemy of study 學習的敵人是自己的滿足。 SAP SuccessFactors Employee Central 到 SAP ERP 的員工主數據復制 successfactor employee center主數據同步&#xff0c;一直以來排錯比較難&#xff0c;難的地方是這個提示消息比較隱晦&#xff0c;而且同步的…

數據結構與算法學習(1)

#學習自用# 算法性能分析 時間復雜度O() 時間復雜度就是算法計算的次數。 for(int i0;i<n;i) {ans; } ans; 這串代碼時間復雜度為O(n)&#xff0c;實際時間復雜度為O(n1)。如果把i改為i2&#xff0c;時間復雜度仍然為為O(n)&#xff0c;實際時間復雜度變為O(n/2 1)。時…

云原生技術架構詳解

云原生技術最全詳解(圖文全面總結) 容器技術 容器技術&#xff1a;是將應用程序、及其所有依賴項&#xff0c;打包到一個獨立的、可移植的容器中。 如下圖所示: 容器技術的實現&#xff0c;最典型的就是以Docker為代表的。 如下圖所示&#xff1a; 主要解決&#xff1a; 1、…

AI常見名詞盤點(持續更新)

目錄 知識庫 知識庫的定義 知識庫的分類 AI知識庫的特點 小結 Embedding 向量化表示 維度降低 語義關系 小結 提示詞工程&#xff08;Prompt Engineering&#xff09; 定義 目的與應用 關鍵性質 工程化思想 應用示例 小結 RAG 檢索增強生成 定義與重要性 RA…

Ubuntu設置nacos開機以單機模式自啟動

首先&#xff0c;需要安裝jdk Ubuntu 安裝JDK 創建Systemd服務單元文件 sudo vim /etc/systemd/system/nacos.service按i進入編輯模式&#xff0c;寫入下面信息 [Unit] Descriptionnacos server Afternetwork.target[Service] Typeforking Environment"JAVA_HOME/opt/j…

Java8 - Optional 處理可能為空值的容器類

1. 創建一個 Optional 對象 Optional.of、Optional.ofNullable 、Optional.empty是Optional類的三個靜態方法&#xff0c;用于創建Optional對象。 1. Optional.of 方法 Optional.of 方法用于創建一個包含非空值的Optional對象&#xff0c;如果傳入的值為null&#xff0c;則會…

Kafka集群安裝部署

簡介 Kafka是一款分布式的、去中心化的、高吞吐低延遲、訂閱模式的消息隊列系統。 同RabbitMQ一樣&#xff0c;Kafka也是消息隊列。不過RabbitMQ多用于后端系統&#xff0c;因其更加專注于消息的延遲和容錯。 Kafka多用于大數據體系&#xff0c;因其更加專注于數據的吞吐能力…