歡迎光臨
每天分享高質量文章

高薪Linux必備之高併發場景 LVS 簡快入門實戰(萬字長文)

隨著移動網際網路的加速,應用大規模同時使用的情況成為了常態,如微博、知乎、今日頭條等大型應用,作為Linux運維從業者,高併發場景的解決能力成為了高薪的關鍵。

今天我們特別邀請了資深的Linux運維老司機慘綠少年Linux來給大家普及高併發場景 LVS的實現過程,助你高薪之路順暢。


作者:慘綠少年Linux,馬哥Linux原創作者社群特約作者,資深Linux運維工程師,作者部落格:www.nmtui.com,擅長虛擬化、OpenStack等前沿技術。


1.1 負載均衡介紹



1.1.1 負載均衡的妙用

負載均衡(Load Balance)叢集提供了一種廉價、有效、透明的方法,來擴充套件網路裝置和伺服器的負載、頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。

單臺計算機無法承受大規模的併發訪問或資料流量了,此時需要搭建負載均衡叢集把流量分攤到多臺節點裝置上分別處理,即減少使用者等待響應的時間又提升了使用者體驗;

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

1.1.2 為什麼要用lvs

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

最新版本的Nginx也支援4層TCP負載,曾經這是LVS比Nginx好的地方。

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

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

那為什麼要用lvs呢?

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

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

大型入口網站,電商網站需要用到LVS。


1.2 LVS介紹


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


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 叢集環境說明

主機說明

[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)

1.3.4 web瀏覽器配置操作

步驟1:在lo網絡卡系結VIP地址(ip

步驟2:修改核心引數抑制ARP響應

命令集:

ip addr add 10.0.0.13/32 dev lo

cat >>/etc/sysctl.conf<net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF
sysctl -p

至此LVS叢集配置完畢!

1.3.5 進行訪問測試

瀏覽器訪問:

命令列測試:

[root@lb04 ~]# curl 10.0.0.13
web03

抓包檢視結果:

         arp解析檢視:

[root@lb04 ~]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.0.254               ether   00:50:56:e9:9f:2c   C                     eth0
10.0.0.18                ether   00:0c:29:ea:ca:55   C                     eth0
10.0.0.13                ether   00:0c:29:de:7c:97   C                     eth0
172.16.1.15              ether   00:0c:29:de:7c:a1   C                     eth1
10.0.0.17                ether   00:0c:29:4a:ac:4a   C                     eth0

1.4 負載均衡(LVS)相關名詞


術語說明:

DS:Director Server。指的是前端負載均衡器節點。
RS:Real Server。後端真實的工作伺服器。
VIP:向外部直接面向用戶請求,作為使用者請求的標的的IP地址。
DIP:Director Server IP,主要用於和內部主機通訊的IP地址。
RIP:Real Server IP,後端伺服器的IP地址。
CIP:Client IP,訪問客戶端的IP地址。

1.4.1 LVS叢集的工作樣式–DR直接路由樣式

DR樣式是透過改寫請求報文的標的MAC地址,將請求發給真實伺服器的,而真實伺服器將響應後的處理結果直接傳回給客戶端使用者。

DR技術可極大地提高集群系統的伸縮性。但要求排程器LB與真實伺服器RS都有一塊物理網絡卡連在同一物理網段上,即必須在同一區域網環境。

DR直接路由樣式說明:

a)透過在排程器LB上修改資料包的目的MAC地址實現轉發。註意,源IP地址仍然是CIP,目的IP地址仍然是VIP
b)請求的報文經過排程器,而RS響應處理後的報文無需經過排程器LB,因此,併發訪問量大時使用效率很高,比Nginx代理樣式強於此處。
c)因DR樣式是透過MAC地址的改寫機制實現轉發的,因此,所有RS節點和排程器LB只能在同一個區域網中。需要註意RS節點的VIP的系結(lo:vip/32)和ARP抑制問題。
d)強調下:RS節點的預設閘道器不需要是排程器LBDIP,而應該直接是IDC機房分配的上級路由器的IP(這是RS帶有外網IP地址的情況),理論上講,只要RS可以出網即可,不需要必須配置外網IP,但走自己的閘道器,那閘道器就成為瓶頸了。
e)由於DR樣式的排程器僅進行了目的MAC地址的改寫,因此,排程器LB無法改變請求報文的目的埠。LVS DR樣式的辦公室在二層資料鏈路層(MAC),NAT樣式則工作在三層網路層(IP)和四層傳輸層(埠)。
f)當前,排程器LB支援幾乎所有UNIXLinux系統,但不支援windows系統。真實伺服器RS節點可以是windows系統。
g)總之,DR樣式效率很高,但是配置也較麻煩。因此,訪問量不是特別大的公司可以用haproxy/Nginx取代之。這符合運維的原則:簡單、易用、高效。日1000-2000W PV或併發請求1萬以下都可以考慮用haproxy/Nginx(LVS的NAT樣式)
h)直接對外的訪問業務,例如web服務做RS節點,RS最好用公網IP地址。如果不直接對外的業務,例如:MySQL,儲存系統RS節點,最好只用內部IP地址。

DR的實現原理和資料包的改變

 

(a) 當使用者請求到達Director Server,此時請求的資料報文會先到核心空間的PREROUTING鏈。 此時報文的源IP為CIP,標的IP為VIP
(b) PREROUTING檢查發現資料包的標的IP是本機,將資料包送至INPUT鏈
(c) IPVS比對資料包請求的服務是否為叢集服務,若是,將請求報文中的源MAC地址修改為DIP的MAC地址,將標的MAC地址修改RIP的MAC地址,然後將資料包發至POSTROUTING鏈。 此時的源IP和目的IP均未修改,僅修改了源MAC地址為DIP的MAC地址,標的MAC地址為RIP的MAC地址
(d) 由於DS和RS在同一個網路中,所以是透過二層來傳輸。POSTROUTING鏈檢查標的MAC地址為RIP的MAC地址,那麼此時資料包將會發至Real Server。
(e) RS發現請求報文的MAC地址是自己的MAC地址,就接收此報文。處理完成之後,將響應報文透過lo介面傳送給eth0網絡卡然後向外發出。 此時的源IP地址為VIP,標的IP為CIP
(f) 響應報文最終送達至客戶端

1.5 在web端的操作有什麼含義?


1.5.1 RealServer為什麼要在lo介面上配置VIP

既然要讓RS能夠處理標的地址為vipIP包,首先必須要讓RS能接收到這個包。

  在lo上配置vip能夠完成接收包並將結果傳回client

1.5.2 eth0網絡卡上配置VIP可以嗎?

不可以,將VIP設定在eth0網絡卡上,會影響RSarp請求,造成整體LVS叢集arp快取表紊亂,以至於整個負載均衡叢集都不能正常工作。

1.5.3 為什麼要抑制ARP響應?

① arp協議說明

ARP協議,全稱“Address Resolution Protocol”,中文名是地址解析協議,使用ARP協議可實現透過IP地址獲得對應主機的物理地址(MAC地址)

ARP協議要求通訊的主機雙方必須在同一個物理網段(即區域網環境)!

為了提高IP轉換MAC的效率,系統會將解析結果儲存下來,這個結果叫做ARP快取。

Windows檢視ARP快取命令 arp -a
Linux檢視ARP快取命令 arp -n
Linux解析IP對應的MAC地址 arping -c 1 -I eth0 10.0.0.6

ARP快取表是把雙刃劍

a) 主機有了arp快取表,可以加快ARP的解析速度,減少區域網內廣播風暴。因為arp是發廣播解析的,頻繁的解析也是消耗頻寬的,尤其是機器多的時候。

b) 正是有了arp快取表,給惡意駭客帶來了攻擊伺服器主機的風險,這個就是arp欺騙攻擊。

c) 切換路由器,負載均衡器等裝置時,可能會導致短時網路中斷。因為所有的客戶端ARP快取表沒有更新


②伺服器切換ARP問題

當叢集中一臺提供服務的lb01機器宕機後,然後VIP會轉移到備機lb02上,但是客戶端的ARP快取表的地址解析還是宕機的lb01MAC地址。從而導致,即使在lb02上新增VIP,也會發生客戶端無法訪問的情況。

解決辦法是:當lb01宕機,VIP地址遷移到lb02時,需要透過arping命令通知所有網路內機器更新本地的ARP快取表,從而使得客戶機訪問時重新廣播獲取MAC地址。

這個是自己開發伺服器高可用指令碼及所有高可用軟體必須考慮到的問題。

ARP廣播進行新的地址解析

arping -I eth0 -c 1 -U VIP
arping -I eth0 -c 1 -U 10.0.0.13

測試命令

ip addr del 10.0.0.13/24 dev eth0
ip addr add 10.0.0.13/24 dev eth0
ip addr show eth0
arping -I eth0 -c 1 -U 10.0.0.13

windows檢視arp -a

介面: 10.0.0.1 --- 0x12
 Internet 地址         物理地址              型別  
 10.0.0.13             00-0c-29-de-7c-97     動態      
 10.0.0.15             00-0c-29-de-7c-97     動態      
 10.0.0.16             00-0c-29-2e-47-20     動態      
 10.0.0.17             00-0c-29-4a-ac-4a     動態      
 10.0.0.18             00-0c-29-ea-ca-55     動態

arp_announcearp_ignore詳解

#  配置的核心引數
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

lvsDR樣式下需要關閉arp功能

arp_announce

對網路介面上,本地IP地址的發出的,ARP回應,作出相應級別的限制:

確定不同程度的限制,宣佈對來自本地源IP地址發出Arp請求的介面

arp_ignore定義

對標的地定義對標的地址為本地IP的ARP詢問不同的應答樣式0

抑制RS端arp前的廣播情況

 

抑制RS端arp後廣播情況 

1.6 LVS叢集的工作樣式


DR(Direct Routing)直接路由樣式

NAT(Network Address Translation)

TUN(Tunneling)隧道樣式

FULLNAT(Full Network Address Translation)

1.6.1 LVS叢集的工作樣式–NAT

 

透過網路地址轉換,排程器LB重寫請求報文的標的地址,根據預設的排程演演算法,將請求分派給後端的真實伺服器,真實伺服器的響應報文處理之後,傳回時必須要透過排程器,經過排程器時報文的源地址被重寫,再傳回給客戶,完成整個負載排程過程。

收費站樣式—來去都要經過LB負載均衡器。

NAT方式的實現原理和資料包的改變

 

RS應該使用私有地址,RS的閘道器必須指向DIP

(a). 當使用者請求到達Director Server,此時請求的資料報文會先到核心空間的PREROUTING鏈。 此時報文的源IP為CIP,標的IP為VIP
(b). PREROUTING檢查發現資料包的標的IP是本機,將資料包送至INPUT鏈
(c). IPVS比對資料包請求的服務是否為叢集服務,若是,修改資料包的標的IP地址為後端伺服器IP,然後將資料包發至POSTROUTING鏈。 此時報文的源IP為CIP,標的IP為RIP
(d). POSTROUTING鏈透過選路,將資料包傳送給Real Server
(e). Real Server比對發現標的為自己的IP,開始構建響應報文發回給Director Server。 此時報文的源IP為RIP,標的IP為CIP
(f). Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然後響應給客戶端。 此時報文的源IP為VIP,標的IP為CIP

LVS-NAT模型的特性

DIPRIP必須在同一個網段內

請求和響應報文都需要經過Director Server,高負載場景中,Director Server易成為效能瓶頸

支援埠對映

RS可以使用任意作業系統

缺陷:對Director Server壓力會比較大,請求和響應都需經過director server

1.6.2 LVS叢集的工作樣式隧道樣式TUN

採用NAT技術時,由於請求和響應的報文都必須經過排程器地址重寫,當客戶請求越來越多時,排程器的處理能力將成為瓶頸,為瞭解決這個問題,排程器把請求的報文透過IP隧道(相當於ipip或ipsec )轉發至真實伺服器,而真實伺服器將響應處理後直接傳回給客戶端使用者,這樣排程器就只處理請求的入站報文。由於一般網路服務應答資料比請求報文大很多,採用 VS/TUN技術後,集群系統的最大吞吐量可以提高10倍。

VS/TUN工作流程,它的連線排程和管理與VS/NAT中的一樣,只是它的報文轉發方法不同。排程器根據各個伺服器的負載情況,連線數多少,動態地選擇一臺伺服器,將原請求的報文封裝在另一個IP報文中,再將封裝後的IP報文轉發給選出的真實伺服器;真實伺服器收到報文後,先將收到的報文解封獲得原來標的地址為VIP地址的報文, 伺服器發現VIP地址被配置在本地的IP隧道裝置上(此處要人為配置),所以就處理這個請求,然後根據路由表將響應報文直接傳回給客戶。

TUN原理和資料包的改變

(a) 當使用者請求到達Director Server,此時請求的資料報文會先到核心空間的PREROUTING鏈。 此時報文的源IP為CIP,標的IP為VIP 。
(b) PREROUTING檢查發現資料包的標的IP是本機,將資料包送至INPUT鏈
(c) IPVS比對資料包請求的服務是否為叢集服務,若是,在請求報文的首部再次封裝一層IP報文,封裝源IP為為DIP,標的IP為RIP。然後發至POSTROUTING鏈。 此時源IP為DIP,標的IP為RIP
(d) POSTROUTING鏈根據最新封裝的IP報文,將資料包發至RS(因為在外層封裝多了一層IP首部,所以可以理解為此時透過隧道傳輸)。 此時源IP為DIP,標的IP為RIP
(e) RS接收到報文後發現是自己的IP地址,就將報文接收下來,拆除掉最外層的IP後,會發現裡面還有一層IP首部,而且標的是自己的lo介面VIP,那麼此時RS開始處理此請求,處理完成之後,透過lo介面送給eth0網絡卡,然後向外傳遞。 此時的源IP地址為VIP,標的IP為CIP
(f) 響應報文最終送達至客戶端

RIPVIPDIP全是公網地址LVS-Tun模型特性

RS的閘道器不會也不可能指向DIP

所有的請求報文經由Director Server,但響應報文必須不能進過Director Server

不支援埠對映

RS的系統必須支援隧道

1.6.3 LVS叢集的工作樣式–FULLNAT

LVSDRNAT樣式要求RSLVS在同一個vlan中,導致部署成本過高;TUNNEL樣式雖然可以跨vlan,但RealServer上需要部署ipip隧道模組等,網路拓撲上需要連通外網,較複雜,不易運維。

為瞭解決上述問題,開發出FULLNAT,該樣式和NAT樣式的區別是:資料包進入時,除了做DNAT,還做SNAT(使用者ip->內網ip),從而實現LVS-RealServer間可以跨vlan通訊,RealServer只需要連線到內網。

類比地鐵站多個閘機。


1.7 IPVS排程器實現瞭如下八種負載排程演演算法:


  a) 輪詢(Round RobinRR

排程器透過輪叫排程演演算法將外部請求按順序輪流分配到叢集中的真實伺服器上,它均等地對待每一臺伺服器,而不管伺服器上實際的連線數和系統負載。

  b) 加權輪叫(Weighted Round RobinWRR

排程器透過加權輪叫排程演演算法根據真實伺服器的不同處理能力來排程訪問請求。這樣可以保證處理能力強的伺服器處理更多的訪問流量。排程器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。

  c) 最少連結(Least Connections LC

排程器透過最少連線排程演演算法動態地將網路請求排程到已建立的連結數最少的伺服器上。如果集群系統的真實伺服器具有相近的系統效能,採用最小連線排程演演算法可以較好地均衡負載。

  d) 加權最少連結(Weighted Least Connections Wlc

在集群系統中的伺服器效能差異較大的情況下,排程器採用加權最少連結排程演演算法最佳化負載均衡效能,具有較高權值的伺服器將承受較大比例的活動連線負載。排程器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。

  e) 基於區域性性的最少連結(Locality-Based Least Connections Lblc

基於區域性性的最少連結” 排程演演算法是針對標的IP地址的負載均衡,目前主要用於Cache集群系統。該演演算法根據請求的標的IP地址找出該標的IP地址最近使用的伺服器,若該伺服器 是可用的且沒有超載,將請求傳送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處於一半的工作負載,則用最少連結的原則選出一個可用的服務 器,將請求傳送到該伺服器。

  f) 帶複製的基於區域性性最少連結(Locality-Based Least Connections with Replication

帶複製的基於區域性性最少連結排程演演算法也是針對標的IP地址的負載均衡,目前主要用於Cache集群系統。它與LBLC演演算法的不同之處是它要維護從一個 標的IP地址到一組伺服器的對映,而LBLC演演算法維護從一個標的IP地址到一臺伺服器的對映。該演演算法根據請求的標的IP地址找出該標的IP地址對應的服務 器組,按最小連線原則從伺服器組中選出一臺伺服器,若伺服器沒有超載,將請求傳送到該伺服器,若伺服器超載;則按最小連線原則從這個叢集中選出一 臺伺服器,將該伺服器加入到伺服器組中,將請求傳送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,將最忙的伺服器從伺服器組中刪除,以降低複製的 程度。

  g) 標的地址雜湊(Destination Hashing Dh

標的地址雜湊排程演演算法根據請求的標的IP地址,作為雜湊鍵(Hash Key)從靜態分配的散串列找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則傳回空。

  h) 源地址雜湊(Source HashingSH

源地址雜湊排程演演算法根據請求的源IP地址,作為雜湊鍵(Hash Key)從靜態分配的散串列找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則傳回空。


1.8 LVS+Keepalived方案實現


1.8.1 keepalived功能

1. 新增VIP

2. 新增LVS配置

3. 高可用(VIP漂移)

4. web伺服器健康檢查

1.8.2 在負載器安裝Keepalived軟體

yum -y install keepalived

檢查軟體是否安裝

[root@lb03 ~]# rpm -qa keepalivedkeepalived-1.3.5-1.el7.x86_64

1.8.3 修改配置檔案

lb03上keepalied配置檔案

lb03 /etc/keepalived/keepalived.conf

lb04的Keepalied配置檔案

lb04 /etc/keepalived/keepalived.conf

keepalived persistence_timeout引數意義 LVS Persistence 引數的作用

http://blog.csdn.net/nimasike/article/details/53911363

1.8.4 啟動keepalived服務

[root@lb03 ~]# systemctl restart  keepalived.service
# 檢查lvs狀態
[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 50
 -> 10.0.0.17:80                 Route   1      0          0        
 -> 10.0.0.18:80                 Route   1      0          0  
# 檢查虛擬ip
[root@lb03 ~]# ip a s eth0
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:0c:29:de:7c:97 brd ff:ff:ff:ff:ff:ff
   inet 10.0.0.15/24 brd 10.0.0.255 scope global eth0
      valid_lft forever preferred_lft forever
   inet 10.0.0.13/24 scope global secondary eth0
      valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fede:7c97/64 scope link
      valid_lft forever preferred_lft forever

1.8.5 web伺服器上進行配置

(在web03/web04同時操作下麵步驟)
步驟1:在lo網絡卡系結VIP地址(ip)
步驟2:修改核心引數抑制ARP響應
ip addr add 10.0.0.13/32 dev lo

cat >>/etc/sysctl.conf<net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2EOF
sysctl -p

註意:web伺服器上的配置為臨時生效,可以將其寫入rc.local檔案,註意檔案的執行許可權。

使用curl命令進行測試

[root@lb04 ~]# curl 10.0.0.13web03


至此keepalived+lvs配置完畢

1.9 常見LVS負載均衡高可用解決方案


開發類似keepalived的指令碼,早期的辦法,現在不推薦使用。

heartbeat+lvs+ldirectord指令碼配置方案,複雜不易控制,不推薦使用

RedHat工具piranha,一個web介面配置LVS。

LVS-DR+keepalived方案,推薦最優方案,簡單、易用、高效。

1.9.1 lvs排錯思路

1.9.2 參考檔案

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
NAT樣式安裝詳解   http://www.cnblogs.com/liwei0526vip/p/6370103.html
開發眼光看lvs      http://blog.hesey.net/2013/02/introduce-to-load-balance-and-lvs-briefly.html
lvs 介紹      http://www.it165.net/admin/html/201401/2248.html

《Linux雲端計算及運維架構師高薪實戰班》2018年05月14日即將開課中,120天衝擊Linux運維年薪30萬,改變速約~~~~

    *宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。

    – END –


    更多Linux好文請點選【閱讀原文】

    ↓↓↓

    贊(0)

    分享創造快樂

    © 2024 知識星球   網站地圖