高併發場景 LVS 安裝及高可用實現

来源:http://www.cnblogs.com/clsn/archive/2017/11/29/7920637.html
-Advertisement-
Play Games

1.1 負載均衡介紹 1.1.1 負載均衡的妙用 負載均衡(Load Balance)集群提供了一種廉價、有效、透明的方法,來擴展網路設備和伺服器的負載、帶寬、增加吞吐量、加強網路數據處理能力、提高網路的靈活性和可用性。 ü 單台電腦無法承受大規模的併發訪問或數據流量了,此時需要搭建負載均衡集群把 ...


1.1 負載均衡介紹

1.1.1 負載均衡的妙用

 負載均衡(Load Balance)集群提供了一種廉價、有效、透明的方法,來擴展網路設備和伺服器的負載、帶寬、增加吞吐量、加強網路數據處理能力、提高網路的靈活性和可用性。

ü 單台電腦無法承受大規模的併發訪問或數據流量了,此時需要搭建負載均衡集群把流量分攤到多台節點設備上分別處理,即減少用戶等待響應的時間又提升了用戶體驗;

ü 7*24小時的服務保證,任意一個或多個有限後端節點設備宕機,不能影響整個業務的運行。

1.1.2 為什麼要用lvs

工作在網路模型的7層,可以針對http應用做一些分流的策略,比如針對功能變數名稱、目錄結構,Nginx單憑這點可利用的場合就遠多於LVS了。

最新版本的Nginx也支持4TCP負載,曾經這是LVSNginx好的地方。

Nginx對網路穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一,相反LVS對網路穩定性依賴比較大。

Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌列印出來。LVS的配置、測試就要花比較長的時間了,LVS對網路依賴比較大。

那為什麼要用lvs呢?

ü 簡單一句話,當併發超過了Nginx上限,就可以使用LVS了。

ü 1000-2000W PV或併發請求1萬以下都可以考慮用Nginx

ü 大型門戶網站,電商網站需要用到LVS

1.2 LVS介紹

LVSLinux Virtual Server的簡寫,意即Linux虛擬伺服器,是一個虛擬的伺服器集群系統,可以在UNIX/LINUX平臺下實現負載均衡集群功能。該項目在19985月由章文嵩博士組織成立,是中國國內最早出現的自由軟體項目之一

1.2.1 相關參考資料

LVS官網:http://www.linuxvirtualserver.org/index.html

相關中文資料

 

LVS項目介紹           http://www.linuxvirtualserver.org/zh/lvs1.html 
LVS集群的體繫結構     http://www.linuxvirtualserver.org/zh/lvs2.html 
LVS集群中的IP負載均衡技術  http://www.linuxvirtualserver.org/zh/lvs3.html
LVS集群的負載調度      http://www.linuxvirtualserver.org/zh/lvs4.html 

 

1.2.2 LVS內核模塊ip_vs介紹

早在2.2內核時, IPVS就已經以內核補丁的形式出現。

2.4.23版本開始,IPVS軟體就合併到Linux內核的常用版本的內核補丁的集合。

2.4.24以後IPVS已經成為Linux官方標準內核的一部分。

ü LVS無需安裝

ü 安裝的是管理工具,第一種叫ipvsadm,第二種叫keepalive

ü ipvsadm是通過命令行管理,而keepalive讀取配置文件管理

ü 後面我們會用Shell腳本實現keepalive的功能

1.3 LVS集群搭建

1.3.1 集群環境說明

主機名

IP地址

軟體

系統版本

lb03

10.0.0.15

lvs keepalived

CentOS Linux release 7.4.1708

lb04

10.0.0.16

lvs keepalived

CentOS Linux release 7.4.1708

web03

10.0.0.18

tomcat

CentOS Linux release 7.4.1708

web04

10.0.0.17

tomcat

CentOS Linux release 7.4.1708

主機說明

[root@lb03 ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@lb03 ~]# uname -a
Linux lb03 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@lb03 ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
[root@lb03 ~]# getenforce 
Disabled

web環境說明

[root@lb03 ~]# curl 10.0.0.17
web03
[root@lb03 ~]# curl 10.0.0.18
web04

  web伺服器的搭建參照: Tomcat: http://www.cnblogs.com/clsn/p/7904611.html

               Nginx: http://www.cnblogs.com/clsn/p/7750615.html

1.3.2 安裝ipvsadm管理工具

安裝管理工具

yum -y install ipvsadm

查看當前LVS狀態,順便激活LVS內核模塊。

ipvsadm

查看系統的LVS模塊。

[root@lb03 ~]# lsmod|grep ip_vs
ip_vs_wrr              12697  1
ip_vs                 141092  3 ip_vs_wrr
nf_conntrack          133387  1 ip_vs
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack

1.3.3 LVS集群搭建

配置LVS負載均衡服務(lb03操作

步驟1:在eth0網卡綁定VIP地址(ip

步驟2:清除當前所有LVS規則(-C

步驟3:設置tcptcpfinudp鏈接超時時間(--set

步驟4:添加虛擬服務(-A),-t指定虛擬服務的IP埠,-s 指定調度演算法 調度演算法見man ipvsadm rr wrr 權重輪詢 -p 指定超時時間

步驟5:將虛擬服務關聯到真實服務上(-a -r指定真實服務的IP -g LVS的模式 DR模式 -w 指定權重

步驟6:查看配置結果(-ln

命令集

ip addr add 10.0.0.13/24 dev eth0
ipvsadm -C                    
ipvsadm --set 30 5 60         
ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20   
ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1 
ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1
ipvsadm -ln

檢查結果

[root@lb03 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.13:80 wrr persistent 20
  -> 10.0.0.17:80                 Route   1      0          0  
  -> 10.0.0.18:80                 Route   1      0          0   

ipvsadm參數說明:(更多參照 man ipvsadm)

參數

(短格式)

參數

(長格式)

參數說明

-A

--add-service

在內核的虛擬伺服器表中添加一條新的虛擬伺服器記錄。也就是增加一臺新的虛擬伺服器。

-E

--edit-service

編輯內核虛擬伺服器表中的一條虛擬伺服器記錄。

-D

--delete-service

刪除內核虛擬伺服器表中的一條虛擬伺服器記錄。

-C

--clear

清除內核虛擬伺服器表中的所有記錄。

-R

--restore

恢復虛擬伺服器規則

-S

--save

保存虛擬伺服器規則,輸出為-R 選項可讀的格式

-a

--add-server

在內核虛擬伺服器表的一條記錄里添加一條新的真實伺服器記錄。也就是在一個虛擬伺服器中增加一臺新的真實伺服器

-e

--edit-server

編輯一條虛擬伺服器記錄中的某條真實伺服器記錄

-d

--delete-server

刪除一條虛擬伺服器記錄中的某條真實伺服器記錄

-L|-l

--list

顯示內核虛擬伺服器表

-Z

--zero

虛擬服務表計數器清零(清空當前的連接數量等)

-

--set tcp tcpfin udp

設置連接超時值

-

--start-daemon

啟動同步守護進程。他後面可以是master backup,用來說明LVS Router master 或是backup。在這個功能上也可以採用keepalived VRRP 功能。

-

--stop-daemon

停止同步守護進程

-h

--help

顯示幫助信息

-t

--tcp-service service-address [vip:port] or [real-server-ip:port]

說明虛擬伺服器提供的是tcp 的服務

-u

--udp-service service-address [vip:port] or [real-server-ip:port]

說明虛擬伺服器提供的是udp 的服務

-f

--fwmark-service fwmark

說明是經過iptables 標記過的服務類型。

-s

--scheduler scheduler

使用的調度演算法,有這樣幾個選項

rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq

預設的調度演算法是: wlc

-p

--persistent [timeout]

持久穩固的服務。這個選項的意思是來自同一個客戶的多次請求,將被同一臺真實的伺服器處理。timeout 的預設值為300秒。

-M

--netmask netmask

persistent granularity mask

-r

--real-server server-address

真實的伺服器[Real-Server:port]

-g

--gatewaying

指定LVS 的工作模式為直接路由模式(也是LVS 預設的模式)

-i

--ipip

指定LVS 的工作模式為隧道模式

-m

--masquerading

指定LVS 的工作模式為NAT 模式

-w

--weight weight

真實伺服器的權值

-

--mcast-interface

interface 指定組播的同步介面

-c

--connection

顯示LVS 目前的連接

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 飛秋2013功能很強大,很多公司內部都在使用,是一款區域網內部使用軟體。因2013、2014、和2015不能同時相容使用,鑒於2013功能的完善,使用的用戶很多。 描述:每次重啟或者關閉飛秋後都無法保存修改後的名稱、分組、群設置… 解決方式: PS:無法保存原因:feiqiu的當前系統工作目錄設置在 ...
  • 第1章 LVS 簡介 1.1 LVS介紹 LVS是Linux Virtual Server的簡寫,意為Linux虛擬伺服器,是虛擬的伺服器集群系統,可在UNIX/LINUX平臺下實現負載均衡集群功能。該項目在1998年5月由章文嵩博士組織成立,是國內最早出現的自由軟體項目之一 官網:http://w ...
  • 格式化D盤1.右擊我的電腦2.高級系統設置3.高級4.性能->設置5.高級->虛擬記憶體(更改)6.雙擊D設置->無分頁文件7.確定->重啟電腦 ...
  • 1.cpu #lscpu命令,查看的是cpu的統計信息.(部分舊版本不支持) 使用#cat /proc/cpuinfo ,可以知道每個cpu信息,如每個CPU的型號,主頻等。 2.記憶體 #free -m # 查看記憶體使用量和交換區使用量 # cat /proc/meminfo #dmidecode ...
  • 日誌文件系統(journaling file system)是一個具有故障恢復能力的文件系統,在這個文件系統中,因為對目錄以及點陣圖的更新信息總是在原始的磁碟日誌被更新之前寫到磁碟上的一個連續的日誌上,所以它保證了數據的完整性。當發生系統錯誤時,一個全日誌文件系統將會保證磁碟上的數據恢復到發生系統崩潰 ...
  • 磁碟整理是對磁碟長期使用過程中產生的不連續的文件碎片進行拼接、移動、整合,將不在一處的同一文件移動到一起,釋放出被浪費掉的可用磁碟空間,也便於系統快速準確地找到所需的數據。 由於磁碟的磁頭在讀寫文件時是連續讀取的,如果文件不連續,那麼磁頭就需要反反覆復來回掃描那些不連續的文件,再從緩存中將這些不連續 ...
  • 《Linux設備驅動》 -- 也就是我們所說的LDD3了; 適合一定基礎的人閱讀,深入學習Linux不可或缺的知識; 《UNIX環境高級編程》 這本書並不是面對linux內核的書,但是我是從最基礎看這本書逐步入門的; 《Linux內核完全剖析》 本書對早期Linux內核(v0.12)全部代碼文件進行 ...
  • 基礎知識: 1、Redis的數據類型: 字元串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)2、Redis和memcache相比的獨特之處: (1)redis可以用來做存儲(storge)、而memcache是來做緩存(cache)。這個特點主要是因為 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...