1. 程式人生 > >虛擬伺服器叢集的ip負載均衡技術理解

虛擬伺服器叢集的ip負載均衡技術理解

ip負載均衡技術是在負載排程器的實現技術中時最高效的,在已有的ip負載均衡技術中主要有通過網路地址轉換,將一組伺服器構建成一個高效能的,高可用的虛擬伺服器我們稱之為VS/NAT技術。
在分析VS/NAT的缺點和網路服務的非對稱性的基礎上,我們提出了VS/TUN和直接通過路由實現虛擬伺服器的方法VS/DR,他們可以極大的提高系統的伸縮性

LVS三種模式的特點:

` VS/NAT VS/TUN VS/DR
伺服器作業系統 任意 支援隧道 多數(支援Non-arp )
伺服器網路 私有網路 區域網/廣域網 區域網
伺服器數目(100M網路) 10-20 100 多(100)
伺服器閘道器 負載均衡器 自己的路由 自己的路由
效率 一般 最高

管理 LVS 的虛擬服務
-A 增加 ipvsadm 在核心列表中增加一個新的排程服務,也可以理解為新增一主機。
-s 指定該排程服務使用到演算法。
-t|-u指定IP地址和埠,t表示TCP協議,u表示UDP協議。
-E 編輯已經存在的排程列表。
-D 刪除某條排程列表。

管理 LVS 的真實伺服器
-a 增加一個IP地址來參與響應請求服務。
-t|-u指定排程列表中主機的IP地址和埠,t表示TCP協議,u表示UDP協議。
-r 指定參與響應請求的IP地址和埠。
-g 表示DR模式
-i 表示TUN模式
-m 表示NAT模式
-w 指定權重,供那些加權演算法參考,如1、2、3。
-e 編輯指定的真實伺服器。
-d 刪除指定的真實伺服器。

檢視和管理當前 LVS 配置
-C 清空所有配置列表。
-Z 清零當前連線計算器。
-l 顯示當前核心LVS狀態。
-c 顯示當前LVS的連線情況,配合l使用。
–stats顯示統計資料。
–rat顯示速率資料。
–sort對輸出進行排序。
-n不進行主機名解析,直接輸出IP,加快顯示速度。

LVS 排程演算法
rr 輪叫(Round Robin) 排程器通過”輪 叫”排程演算法將外部請求按順序輪流分配到叢集中的真實伺服器上,它均等地對待每一臺服務 器,而不管伺服器上實際的連線數和系統負載。
wrr 加權輪叫(Weighted Round Robin) 排程器通過”加權輪叫”排程演算法根據真實伺服器的不同處理能力來調 度訪問請求。這樣可以保證處理能力強的伺服器處理更多的訪問流量。排程器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。
lc 最少連結(Least Connections) 排程器通過”最少連線”排程演算法動態地將網路請求排程到已建立的鏈 接數最少的伺服器上。如果集群系統的真實伺服器具有相近的系統性能,採用”最小連線”排程演算法可以較好地均衡負載。
wlc 加權最少連結(Weighted Least Connections) 在集群系統中的伺服器效能差異較大 的情況下,排程器採用”加權最少連結”排程
演算法優化負載均衡效能,具有較高權值的伺服器將承受較大比例的活動連線負載。排程器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。
lblc 基於區域性性的最少連結(Locality-Based Least Connections) “基於區域性性的最少連結” 排程演算法是針對目標IP地址的負載均衡,目前主要 用於Cache集群系統。該演算法根據請求的目標IP地
址找出該目標IP地址最近使用的伺服器,若該伺服器是可用的且沒有超載,將請求傳送到該伺服器;若
伺服器不存在,或者該伺服器超載且有伺服器處於一半的工作負載,則用”最少連結”的原則選出一個可用的伺服器,將請求傳送到該伺服器。
lblcr 帶複製的基於區域性性最少連結(Locality-Based Least Connections with Replication) “帶複製的基於區域性性最少連結”排程演算法也是 針對目標IP地址的負載均衡,目前主要用於Cache集
群系統。它與LBLC演算法的不同之處是它要維護從一個目標IP地 址到一組伺服器的對映,而LBLC演算法維護從一個目標IP地
址到一臺伺服器的對映。該演算法根據請求的目標IP地址找出該目標IP地址對應的伺服器組,按”最小連線”原則從伺服器組中選出一臺伺服器,若伺服器沒有超載,將請求傳送到該伺服器,若伺服器超載;則按”最小連線”原則從這個叢集中選出一臺伺服器,將該服務
器加入到伺服器組中,將請求傳送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,將最忙的伺服器從伺服器組中刪除,以降低複製的程度。
dh 目標地址雜湊(Destination Hashing) “目標地址雜湊”調 度演算法根據請求的目標IP地址,作為雜湊鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。
sh 源地址雜湊(Source Hashing) “源地址雜湊”調 度演算法根據請求的源IP地址,作為雜湊鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。

VS/DR 通過直接路由實現虛擬伺服器
輸入層:負載均衡高可用
首先 配置伺服器的yum源
將有關負載均衡以及高可用的套件加進去
這裡寫圖片描述
然後下載安裝ipvsadm
新增
這裡寫圖片描述
由於目前沒有100ip 所以先加入vip
同時服務端也需要新增vip 原因是因為tcp的三次握手
Ip addr add 172.25.19.100/24 dev eth0
但是從這裡看 這幾臺裝置都有100地址 呢麼訪問100 的時候誰先相應就用誰的
呢麼運氣不好的條件下 我們所作的負載均衡就失去了效果
呢麼就需要在兩臺真實伺服器中 (可以參考紅帽官網的文件)
下載arptables_jf
這裡寫圖片描述
當然這個ip與你的vip保持相同
這裡寫圖片描述
將他儲存下來
這個是效果
這裡寫圖片描述
Ldirectord
下載

yum install ldirectord-3.9.5-3.1.x86_64.rpm 
[root@server1 ~]# rpm -ql ldirectord
/etc/ha.d
/etc/ha.d/resource.d
/etc/ha.d/resource.d/ldirectord
/etc/init.d/ldirectord
/etc/logrotate.d/ldirectord
/usr/lib/ocf/resource.d/heartbeat/ldirectord
/usr/sbin/ldirectord
/usr/share/doc/ldirectord-3.9.5
/usr/share/doc/ldirectord-3.9.5/COPYING
/usr/share/doc/ldirectord-3.9.5/ldirectord.cf
/usr/share/man/man8/ldirectord.8.gz
[root@server1 ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf
cp: missing destination file operand after `/usr/share/doc/ldirectord-3.9.5/ldirectord.cf'
Try `cp --help' for more information.
[root@server1 ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
[root@server1 ~]# cd /etc/ha.d/
[root@server1 ha.d]# ls
ldirectord.cf  resource.d  shellfuncs
[root@server1 ha.d]# vim ldirectord.cf 
『
virtual=172.25.19.100:80  vip
        real=172.25.19.2:80 gate  真實伺服器主機的ip
        real=172.25.19.3:80 gate   真實伺服器主機的ip
        fallback=127.0.0.1:80 gate 
        service=http
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
#       receive="Test Page"
#       virtualhost=www.x.y.z

』
[root@server1 ha.d]# ipvsadm -C #將原來自己編寫的一些規則刷掉
[root@server1 ha.d]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

啟動 ld
然後 策略會自動編寫在ipvsadm 裡面
當一臺伺服器掛掉後 不再會呼叫掛掉的伺服器
以下為結果
這裡寫圖片描述
當一臺伺服器掛掉後 就不會倫叫錯誤的
兩臺都掛掉了後 會呼叫主機的

Ld實現了對服務健康的檢測
關掉ld
負載均衡高可用

 211  tar zxf keepalived-2.0.6.tar.gz  #解壓這個包
  212  cd keepalived-2.0.6   #進入該目錄
  213  ls
  214  ./configure --prefix=/usr/local/keepalived --with-init=SYSV
  218  yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm 
  220  ./configure --prefix=/usr/local/keepalived --with-init=SYSV
  224  yum install openssl-devel  
  225  ./configure --prefix=/usr/local/keepalived --with-init=SYSV
         make  #解決完它的error 然後make
  240  make install  
  244  cd /usr/local/
  245  ls
  246  cd keepalived/
  261  cd etc/rc.d/
  262  ls
  263  cd init.d/
  264  ls
  265  chmod +x keepalived  #為該指令碼增添可執行許可權
  292  ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d #建立軟連線
  293  ln -s /usr/local/keepalived/etc/keepalived /etc/
  294  ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  295  ln -s /usr/local/keepalived/sbin/keepalived /sbin/
  296  which keepalived 
  297  /etc/init.d/keepalived start
  298  cd /usr/local/
  299  ls
  300  scp -r keepalived/ server4:/usr/local/ #同樣的需要在另外一臺服務機器作相同的配置
  302  yum install -y mailx
  303  vim /etc/keepalived/keepalived.conf 
  304  ip addr del 172.25.19.100/24 dev eth0
  305  ip addr
  306  ip addr del 172.25.19.200/24 dev eth0
  307  ipvsadm -l
  308  ipvsadm -C
  309  ipvsadm -l
  310  /etc/init.d/ldirectord stop
  311  ipvsadm -l
  312  ls
  313  cd /etc/keepalived/
  314  ls
  315  scp keepalived.conf server4:/etc/keepalived/
  316  /etc/init.d/keepalived restart
  317  ipvsadm -l
  318  iptables -l
  319  iptables -L
  320  vim /etc/keepalived/keepalived.conf 
  321  iptables -F
  322  iptables -L
  323  /etc/init.d/keepalived restart
  324  ipvsadm -l
  325  iptables -L
  326  ipvsadm -l
  327  ip addr
  328  cat /var/log/messages 
  329  ipvsadm -L
  330  ipvsadm -l
  331  ip addr
  332  ip addr -d 172.25.19.100/32
  333  ip addr -d 172.25.19.100/32 dev eth0
  334  ip addr -del 172.25.19.100/32 dev eth0
  335  ipvsadm
  336  vim /etc/keepalived/keepalived.conf 
  337  iptables 0L
  338  iptables -L
  339  /etc/init.d/keepalived restart
  340  ipvsadm
  341  ipvsadm -L
  342  vim /etc/keepalived/keepalived.conf 
  343  /etc/init.d/keepalived restart
  344  vim /etc/keepalived/keepalived.conf 
  345  /etc/init.d/keepalived restart


   20  yum install -y mailx
   21  vim /etc/keepalived/keepalived.conf 
   22  /etc/init.d/keepalived restart
   23  cd 
   24  vim /var/spool/mail/root 
   25  vim /etc/keepalived/keepalived.conf 
   26  /etc/init.d/keepalived restart
   27  cat /var/log/messages 
   28  vim /etc/keepalived/keepalived.conf 
   29  /etc/init.d/keepalived restart
   30  > /var/log/messages 
   31  /etc/init.d/keepalived restart
   32  cat /var/log/messages 
   33  vim /etc/keepalived/keepalived.conf 
   34  /etc/init.d/keepalived restart
   35  vim /etc/keepalived/keepalived.conf 
   36  /etc/init.d/keepalived restart
   37  history 

下面VS/TUN ip隧道實現虛擬伺服器 以及NAT實現虛擬伺服器 為自己的理解 不足之處還往指出

             示意圖哦

這裡寫圖片描述
172.25.19.1 ipvsadm主機
172.25.19.119 VIP
172.25.19.2
。。。
這裡寫圖片描述
會出現tun這個介面
當然rs上也需要出現該埠

vs

 (如果有兩個網絡卡,可以將VIP地址配置到另一個網絡卡上)
ip addr add 172.25.19.119/24 dev tunl0

ipvsadm -A -t 172.25.19.119:80 -s rr
ipvsadm -a -t 172.25.19.119:80 -r 172.25.19.2:80 -i
ipvsadm -a -t 172.25.19.119:80 -r 172.25.19.3:80 -i

ipvsadm -a -t 172.25.19.119:80 -r 172.25.19.1:80 -i  #別的掛了的話vs也可以自己上


rs1 rs2
ip addr add 172.25.19.119/24 dev tunl0
作一下arp抑制 與dr 相同參考上面
將 tunl開啟 ip link set up tuml0 
需要將 sysctl -w net.ipv4.conf.tunl0.rp_filter 關閉 
系統的話預設不接受不由直接連線的網路所傳遞來的資料包
rs1: ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.19.119:80 rr
  -> 172.25.19.1:80             Local   1      1          0        
  -> 172.25.19.2:80             Tunnel  1      1          0        
  -> 172.25.19.3:80             Tunnel  1      1          0

這裡寫圖片描述
說明

訪問172.25.19.119能出現輪訓不同的頁面即表示搭建LVS成功。
Forward為Tunnel即為IP隧道模式tun。
Weight表示權重。
ActiveConn是表示處於TCP的ESTABLISHED(確定建立)狀態的連線數目,ActiveConn的各項總和即為當前已建立連線的總和。
InActConn表示處於TCP的非ESTABLISHED狀態的連線數目,包括SYN_RECEIVED, TIME_WAIT, CLOSE_WAIT狀態等等。
結果:
這裡寫圖片描述

NAT:
這裡寫圖片描述
首先配置以下環境
sever1作為vs (雙網絡卡)
sever2、sever3作為rs
同樣的yum源需要全部設定出來
2.下載ipvsadm
[[email protected]: ~]# yum install ipvsadm -y
下載完成後啟動
[[email protected]: ~]# /etc/init.d/ipvsadm start
3.開啟內部路由設定

[[email protected]: ~]# vim /etc/sysctl.conf
7 net.ipv4.ip_forward = 1 ##0=關閉 1=開啟
[[email protected]: ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
error: “net.bridge.bridge-nf-call-ip6tables” is an unknown key
error: “net.bridge.bridge-nf-call-iptables” is an unknown key
error: “net.bridge.bridge-nf-call-arptables” is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

4.新增ipvsadm規則

[root@server1: ~]# ipvsadm -A -t 172.25.254.119:80 -s rr
[root@server1: ~]# ipvsadm -a -t 172.25.254.119:80 -r 172.25.19.2:80 -m
[root@server1: ~]# ipvsadm -a -t 172.25.254.119:80 -r 172.25.19.3:80 -m
[root@server1: ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.191:80 rr
  -> 172.25.19.2:80               Masq    1      0          0         
  -> 172.25.19.3:80               Masq    1      0          0        

2.server(2)

1.下載http服務

[root@server2: network-scripts]# yum install httpd -y
[root@server2: network-scripts]# cat /var/www/html/index.html 
server2
[root@server2: network-scripts]# /etc/init.d/httpd    restart

2.配置RS的閘道器指向vs

[[email protected]: network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=172.25.19.2
PREFIX=24
GATEWAY=172.25.19.1
DNS1=114.114.114.114

3.server(3)

1.下載http服務

[root@server3: network-scripts]# yum install httpd -y
[root@server3: network-scripts]# cat /var/www/html/index.html 
server3
[root@server3: network-scripts]# /etc/init.d/httpd    restart

配置真實伺服器的網管 使其指向VS
這裡寫圖片描述
這裡寫圖片描述

相關推薦

虛擬伺服器叢集ip負載均衡技術理解

ip負載均衡技術是在負載排程器的實現技術中時最高效的,在已有的ip負載均衡技術中主要有通過網路地址轉換,將一組伺服器構建成一個高效能的,高可用的虛擬伺服器我們稱之為VS/NAT技術。 在分析VS/NAT的缺點和網路服務的非對稱性的基礎上,我們提出了VS/TUN

LVS虛擬伺服器介紹及負載均衡系統配置

一、簡介         LVS(Linux Virtual Server) 是Unix-like系統中的一個虛擬伺服器,LVS在Unix-like系統中是作為一個前端(Director)存在的,又稱為排程器,它本身不提

LVS 的IP負載均衡技術

NAT實現虛擬伺服器 (VS/NAT) NAT的工作原理是報文頭(目標地址、源地址、目標埠)被正確改寫後,客戶相信他們連線一個IP地址,而不同IP地址的伺服器也認為他們是與客戶直接相連的。由此,可以用N

nginx+tomcat+memcached搭建伺服器叢集負載均衡

 在實際專案中,由於使用者的訪問量很大的原因,往往需要同時開啟多個伺服器才能滿足實際需求。但是同時開啟多個服務又該怎麼管理他們呢?怎樣實現session共享呢?下面就來講一講如何使用tomcat+nginx搭建伺服器叢集以及如何實現session共享。     環境:  

Tomcat伺服器叢集負載均衡實現

一、前言 在單一的伺服器上執行WEB應用程式有一些重大的問題,當網站成功建成並開始接受大量請求時,單一伺服器終究無法滿足需要處理的負荷量,所以就有點顯得有點力不從心了。另外一個常見的問題是會產生單點故障,如果該伺服器壞掉,那麼網站就立刻無法運作了。不論是因為要有較佳的擴

伺服器叢集負載均衡技術

負載均衡 (Load Balancing) 負載均衡建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。 CDN負載均衡(Load Balance)[1]由於現有網路的各個核心部分

apache Web伺服器叢集負載均衡技術 (轉)

[size=medium]Internet 的快速增長,特別是電子商務應用的發展,使Web應用成為目前最重要最廣泛的應用,Web伺服器動態內容越來越流行。目前,網上資訊交換量幾乎呈指數增長,需要更高效能的Web伺服器提供更多使用者的Web服務,因此,Web伺服器面臨著訪問量急

微服務管理平臺nacos虛擬ip負載均衡叢集模式搭建

一、Nacos簡介 Nacos是用於微服務管理的平臺,其核心功能是服務註冊與發現、服務配置管理。 Nacos作為服務註冊發現元件,可以替換Spring Cloud應用中傳統的服務註冊於發現元件,如:Eureka、consul等,支援服務的健康檢查。 Nacos作為服務配置中心,可以替換Spring Clou

負載叢集實戰之lvs負載均衡-技術流ken

LVS的英文全稱是Linux Virtual Server,即Linux虛擬伺服器。 特點 跨平臺:window,linux 作用 實現負載均衡 核心元件 ip_vs:linux的核心功能模組,工作在核心,依賴該核心模組實現負載均衡功能 ipvsadm:應用層程式,該程式可以和核心中的ip_vs模組通訊,實

VMWare搭多臺虛擬機器做叢集負載均衡、主從資料庫一

最近一時興起,想搭建幾臺虛擬機器做負載均衡和資料庫主從等高階功能研究。不做安全性和其它考慮。這裡主要是為了以後測試高階的功能。 目前的想法是實現下面幾個功能: 1、負載均衡服務,能承受大量的併發訪問 2、分存式快取,以後多的東西肯定放快取裡面。 3、主從資料庫或者資料庫讀

菜鳥教你如何通俗理解——>叢集負載均衡、分散式

   網路的負載均衡是一種動態均衡技術,常見的實現方式是通過一些工具實時地分析資料包,掌握網路中的資料流量狀況,把任務合理均衡地分配出去。這種技術基於現有網路結構,提供了一種擴充套件伺服器頻寬和增加伺服器吞吐量的廉價有效的方法,加強了網路資料處理能力,提高了網路的靈活性和可用性。日常生活中到處都能看到“負載均

我的項目經驗總結——負載均衡理解和實戰:1

目的 效果 log 服務器集群 class ron htm tro 分析 前言 目前接觸的一個服務,它的7層負載均衡使用Nginx,4層使用的是我司自研的彈性負載均衡ELB。 而本文介紹和實戰的是工作在4層負載均衡之一的LVS(Linux Virtual Server)

LVS的三種負載均衡技術,八大負載調度算法

lvs 負載均衡技術 負載均衡調度算法 1、LVS項目簡介LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統。本項目在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。章文嵩博士目前工作於阿裏集團,主要從事集群技術、操作

域名到站點的負載均衡技術一覽(主要是探討一臺Nginx抵禦大並發的解決方案)(轉)

零成本 參考 硬件 名詞 virt 很好 web 常見 .com 繼上一篇文章Http://www.cnblogs.com/EasonJim/p/7807794.html中說到的,Nginx雖然很強大,但是面對大並發時,一臺Nginx總是有限的。即使後端有多臺Nginx組成

億級PV請求的三種負載均衡技術(轉)

直接 轉發 指向 nfs admin ip地址 cnblogs 當前 求和 http://www.360doc.com/content/17/1126/23/50145453_707419125.shtml 目錄 DNS輪詢 LVS負載均衡 DR模式 NAT

負載均衡技術之-lvs

internet log nat 並發訪問 目標地址 應該 p地址 用戶空間 wrr LVS簡介 Internet的快速增長使多媒體網絡服務器面對的訪問數量快速增加,服務器需要具備提供大量並發訪問服務的能力,因此對於大負載的服務器來講, CPU、I/O處理能力很快

架構設計:負載均衡層設計方案之負載均衡技術總結篇

error_log 基於 地址映射 高可用 lvs-dr模式 緩解 映射 node yum 前言 1、概述 通過前面文章的介紹,並不能覆蓋負載均衡層的所有技術,但是可以作為一個引子,告訴各位讀者一個學習和使用負載均衡技術的思路。雖然後面我們將轉向“業務層”和“業務通信”層的

HAProxy詳解(三):基於虛擬主機的HAProxy負載均衡系統配置實例【轉】

ise onf sysconf proxy配置 ffffff 規則設置 library 版本信息 論壇 一.基於虛擬主機的HAProxy負載均衡系統配置實例 1.通過HAProxy的ACL規則配置虛擬主機: 下面將通過HAProxy的AC

nginx實現反向代理、負載均衡-技術流ken

詳細 反向代理服務 就是 oba ref cnblogs 緩存 lan 案例 本篇博文是《nginx實現動態/靜態文件緩存-技術流ken》的二部曲。將詳細介紹nginx如何實現反向代理以及負載均衡技術,並輔以實戰案例。 反向代理--“反向代理(Reverse

Nginx vs LVS 軟負載均衡技術選型總結

計算 依賴性 通過 基本 vlan 解決 假設 服務 利用 選型總結: 【運維角度】:LVS對網絡依賴性較高,卻沒有日誌輸出,不方便運維維護及排查問題。LVS屬於重量級應用,LVS多時候不能配置成功都是因為網絡問題而不是配置問題,出了問題要解決也相應的會麻煩得多。比如LVS