天天看點

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

Linux項目_LVS_DR排程模型

一.基本概念

1.負載均衡技術

LVS中文站點:http://zh.linuxvirtualserver.org/
Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫
Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

2.LVS簡單介紹

(1)概念

  • LVS是Linux Virtual Server的簡寫,意即Linux虛拟伺服器,是一個虛拟的伺服器叢集系統。

(2)八大排程算法

LVS 的負載排程算法 在核心中的連接配接排程算法上,IPVS 已實作了以下八種排程算法:

一. 輪叫排程(Round­Robin Scheduling)

輪叫排程(Round Robin Scheduling)算法就是以輪叫的方式依次将請求排程不同的伺服器,即每次排程執行 i = (i + 1) mod n,并選出第 i 台伺服器。算法的優點是其簡潔性,它無需記錄目前所有連接配接的狀态,是以它是一種無狀态排程。

二.權重輪叫排程(Weighted Round­Robin Scheduling)

權重輪叫排程 (Weighted Round­Robin Scheduling)算法可以解決伺服器間性能不一的情況,它用相應的權值表示伺服器的處理性能,伺服器的預設權值為 1。假設伺服器 A 的權值為1,B 的 權值為 2,則表示伺服器 B 的處理性能是 A 的兩倍。權重輪叫排程算法是按權值的高低和輪叫方式配置設定請求到各伺服器。權值高的伺服器先收到的連接配接,權值高的服 務器比權值低的伺服器處理更多的連接配接,相同權值的伺服器處理相同數目的連接配接數。

三.最小連接配接排程(Least­Connection Scheduling)

最小連接配接排程(Least­ Connection Scheduling)算法是把新的連接配接請求配置設定到目前連接配接數最小的伺服器。最小連接配接排程是一種動态排程算法,它通過伺服器目前所活躍的連接配接數來估計服務 器的負載情況。排程器需要記錄各個伺服器已建立連接配接的數目,當一個請求被排程到某台伺服器,其連接配接數加 1;當連接配接中止或逾時,其連接配接數減一。

四.權重最小連接配接排程(Weighted Least­Connection Scheduling)

權重最小連接配接調 度(Weighted Least­Connection Scheduling)算法是最小連接配接排程的超集,各個伺服器用相應的權值表示其處理性能。伺服器的預設權值為 1,系統管理者可以動态地設定伺服器的權 值。權重最小連接配接排程在排程新連接配接時盡可能使伺服器的已建立連接配接數和其權值成比例。

五.基于局部性的最少連結(Locality­Based Least Connections Scheduling)

基 于局部性的最少連結排程(Locality­Based Least Connections Scheduling,以下簡稱為LBLC)算法是針對請求封包的目标 IP 位址的負載均衡排程,目前主要用于 Cache 叢集系統,因為在 Cache 叢集中 客戶請求封包的目标 IP 位址是變化的。這裡假設任何後端伺服器都可以處理任一請求,算法的設計目标是在伺服器的負載基本平衡情況下,将相同目标 IP 位址的 請求排程到同一台伺服器,來提高各台伺服器的通路局部性和主存 Cache 命中率,進而整個叢集系統的處理能力。LBLC 排程算法先根據請求的目标 IP 位址 找出該目标 IP 位址最近使用的伺服器,若該伺服器是可用的且沒有超載,将請求發送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處于其一半的工 作負載,則用“最少連結”的原則選出一個可用的伺服器,将請求發送到該伺服器。

六.帶複制的基于局部性最少連結(Locality­Based Least Connections with Replication Scheduling)

複制的基于局部性最少連結排程(Locality­Based Least Connections with Replication Scheduling,以下簡稱為 LBLCR)算法也是針對目标 IP 位址的負載均衡,目前主要用于 Cache叢集系統。

它與 LBLC 算法的不同之處是它要 維護從一個目标 IP 位址到一組伺服器的映射,而 LBLC 算法維護從一個目标 IP 位址到一台伺服器的映射。對于一個“熱門”站點的服務請求,一台 Cache 伺服器可能會忙不過來處理這些請求。這時,LBLC 排程算法會從所有的Cache 伺服器中按“最小連接配接”原則選出一台 Cache 伺服器,映射該“熱門”站 點到這台 Cache 伺服器,很快這台 Cache 伺服器也會超載,就會重複上述過程選出新的 Cache 伺服器。這樣,可能會導緻該“熱門”站點的映像會出現 在所有的 Cache 伺服器上,降低了 Cache 伺服器的使用效率。

LBLCR 排程算法将“熱門”站點映射到一組 Cache 伺服器(伺服器集合),當該“熱門”站點的請求負載增加時,會增加集合裡的 Cache 伺服器,來處理不斷增長的負載;當該“熱門”站點的請求負載降低時,會減少集合裡的 Cache 伺服器 數目。這樣,該“熱門”站點的映像不太可能出現在所有的 Cache 伺服器上,進而提供 Cache 叢集系統的使用效率。LBLCR 算法先根據請求的目标 IP 位址找出該目标 IP 位址對應的伺服器組;按“最小連接配接”原則從該伺服器組中選出一台伺服器,若伺服器沒有超載,将請求發送到該伺服器;若伺服器超載;則按 “最小連接配接”原則從整個叢集中選出一台伺服器,将該伺服器加入到伺服器組中,将請求發送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,将最忙的服 務器從伺服器組中删除,以降低複制的程度。

七.目标位址散列排程(Destination Hashing Scheduling)

目标位址散列排程 (Destination Hashing Scheduling)算法也是針對目标 IP 位址的負載均衡,但它是一種靜态映射算法,通過一個散列(Hash)函數将一個目标 IP 位址映射到一台服務

器。目标位址散列排程算法先根據請求的目标 IP 位址,作為散列鍵(Hash Key)從靜态配置設定的散清單找出對應的伺服器,若該伺服器是可用的且未超載,将請求發送到該伺服器,否則傳回空。

八.源位址散列排程(Source Hashing Scheduling)

源位址散列排程(Source Hashing Scheduling)算法正好與目标位址散列排程算法相反,它根據請求的源 IP 位址,作為散列鍵(Hash Key)從靜态配置設定的散清單找出對應的伺服器,若該伺服器是可用的且未超載,将請求發送到該伺服器,否則傳回空。它采用的散列函數與目标位址散列排程算法 的相同。它的算法流程與目标位址散列排程算法的基本相似,除了将請求的目标 IP 位址換成請求的源 IP 位址,是以這裡不一一叙述。在實際應用中,源位址散列 排程和目标位址散列排程可以結合使用在防火牆叢集中,它們可以保證整個系統的唯一出入口。

3.keepalived

(1)介紹

keepalived 軟體起初是專為LVS 負載均衡軟體設計的,用來管理并監控LVS叢集中各個服務節點的狀态,後來又加入了可以實作高可用的VRRP功能,是以。keepalived除了能夠管理LVS軟體之外,還可以作為其他服務的高可用解決方案

keepalived 軟體主要通過VRRP協定實作高可用的功能。VRRP是virtual router redundancy protocol (虛拟備援路由協定)的縮寫,VRRP出現的目的就是為了解決靜态路由單點故障的問題,他能夠保證當個别節點當機時,整個網絡可以不間斷的運作。

(2)VRRP 的工作模式

1 VRRP 虛拟備援路由協定,解決靜态路由的單點故障

2 通過競選機制将路由任務交給某台VRRP路由器

3 VRRP采用多點傳播IP 及224.0.0.18 實作高可用之間的通信

4 工作時主節點發包,當備節點接收不到資料包時,通過競選backup上升為主節點。

5 VRRP 使用了加密資料,但keepalived 官方希望使用明文使用者名和密碼

6 keepalived 高可用是通過VRRP實作的,keepalive在服務時,隻有主節點是接受資源的,備節點是停滞狀态、。當主節點恢複時,備用節點将自動将資料交給主節點。

(3)keepalived 服務的三個重要功能

1 管理LVS負載均衡軟體

2 實作對LVS叢集節點的健康檢查功能

3 作為系統網絡服務的高可用功能

二.DR(直連)輪叫

1.準備三台虛拟機

server1 172.25.0.1

server2 172.25.0.2

server3 172.25.0.3

2.在server1中搭建yum源

vim /etc/yum.repos.d/rhel-source.repo

yum repolist

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫
Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

3.ipvsadm

(1)安裝ipvsadm

yum install -y ipvsadm

(2).添加LocalAddress 配置

添加虛拟IP(VIP)

[server1]

ip addr add 172.25.0.100/24 dev eth0

ip addr

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

(3).添加ipvsadm政策

-A:添加虛拟服務 -t:添加服務位址 -s:采用的方式

(10種算法:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|)

-g:直連,預設采用直連

ipvsadm -A -t 172.25.0.100:80 -s rr

ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.2:80 -g

ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.3:80 -g

儲存政策:

/etc/init.d/ipvsadm save

檢視政策:

cat /etc/sysconfig/ipvsadm

ipvsadm -ln

分别在server2和server3上啟動httpd

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫
Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

實體機測試:

ping 172.25.0.100

檢視100的機器端口

arp -an | grep 100
Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

可在server2和server3中執行

ip addr add 172.25.0.100/32 dev lo

再用arp -an | grep 100檢視

清理緩存

curl 172.25.0.100

在實體機中執行

curl 172.25.0.100

此時的輪叫在清除緩存後失敗

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

需要進行

server2和server3中

配置和server1一樣的yum源

安裝軟體yum install arptables_jf.x86_64 -y

檢視政策arptables -L

添加政策:

arptables -A IN -d 172.25.0.100 -j DROP

arptables -A OUT -s 172.25.0.100 -j mangle –mangle-ip-s 172.25.0.2

/etc/init.d/arptables_jf save

檢視政策:

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

此時完成緩存處理:

在實體機中執行

arp -d 172.25.0.100

即可完成輪詢

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

(4).排程端對後端的健康檢查

[server1]

安裝工具ldirectord-3.9.5-3.1.x86_64.rpm

自動檢測ipvsadm政策是否正常

yum install ldirectord-3.9.5-3.1.x86_64.rpm -y

複制配置檔案模版

cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/

主配置檔案

vim /etc/ha.d/ldirectord.cf

/etc/init.d/ldirectord start

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

若done調server3

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

修改主配置檔案

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

此時便不會報錯

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

三.keepalived(高可用)

高可用HA介紹網址:http://www.linux-ha.org/wiki/Main_Page

keepalived介紹網址:http://www.keepalived.org/

(1)安裝環境軟體

openssl-devel

libnl3-devel

ipset-devel

iptables-devel

libnfnetlink-devel

mail

(2)源碼安裝

解壓keepalived:

tar zxf keepalived-1.4.3.tar.gz

cd keepalived-1.4.3

./configure –prefix=/usr/local/keepalived/ –with-init=SYSV

有以下報錯:缺少相關依賴性

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

安裝libnl-devel

yum install libnl-devel.x86_64 -y

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

再次執行

./configure –prefix=/usr/local/keepalived/ –with-init=SYSV

make

make install

預設安裝位址:

/usr/local/keepalived/

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

主配置檔案目錄

/usr/local/keepalived/etc/rc.d/init.d/keepalived

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

建立連結

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived/ /etc/

ln -s /usr/local/keepalived/sbin/keepalived /bin/

chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

将安裝好的複制給server4,複制連結

[server1]

scp -r keepalived/ server4:/usr/local/

[server4]

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived/ /etc/

ln -s /usr/local/keepalived/sbin/keepalived /bin/

chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

修改配置檔案

vim /etc/keepalived/keepalived.conf

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

ip addr del 172.25.0.100/24 dev eth0

删除政策

/etc/init.d/ldirectord stop

關閉ldirectord,防止沖突

chkconfig ldirectord off

修改配置檔案vim /etc/keepalived/keepalived.conf

添加vip

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

/etc/init.d/keepalived start

啟動服務

此時vip已經加入到檔案中,重新開機服務自動添加

複制設定給server4

scp /etc/keepalived/keepalived.conf server4:/etc/keepalived/
Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

[server4]

yum install -y ipvsadm

修改backup和權限值

/etc/init.d/keepalived start

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

[server1]

檢視ipvsadm政策

已知bug,iptables預設全部人通路

iptables -F

/etc/init.d/iptables save

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

[server1]

執行

echo c > /proc/sysrq-trigger

使核心崩潰

vip會自動傳遞到優先級系數較低的server4上

Linux項目_LVS_DR排程模型+keepalivedLinux項目_LVS_DR排程模型二.DR(直連)輪叫

繼續閱讀