lvs初探

LVS


  • 簡述

  • HA基礎知識

  • lvs配置


簡述

什么是lvs?

lvs是linux virtual server linux虛擬服務的縮寫,通過一臺調度服務器來調度收到的請求并分發給后端的real server。

lvs的功能是什么?

lvs能夠實現在大并發的情況下,將前端調度器收到的請求分發給后端服務器處理,實現了負載均衡集群的作用。

lb基礎知識

lb集群的基本架構

LB集群架構

lb常見的調度算法

靜態:
RR:round robin,輪詢,你一個我一個。
WRR:weighted round robin,加權輪詢,按照事先設置好的比例的前提下的輪詢。 
DH:Destination hashing,目標地址哈希,對目標地址做hash,將對同一個資源的訪問都指向同一臺服務器。
SH:source hashing,源地址地址哈希,對源地址做hash,將同一個來源ip的請求都發送到同一臺服務器上,實現session保持。

動態:
LC:least connected,最小連接,inactive+active*256
WLC:weighted least connected,加權最小連接,(inactive+active*256)*weight
SED:Shortest Expected Delay,最短期望延遲,(inactive+active*256+1)*weight
NQ:never queue,永不排隊,第一次不按照SED的算法來計算,之后的按照(inactive+active*256+1)*weight來計算。
LBLC:Locality-Based Least Connection,基于局部性的最少連接,基于請求目標ip的負載均衡度來計算。
LBLCR:Locality-Based Least Connections withReplication,帶復制的基于局部性最少鏈接,基于請求目標ip的負載均衡度來計算,并且帶復制,也就是說當一方即將超負載就會復制信息到另外一臺rs服務器上保證用戶的緩存信息不會丟失。

lb會遇到的難點和一般解決方案

  1. 在整個負載均衡集群架構中,可以看見所有的請求的都會先發送到director上,當并發量達到一定程度的時候,這個單一節點就有可能成為整個系統的性能瓶頸,并且當這個節點故障后就會導致整個集群的失效,所以我們可以采用對這個節點做高可用和負載均衡。

  2. lb還需要考慮的一個問題就是seesion保持的問題,當調度器分發請求到后端服務器上,可是每一個連接的緩存內容只會在一個主機上,這就會導致,用戶在訪問時,會有可能丟失seesion,為了解決這個問題可以采用三種方式,session與后端主機綁定,session集群,session服務器來解決。

lvs

lvs的負載均衡模型


NAT

LVS-NAT
dip與sip需要在一個網絡內,當director收到請求報文后,會將請求調度根據算法轉發調度至real server,然后real server返回資源,director再構建響應報文響應,但是也會產生問題,由于是所有的請求和響應都要經過director,所以這個節點極易成為瓶頸所在。

  1. director需要開啟內核的路由轉發功能。

     echo 1 > /proc/sys/net/ipv4/ip_forward
  2. dip與rip遇到在一個網絡內。

  3. rip的網關需要指向dip。

    route add default gw 192.168.1.20

DR

LVS-DR
dip與sip需要在一個物理網絡內,需要接收arp廣播,當director收到請求報文后,會通過arp廣播的方式調度至rs,rs上也配置了vip,所以當rs收到了報文后,解開后發現訪問地址就是本機上的vip,所以就會獲取資源構建響應報文直接通過路由互聯網去送達給用戶,這個方式可以看見,我們的director只需要接收請求報文并且調度廣播出去,響應報文不會像nat一樣還要經由director來響應,這樣提高了director的承載量與性能。

  1. rs需要在lo上配置vip。

    ifconfig lo:0 192.168.1.200/32 broadcast 192.168.1.200 up
  2. rs需要調整核心的arp功能。

    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  3. real server 將lo上的vip都路由至lo:0。

    route add -host 192.168.1.200 dev lo:0

TUN

TUN
當我們的director和rs各自在不同的網絡中,并且位于不同地區,我們就可以采用tun,也就是隧道的方式來解決,tun方式,是在director收到請求報文后,會在原報文的基礎上再構建請求報文,也就是嵌套兩兩層,director與rs建立tcp連接,當rs收到后就會先拆開外面的一層獲得原先的請求報文,之后再拆,就能得到原先的請求內容,然后又發現vip是本機上的地址,然后就直接構建響應報文通過互聯網響應給用戶端。

lvs的配置與規則設置

格式

ipvsadm -[parm [value]]

參數詳解:

-L:列出信息。
-n:以數字的形式顯示。
-c:顯示現在的連接。
--stats 顯示統計信息。
--rate 顯示速率信息。

-A:新增一個虛擬服務。
-E:修改一個虛擬服務。
-D:刪除一個虛擬服務,注意如果直接刪除虛擬服務,設定的real server也會直接全部刪除。
-C:清空所有規則與服務。 
-Z:清空所有的計數器。
-s [rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq]:指定調度算法。

-S [file]:保存ipvsadm規則到一個文件。
-R [file]:從一個文件讀取ipvsadm規則。

-a:新增一個real server
-e:修改一個real server
-d:刪除一個real server
-t|u|f [host[:port]]:設置tcp|udp|fwmark服務。
-m|g|i:設定為masquerading|gatewaying|ipip方式,m為nat方式,g為dr方式,i為tun方式。    
-w [num]:指定權重。
-r [ip[:port]]:指定real server。
-p [timeout]:持久連接,即一個cilent的多個請求都由一個rs處理。

常用命令組合示例:

ipvsadm -L -n
ipvsadm -L -c

ipvsadm -A -t 192.168.1.1:80 -s rr 
ipvsadm -a -t 192.168.1.1:80 -r 192.168.1.2 -g -w 1
ipvsadm -a -t 192.168.1.1:80 -r 192.168.1.3 -g -w 2

iptables -t mangle -d 192.168.1.1 -m mutilport --dports 22,80 -j mark --mark 1 
ipvsadm -A -f 1 -s rr 
ipvsadm -a -f 1 -r 192.168.1.2 -g -w 1 -p 300
ipvsadm -a -f 1 -r 192.168.1.3 -g -w 2 -p 300

原創文章,作者:Net18_肖肖,如若轉載,請注明出處:http://www.www58058.com/17188

(0)
Net18_肖肖Net18_肖肖
上一篇 2016-05-31 20:22
下一篇 2016-05-31

相關推薦

  • bind-9.9.5編譯安裝

    bind-9.9.5編譯安裝 §·bind-9.9.5編譯安裝大概步驟 步驟一 :下載源碼包bind-9.9.5 ; 步驟二 :按需求選擇模塊或功能 ./configure ;  # ./configure  –prefix=/usr/local/bind9  –sysconfdir=…

    Linux干貨 2016-10-09
  • 第一章 linux的安裝及簡單的命令合集

    linux安裝;簡答命令:注釋;常見用法

    Linux干貨 2018-03-17
  • KeepAlived實現HAProxy雙主并實現資源的動靜分離

    KeepAlived實現HAProxy雙主并實現資源的動靜分離 前言 HAProxy介紹 實驗拓撲 實驗環境 實驗步驟 配置后端httpd服務器 配置HAProxy實現backend負載均衡 測試動靜分離效果 配置KeepAlived 測試KeepAlived 配置DNS DNS測試 最終測試 總結 前言 我們這次使用HAProxy作為負載均衡調度器來實現后…

    Linux干貨 2016-04-16
  • Linux基礎之計算機的組成及其功能

    1、描述計算機的組成及其功能: 答:計算機由 1.1、CPU(運算器、控制器)進行邏輯運算跟控制運算,寄存器、緩存 1.2、輸入單元(鍵盤、鼠標、手寫板等)、輸出單元(屏幕、打印機) 1.3、存儲器(內存、硬盤) 2、按系列羅列linux的發行版,并描述不同發行版之間的聯系與區別。 答:debian(ubuntu、mint、knopix)、slackware…

    2017-09-11
  • Linux系統的終端類型

    Linux系統的終端類型    Linux系統的終端主要包括控制臺終端、控制終端、串口終端、偽終端、虛擬終端。 1.  控制臺終端(/dev/console)。    在Unix系統中,計算機顯示器通常被稱為控制臺終端。Console與虛擬終端相關聯,內核將信息送到控制臺終端上(/dev/conso…

    Linux干貨 2015-09-14
  • CentOS的軟件包的管理之rpm和yum

    在linux上,一個軟件包通常由二進制程序,庫文件,配置文件和幫助文件組成。 其中: 二進制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/usr/local/sbin這幾個目錄下邊; 庫文件都放在/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib和/usr/…

    Linux干貨 2017-04-23
欧美性久久久久