1. 程式人生 > >3-4-基於LVS實現4層負載均衡配置和nat模型實戰

3-4-基於LVS實現4層負載均衡配置和nat模型實戰

eight 有效 cookie yum nfs 數據同步 管理 調度 重啟網絡服務

centos內核支持ipvs,只需在用戶空間安裝ipvsadm即可,首先應該準備好拓撲環境,了解編寫規則的工具用法

yum install -y ipvsadm
rpm -ql ipvsadm---可以看到用到了unit file,也就是腳本(開機啟動不啟動),ipvsadm不是一項服務,規則會保存到內存中不會永久有效,為什麽會用到unitfile呢?因為需要在開機時使用restone重新載入規則

註意:對於集群類服務來說,不建議開機自動啟動,需要手動開啟,防止及其掛了。我們會有高可用集群服務器,會自動切換到另外一臺服務器上。

ipvsadm -h獲取它的簡要幫助說明文檔
ipvsadm命令的選項大寫是集群服務、小寫是real server

ipvsadm命令:
核心功能:
集群服務管理:增刪改
集群服務的RS管理:增刪改
查看:
管理集群服務:增刪改
增改:
ipvsadm -A|E -t|u|f service-address [-s scheduler][-p [timeout]]
刪:
ipvsadm -D -t|u|f service-address
service-address:
-t|u|f:
-t:TCP協議的端口,VIP:TCP_PORT
-u:UDP協議的端口,VIP:UDP_PORT
-f:firewall MARK,是一個數字;

管理集群上的RS:增刪改
    增改:
        ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m][-w weight]
    刪:
        ipvsadm -d -t|u|f service-address -r server-address
    server-address:
        rip[:port]---和前邊的service端口一致可以不寫,一般不寫(容易出錯)
    選項:
        lvs類型:---不能混合使用
            -g:gateway,dr類型
            -i:ipip,tun類型
            -m:masquerade,nat類型---masquerade地址偽裝
        -w weight:權重;
    清空定義的所有內容:
        ipvsadm -C
    查看:
        ipvsadm -L|l [options]
            --numberlc,-n:numerlc output of addresses and ports數字格式顯示地址和端口,不要反解
            --exact:expand numbers(display exact values)---精確顯示計數器的值
            計數器
            --connection,-c:output of current IPVS connections---顯示連接狀態
            --stats:output of statistics information---統計數據
            --rate:output of rate information---速率數據
    保存和重載:
        ipvsadm -S=ipvsadm-save---註意這裏沒有空格
        ipvsadm -R=ipvsadm-restore---註意這裏沒有空格

負載均衡集群設計時需註意的問題:
(1)是否需要會話保持;---web站點需要會話保持,session綁定,session cookie,session server
(2)是否需要共享存儲;
共享存儲:NAS(NFS和CFS兩種),SAN,DS(分布式存儲)
數據同步:
課外作業:rsync+ipotify實現數據同步
lvs-nat:
設計要點:
(1)RIP與DIP在同一IP網絡,RIP的網關要指向DIP;
(2)支持端口映射;
(3)Directory要打開核心轉發功能;
實踐作業(博客):負載均衡兩個php應用(wordpress,discuzx)---視頻中有講解怎麽做
測試:(1)是否需要會話保持(2)是否需要共享存儲

lvs-dr:
    dr模型中,各主機上均需要配置VIP,解決地址沖突的方式有三種:
        (1)在前端網關做靜態綁定;
        (2)在各RS使用arptables
        (3)在各RS修改內核參數,來限制arp響應和通告的級別;

lvs默認類型是dr,因為dr承載能力最大,因為響應報文不經有directory

lvs模型中必須同步時間,直接輸入命令ntpdate 172.16.0.1
視頻後邊就是配置dr類型的負載均衡lvs了,一個direcotry,兩個rs
兩個rs先安裝幾個程序
如果rs中沒有倉庫,可以從其他主機復制,scp /etc/yum.repos.d/epel.repo 172.16.0.6:/etc/yum.repos.d/
兩個rs的網卡類型要改成vmnet1,就是和vs在一個交換機上的意思

rs1:
ifconfig---先查看網卡的ip地址
hostnamectl set-hostname rs1.ilinux.io---修改主機名

先裝幾個程序
yum install -y nginx telnet-server
然後修改網卡類型為vmnet1,修改ip地址
nmtui---命令行窗口樣式的修改ip地址
systemctl restart network---重啟網絡服務
ifconfig---查看ip地址修改結果
ping 192.168.10.254---測試通不通
編輯默認網頁:
vim /user/share/nginx/html/test1.html
systemctl start nginx
ss -tnl---查看nginx服務端口

rs2:
ifconfig---先查看網卡的ip地址
hostnamectl set-hostname rs2.ilinux.io---修改主機名

先裝幾個程序
yum install -y nginx telnet-server
然後修改網卡類型為vmnet1,修改ip地址
nmtui---命令行窗口樣式的修改ip地址
systemctl restart network---重啟網絡服務
ifconfig---查看ip地址修改結果
ping 192.168.10.254---測試通不通
編輯默認網頁:
vim /user/share/nginx/html/test1.html
systemctl start nginx
ss -tnl---查看nginx服務端口

directory:
兩個rs配置好nginx後,就可以臨時訪問一下,看能不能訪問到網頁。
curl http://192.168.10.11/test1.html
curl http://192.168.10.12/test1.html

yum install -y ipvsadm
ipvsadm -A -t 172.16.0.6:80 -s rr---添加tcp協議vip端口為80的是集群服務,調度方式是輪詢
ipvsadm -Ln---查看定義的規則
ipvsadm -a -t 172.16.0.6:80 -r 192.168.10.11 -m---添加rs,類型是偽裝地址(nat)
ipvsadm -a -t 172.16.0.6:80 -r 192.168.10.12 -m---添加rs,類型是偽裝地址(nat)
ipvsadm -Ln---查看定義的規則
sysctl -w net.ipv4.ip_forward=1---打開核心轉發
curl http://172.16.0.6/test1.html---就可以看到輪詢效果了
for i in {1..10};do curl http://172.16.0.6/test1.html;done

上述是輪詢的配置,下邊是加權輪詢
先修改權重
ipvsadm -e -t 172。16.0.6:80 -r 192.168.10.11 -m -w 2---修改權重為2
ipvsadm -e -t 172。16.0.6:80 -r 192.168.10.11 -m -w 3---修改權重為3
ipvsadm -Ln---查看規則列表
ipvsadm -Z---清空以前的連接數
ipvsadm -Ln --rate---查看速率數據
ipvsadm -E -t 172.16.0.6:80 -s wrr修改調度算法為加權輪詢
讓一個服務器不再接收請求有兩種方法:1:刪除規則2:權重標記為0
ipvsadm -d -t 172.16.0.6:80 -r 192.168.10.12---刪除規則
如果兩個rs都down了,就沒有服務器響應了,可以在directory上裝nginx提供web服務,但是平時不提供服務,因為有ipvs直接截獲
vim /user/share/nginx/html/index.html
systemctl start nginx
此時訪問還是訪問不到的(沒有rs),但是訪問dip確是可以的,我們可以加權
ipvsadm -a -t 172.16.0.6:80 -r 127.0.0.1 -g---必須使用-g類型

下邊是sh類型,把來自於同一個ip的請求發往同一個rs
ipvsadm -e -t 172.16.0.6:80 -s sh

如果rs上有兩種不同的服務,需要各自定義規則
兩個rs部署telnet服務,同時還有web服務
systemctl start telnet.socket
useradd centos ; echo ‘mageedu‘ | passwd --stdin centos---添加一個centos用戶,密碼是mageedu

ipvsadm -A -t 172.16.0.6:23 -s wlc---默認是wlc
ipvsadm -a -t 172.16.0.6:23 -r 192.168.10.11 -m -w 1
ipvsadm -a -t 172.16.0.6:23 -r 192.168.10.12 -m -w 2

可以把這些規則保存到一個文件中
ipvsadm -S -n > /etc/sysconfig/ipvsadm

3-4-基於LVS實現4層負載均衡配置和nat模型實戰