lvs ldirectord 實現健康檢測

2021-08-19 08:23:02 字數 4545 閱讀 1504

rhel6.5 selinux and iptables disabled

load balance: 172.25.79.1(server1)

virtual ip:172.25.79.100

gateway:172.25.79.1

realrerver1:172.25.79.2 (server2)

realrerver2:172.25.79.3(server3)

物理機內網 : 172.25.79.250

[root@server1 ha.d]# cd /opt/varnish/ldirectord-3.9.5-3.1.x86_64.rpm

-bash: cd: /opt/varnish/ldirectord-3.9

.5-3.1

.x86_64.rpm: not a directory

[root@server1 ha.d]# cd /opt/varnish/

[root@server1 varnish]# ls

bansys.zip

ldirectord-3.9

.5-3.1

.x86_64.rpm

varnish-3.0

.5-1.el6.x86_64.rpm

varnish-libs-3.0

.5-1.el6.x86_64.rpm

[root@server1 ~]# yum install -y 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 /etc/ha.d/
編輯配置檔案

[root@server1 ~]# vim /etc/ha.d/ldirectord.cf 

# global directives #「 全域性 」 設定

checktimeout=3

#指定定real server出錯的時間間隔

checkinterval=1

#指定ldirectord在兩次檢查之間的時間間隔

autoreload=yes

#自動過載配置檔案,選yes時,當配置檔案發生變化,自動載入配置資訊

quiescent=no

#當乙個節點在 checktimeout 設定的時間週期內沒有響應是它是 「 靜止的 」 (它的權重為0),當你設定了這個選項後,ldirectord 將 會從 ipvs 表中移除真實伺服器而不是 「 停止 」 它,從 ipvs 表移除節點將中斷現有的客戶端連線,並使 lvs 丟掉所有的連線跟蹤記錄和持續連線模板,如果 你不將這個選項設定為 no,當某個節點崩潰時,對某些客戶端計算機而言可能會顯示為集群關閉了,因為在這個節點崩潰前這些客戶端計算機被分配給它了,而連線跟蹤記錄和程式連線模板仍然保留在director上。

logfile="/var/log/ldirectord.log"

#設定ldirectord日誌輸出檔案路徑

#vip 位址和埠號

real=172.25

.20.2:80 gate #指定realserver位址和埠,同時設定lvs工作模式,gate表示dr模式,ipip表示tunl模式,masq表示nat模式。

real=172.25

.20.3:80 gate

fallback=127.0

.0.1:80 gate #當所有的real server節點不能工作時,web服務重定向的位址

service=http #指定服務型別,對http服務做負載均衡

scheduler=rr #指定排程演算法,這裡是rr(輪叫)演算法

#persistent=600

#netmask=255.255.255.255

protocol=tcp #指出該服務使用的協議:tcp、udp 或 fwm

checktype=negotiate #指定ldirectord的檢測型別,預設為negotiate

checkport=80

#健康檢查使用的埠是 80

request="index.html"

#ldirectord將根據指定的real server位址,結合該選項給出的請求路徑,傳送訪問請求,檢查real server上的服務是否正常執行,確保這裡給出的頁面位址是可訪問的,不然ldirectord會誤認為此節點已經失效,發生錯誤監控現象。

#receive="test page" #指定請求和應答字串

#virtualhost=www.x.y.z #虛擬伺服器的名稱

關掉ipvsadm程序,因為兩個服務間有影響

[root@server1 ~]# /etc/init.d/ipvsadm stop

ipvsadm:

clearing the current ipvs

table: [ ok ]

ipvsadm:

unloading

modules: [ ok ]

[root@server1 ~]# ipvsadm -l

ipvirtual

server version 1.2.1 (size=4096)

prot

localaddress

:port

scheduler

flags

-> remoteaddress

:port

forward

weight

activeconn

inactconn

##realserver2 

[root@server2 yum.repos

.d]# cat /var/www/html/index.html

www.westos

.com server2

##realserver2

[root@server3 html]# cat /var/www/html/index.html

www.westos

.com server3

物理機測試

1 realserver 無宕機,兩台realserver 輪詢

[root@niub keepalived  and ldirectord]# curl 172.25.79.100www.westos.com server3

[root@niub keepalived and ldirectord]# curl 172.25.79.100

www.westos

.com server2

[root@niub keepalived and ldirectord]# curl 172.25.79.100

www.westos

.com server3

[root@niub keepalived and ldirectord]# curl 172.25.79.100

www.westos

.com server2

當realserver 2 掛掉:

[root@niub keepalived  and ldirectord]# curl 172.25.79.100

www.westos

.com server3

[root@niub keepalived and ldirectord]# curl 172.25.79.100

www.westos

.com server3

當然,對於使用者來說是透明的,因為實際環境中,兩台rs是一楊的內容!!

快速排序演算法實現(遞迴實現 棧實現)

基本思想 選擇乙個基準元素,比如選擇最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,又稱為軸位置,此位置的元素確定後不再參與排序,然後再用同樣的方法遞迴地排序劃分的兩部分。分析 快速排序是不穩定的排序。快速排序的時間複...

介面實現與配置實現

在實現系統功能的時候,通常會首先定義好功能的介面,在系統功能不斷被實現的過程中,慢慢的發現有些介面的實現很類似,這個時候通常會開始做一次抽象,形 成乙個共同的部分,慢慢的系統形成了乙個抽象的層次,而為了通用,通常是通過定義介面,形成乙個抽象類,抽象類中暴露出一些抽象方法供外部擴充套件實 現,逐步的積...

js分頁實現,前端實現。

主要是借鑑了網上乙個例子,自己重新加了樣式,新增了跳轉,修改了一些小地方,用於和大家一起分享,前端分頁的技巧,的資料是我已經寫好了,其實大家也可以前端渲染 然後再分頁,都是可以的。其實分頁最關鍵是這兩句 var startrow currentpage 1 pagesize 1 currentpag...