Load balancing 是在高可用集群你非常重要的一部分,本來是非常復雜的一部分工作,由于有了張文嵩博士的軟件變得非常簡單和容易使用,張老師的網站是 http://www.linuxvirtualserver.org ,真希望能有更多這么牛的軟件開源,大家用這個軟件的時候別忘了從心里謝謝軟件的作者啊。
lvs軟件現在高版本的基本上已經集成進內核了,操作方法也非常簡單,非常像iptables樣子,上手非常容易,簡單介紹如下:
-A --add-service 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也
就是增加一臺新的虛擬服務器。
-E --edit-service 編輯內核虛擬服務器表中的一條虛擬服務器記錄。
-D --delete-service 刪除內核虛擬服務器表中的一條虛擬服務器記錄。
-C --clear 清除內核虛擬服務器表中的所有記錄。
-R --restore 恢復虛擬服務器規則
-S --save 保存虛擬服務器規則,輸出為-R 選項可讀的格式
-a --add-server 在內核虛擬服務器表的一條記錄里添加一條新的真實服務器
記錄。也就是在一個虛擬服務器中增加一臺新的真實服務器
-e --edit-server 編輯一條虛擬服務器記錄中的某條真實服務器記錄
-d --delete-server 刪除一條虛擬服務器記錄中的某條真實服務器記錄
-L|-l --list 顯示內核虛擬服務器表
-Z --zero 虛擬服務表計數器清零(清空當前的連接數量等)
--set tcp tcpfin udp 設置連接超時值
--start-daemon 啟動同步守護進程。他后面可以是master 或backup,用來說
明LVS Router 是master 或是backup。在這個功能上也可以采用keepalived 的
VRRP 功能。
--stop-daemon 停止同步守護進程
-h --help 顯示幫助信息
其他的選項:
-t --tcp-service service-address 說明虛擬服務器提供的是tcp 的服務
[vip:port] or [real-server-ip:port]
-u --udp-service service-address 說明虛擬服務器提供的是udp 的服務
[vip:port] or [real-server-ip:port]
-f --fwmark-service fwmark 說明是經過iptables 標記過的服務類型。
-s --scheduler scheduler 使用的調度算法,有這樣幾個選項
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
調度算法就有10中之多,你可以選擇相應的算法來滿足你的需求。
默認的調度算法是: wlc.
-p --persistent [timeout] 持久穩固的服務。這個選項的意思是來自同一個客
戶的多次請求,將被同一臺真實的服務器處理。timeout 的默認值為300 秒。
-M --netmask netmask persistent granularity mask
-r --real-server server-address 真實的服務器[Real-Server:port]
-g --gatewaying 指定LVS 的工作模式為直接路由模式(也是LVS 默認的模式)
-i --ipip 指定LVS 的工作模式為隧道模式
-m --masquerading 指定LVS 的工作模式為NAT 模式
-w --weight weight 真實服務器的權值
--mcast-interface interface 指定組播的同步接口
-c --connection 顯示LVS 目前的連接 如:ipvsadm -L -c
--timeout 顯示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
--daemon 顯示同步守護進程狀態
--stats 顯示統計信息
--rate 顯示速率信息
--sort 對虛擬服務器和真實服務器排序輸出
--numeric -n 輸出IP 地址和端口的數字形式
ipvsadm雖然已經滿足了load balancing但他不能自動檢測出real_server的好壞,如果一臺real壞掉了,ipvsadm仍然會給他分配連接,為了解決這個問題,我們使用heartbead自帶ldirectord來解決這個問題,ldirectord是用perl開發的需要安裝一些perl模塊。
ldirectord的配置文件是ldirectord.cf,默認放在/etc下,我們只要配置好這個文件啟動就可以了,而lvs只需要安裝,不需要任何配置。
ldirectord 配置文件如下:
用于mysql的ldirectord.cf(port nat)
|
# Global Directives #Sample configuration for a MySQL virtual service. |


