linux負載均衡
1. linux裡面iptables怎麼實現負載均衡
1. iptables實現負載均衡的方式:
在Linux中使用iptables完成tcp的負載均衡有兩種模式:隨機、輪詢
The statistic mole support two different modes:
random:(隨機)
the rule is skipped based on a probability
nth:(輪詢)
the rule is skipped based on a round robin algorithm
2. example
2. Linux裡面tcp協議屬於四層服務嗎
TCP/IP 的分層管理
TCP/IP 協議按照層次分為 4 層:應用層、傳輸層、網路層、數據鏈路層。 對於分層這個概念,大家一定不陌生,比如我們的分布式架構體系中會分為業務層、服務層、基礎支撐層。比如docker,也是基於分層來實現。所以我們會發現,復雜的程序都需要分層,這個是軟體設計的要求,每一層專注於當前領域的事情。如果某些地方需要修改,我們只需要把變動的層替換掉就行,一方面改動影響較少,另一方面整個架構的靈活性也更高。 最後,在分層之後,整個架構的設計也變得相對簡單了。
分層負載
了解了分層的概念以後,我們再去理解所謂的二層負載、三層負載、四層負載、七層負載就容易多了。
一次 http 請求過來,一定會從應用層到傳輸層,完成整個交互。只要是在網路上跑的數據包,都是完整的。可以有下層沒上層,絕對不可能有上層沒下層。
二層負載
二層負載是針對 MAC,負載均衡伺服器對外依然提供一個 VIP(虛 IP),集群中不同的機器採用相同 IP 地址,但是機器的 MAC 地址不一樣。當負載均衡伺服器接受到請求之後,通過改寫報文的目標 MAC 地址的方式將請求轉發到目標機器實現負載均衡
二層負載均衡會通過一個虛擬 MAC 地址接收請求,然後再分配到真實的 MAC 地址
三層負載均衡
三層負載是針對 IP,和二層負載均衡類似,負載均衡伺服器對外依然提供一個 VIP(虛 IP),但是集群中不同的機器採用不同的 IP 地址。當負載均衡伺服器接受到請求之後,根據不同的負載均衡演算法,通過 IP 將請求轉發至不同的真實伺服器
三層負載均衡會通過一個虛擬 IP 地址接收請求,然後再分配到真實的 IP 地址
四層負載均衡
四層負載均衡工作在 OSI 模型的傳輸層,由於在傳輸層,只有 TCP/UDP 協議,這兩種協議中除了包含源 IP、目標 IP 以外,還包含源埠號及目的埠號。四層負載均衡伺服器在接受到客戶端請求後,以後通過修改數據包的地址信息(IP+埠號)將流量轉發到應用伺服器。
四層通過虛擬 IP + 埠接收請求,然後再分配到真實的伺服器
七層負載均衡
七層負載均衡工作在 OSI 模型的應用層,應用層協議較多,常用 http、radius、dns 等。七層負載就可以基於這些協議來負載。這些應用層協議中會包含很多有意義的內容。比如同一個Web 伺服器的負載均衡,除了根據 IP 加埠進行負載外,還可根據七層的 URL、瀏覽器類別來決定是否要進行負載均衡
比如:在nginx層做7層均衡,讓一個uid的請求盡量落到同一個機器上
3. Linux系統如何配置鏈路聚合,實現流量負載均衡
本文主要解決3個問題:
第一、鏈路聚合的定義和作用是什麼?
第二、如何配置鏈路聚合?
第三、鏈路聚合的實際應用場景有那些?
第一、鏈路聚合的定義和作用是什麼?
答:鏈路聚合的定義:鏈路聚合,官方稱聚合鏈接,民間又稱網卡組隊,具體指的是將多個網卡綁定在一起組建一個虛擬網卡,外界與虛擬網卡進行通信,虛擬網卡再將信息進行分發;
鏈路聚合的作用:可以實現輪詢式的流量負載均衡和熱備份的作用;
舉個栗子:
鏈路聚合就好比是一個包工頭,這個包工頭為了多賺錢,多接訂單,肯定需要找多個小弟;
這樣就可以保障,萬一有一個小弟感冒了,不能上班,這時有其他小弟可以頂上;
當客戶需要蓋房子的時候,直接找包工頭就好了,不需要一個一個的去找建築工人;
第二、如何配置鏈路聚合?
答:
1、配置鏈路聚合的命令是:
nmcli connection add type team con-name team0 ifname team0 autoconnect yes config '{"runner": {"name": "activebackup"}}'
譯為:nmcli connection 添加 類型 team(組隊)
配置文件名 team0 網卡名 team0 每次開機自動啟用
配置運行模式 熱備份模式
整體譯為:為系統網卡添加一個 team (團隊),團隊名稱叫 team0 ,配置文件也叫 team0 , 並且設置為開機自動啟動,配置運行模式為熱備份模式;
2、為鏈路聚合添加成員的命令是:
nmcli connection add type team-slave con-name team0-1 ifname eth1 master team0 ;
nmcli connection add type team-slave con-name team0-2 ifname eth2 master team0;
注釋:nmcli connection 添加 類型為 team的成員
配置文件名 team0-1 網卡為 eth1 主設備為 team0
整體譯為:為主設備team0添加兩張網卡,eth1和eth2;
3、為tem0配置ip地址的命令是:
nmcli connection modify team0 ipv4.method manual ipv4.addresses
「IP 地址 / 子網掩碼」 connection.autoconnect yes
4、激活team0的命令是:
nmcli connection up team0
第三、鏈路聚合的實際應用場景有那些?
答:當伺服器提供比較重要的服務時,只准備一張網卡是遠遠不夠的,因為一但網卡出現故障,客戶就無法訪問,這就會造成客戶流失,體驗感差;
這個時候就可以運用鏈路聚合的方法來解決,將多張網卡綁定在一起創建一張虛擬網卡,從而實現網卡熱備份,流量輪詢式負載均衡;
以此來保障伺服器能夠正常提供服務,給用戶以良好的體驗;
注意事項:
在創建虛擬網卡和添加成員時,如果命令敲錯了,一定要刪除錯誤的信息,以免造成通信混亂;
刪除的命令是:nmcli connection delete team0 (team0或team x)
查看team0的信息命令是: teamdctl team0 state
以上.......
(本篇完)
祝:開心!
羅貴
2019-03-24
4. linux運維之LVS(一)
關於LVS負載均衡
一、什麼是負載均衡:
負載均衡集群提供了一種廉價、有效、透明的方法,來擴展網路設備和
伺服器的負載、帶寬、增加吞吐量、加強網路數據處理能力,提高網路的靈活性
和可用性。
二、搭建負載均衡服務的需求:
1)把單台計算機無法承受的大規模的並發訪問或者數據流量分擔到多台節點設備上
分別處理,減少用戶等待響應的時間,提升用戶體驗。
2)單個重負載的運算分擔到多台節點設備上做並行處理,每個節點設備結束後,
將結果匯總,返回給用戶,系統處理能力得到大幅度提升。
3)7*24的服務保證,任意一個或多個有限節點設備宕機,要求不能影響業務。
三、LVS的介紹:
LVS是Linux Virtual Server的簡寫,即Linux虛擬伺服器,是一個虛擬的伺服器
集群系統,可以在UNIX/LINUX平台下實現負載均衡集群功能。
該項目是在1998年5月由章文嵩博士組織成立的,是中國國內最早出現的自由
軟體項目之一。
四、關於LVS的配置使用:
LVS負載均衡調度技術是在Linux內核中實現的,因此,被稱為Linux
虛擬伺服器。我們使用該軟體配置LVS時候,不能直接配置內核中的ipvs,
而需要使用ipvs的管理工具ipvsadm進行管理,ipvs的管理工具ipvsadm管理ipvs。
五、LVS技術點小結:
1)真正實現負載均衡的工具是ipvs,工作在linux內核層面。
2)LVS自帶的ipvs管理工具是ipvsadm。
3)keepalived實現管理ipvs及對負載均衡器的高可用。
4)Red hat工具Piranha WEB管理實現調度的工具ipvs。
六、LVS體系結構與工作原理:
1)LVS集群負載均衡接收服務的所有入站客戶端計算機請求,並根據調度演算法決定哪個集群節點應該處理回復請求。
負載均衡(LB)有時也被稱為LVS Director(簡稱 Director).
2)LVS虛擬伺服器的體系結構如下圖,一組伺服器通過高速的區域網或者地理分布
的廣域網相互連接,在他們的前端有一個負載調度器(Load Balancer)。負載調度器能
無縫地將網路請求調度到真正的伺服器上,從而使得伺服器集群的結構對客戶是透明的,
客戶訪問集群系統提供的網路服務就像訪問一台高性能、高可用的伺服器一樣。客戶程序
不受伺服器集群的影響不需做任何修改。系統的伸縮性通過在服務集群中透明地加入和刪除
一個節點來達到,通過檢測節點或服務進程故障和正確的重置系統達到高可用性。由於我們的負載調度技術在
linux內核中實現的,我們稱之為linux虛擬伺服器(Linux Virtual Server)。
七、LVS社區提供了一個命名的約定:
名稱: 縮寫
虛擬IP地址(Virtual IP Address) VIP
說明:VIP為Director用於向客戶端計算機提供服務的ip地址,
比如:www.etiantian.org 域名就解析到vip上提供服務。
-------------------------------------------------------------------------------
真實ip地址(Real Server ip Address) 縮寫:VIP
說明:在集群下面節點上使用的ip地址,物理ip地址。
-----------------------------------------------------------------------------------
Director的ip地址(Director ip Adress) 縮寫:DIP
說明:Director用於連接內外網路的ip地址,物理網卡上的IP地址,
是負載均衡上的ip。
-------------------------------------------------------------------------------------
客戶端主機IP地址(Client IP Address) 縮寫:CIP
說明:客戶端用戶計算機請求集群伺服器的IP地址,該地址用作發送
給集群的請求的源ip地址。
----------------------------------------------------------------
LVS集群內部的節點稱為真實伺服器(Real server),也叫做集群節點。請求集群服務的
計算機稱為客戶端計算機。
與計算機通常在網上交換數據包的方式相同,客戶端計算機、Director
和真實伺服器使用IP地址彼此進行通信。
------------------------------------------------------------------------------------------
八、LVS集群的3種工作模式介紹與原理講解
1)IP虛擬服務軟體ipvs,在調度器的實現技術中,IP負載均衡技術是
效率最高的。在已用的ip負載均衡技術中有通過網路地址轉換
(Network Address Translation)將一組伺服器構成一個高性能的、高可用的虛擬伺服器,
我們稱之為VS、NAT技術(Virtual Server Network Adress Translation)。
2)在分析VS/NAT的缺點和網路服務的非對稱性的基礎上,我們提出通過IP隧道實現虛擬伺服器的
方法VS/TUN(Virtual Server via IP Tunneling)和通過直接路由實現虛擬服務
器的方法VS/DR(Virtual Server via Director Routing),它們可以極大地提高系統的伸縮性。
3)淘寶開源的模式FULLNAT。
LVS的四種工作模式:
縮寫及全拼:
NAT(Network Adress Translation)、TUN(Tunneling)、
DR(Director Routing)、FULLNAT(FULL Network address Translation)
-------------------------------------------------------------------------------------------
九、什麼是ARP協議:
1) ARP協議:全稱"Address Resolution Protocol",中文名地址解析協議,使用ARP協議可
實現通過IP地址獲得得對應主機的物理地址(MAC地址)。
在TCP/IP的網路環境下,每個聯網的主機都會被分配一個32位的ip地址,
這種互聯網地址是在網際范圍標識主機的一種邏輯地址。為了讓報文在
物理網路上傳輸,還必須要知道對方目的主機的物理地址(MAC)才行。這樣就存在把IP地址變成
物理地址的地址轉換的問題。
在乙太網環境,為了正確地目的主機傳送報文,必須把目的主機的32位IP
地址轉換成為目的主機48位乙太網的地址(MAC地址)。這就需要在互聯層有一個服務或功能將
IP地址轉換為相應的物理地址(MAC地址),這個服務或者功能就是ARP協議。
所謂的「地址解析」,就是主機在發送幀之前將目標IP地址轉換成目標MAC地址的過程,
ARP協議的基本功能就是通過目標設備的ip地址,查詢目標設備的MAC地址,以保證主機
間互相通信的順利進行。
ARP協議和DNS有點相像之處,不同點是:DNS是在域名和IP之間的解析,另外,ARP協議不需要
配置服務,而DNS要配置服務才行。
ARP協議要求通信的主機雙方必須在同一個物理網段(即區域網)!
2)關於ARP的小結:
1.ARP全稱「Address Resolution Protocol」;
2.實現區域網內通過IP地址獲取主機的MAC地址;
3.MAC地址48位主機的物理地址,區域網內唯一;
4.ARP協議類似DNS服務,但不需要配置服務。
5.ARP協議是三層協議。
--------------------------------------------------------------------------------------------------------
十、ARP緩存表:
1)每台安裝有TCP/IP協議的電腦都會有一個ARP緩存表(windows 命令提示符里輸入arp -a即可)。
表裡的ip地址與MAC地址是一一對應的。
arp常用命令:
arp -a :查所有記錄
arp -d :清除
arp -s :綁定IP和MAC
2)ARP緩存表是把雙刃劍:
1.主機有了arp緩存表,可以加快ARP的解析速度,減少區域網內廣播風暴。
2.正是有了arp緩存表,給惡意黑客帶來了攻擊伺服器主機的風險,這個就是arp欺騙攻擊。
3.切換路由器,負載均衡器等設備時,可能會導致短時網路中斷。
3)為啥用ARP協議?
OSI模型把網路工作分為七層,彼此不直接通信打交道,只通過介面。IP地址工作在第三層,
MAC地址工作在第二層。當協議在發送數據包時,需要先封裝第三層IP地址,第二層MAC地址的報頭,
但是協議只知道目的節點的ip地址,不知道目的節點的MAC地址,又不能跨第二、三層,所以得用ARP協議服務,
來幫助獲取目的節點的MAC地址。
4)ARP在生產環境產生的問題及解決辦法:
1.ARP病毒,ARP欺騙
2.高可用伺服器對之間切換時要考慮ARP緩存的問題。
3.路由器等設備無縫遷移時需要考慮ARP緩存的問題,例如:更換辦公室的路由器。
5)ARP欺騙原理:
ARP攻擊就是通過偽造IP地址和MAC地址對實現ARP欺騙的,如果一台主機中了ARP病毒,
那麼它就能在網路中產生大量的ARP通信量,很快的進行廣播以至於使網路阻塞,攻擊者
只要持續不斷的發出偽造的ARP響應就能更改區域網中目標主機ARP緩存中的IP-MAC條目,
造成網路中斷或者中間人攻擊。