集群与存储 LVS的集群
集群
什么是集群?
- 一組通過網(wǎng)絡(luò)互聯(lián)的計算組,并以單一系統(tǒng)的模式加以管理
- 講很多服務(wù)器集中起來一起,提供同一種服務(wù),在客戶端看起來就像是只有一個服務(wù)器
- 可以自愛付出較低成本的情況下獲得在性能,可靠性,靈活性方面的相對較高的收益
- 任務(wù)調(diào)度時集群系統(tǒng)中的核心技術(shù)
集群的目的
- 提高性能
如計算密集型應(yīng)用,如:天氣預(yù)報,核試驗?zāi)M
- 降低成本
相對百萬美元的超級計算機,價格便宜
- 提高可擴展性
只要增加集群節(jié)點即可
- 增強可靠性
多個節(jié)點完成相同功能,避免單點失敗
集群的分類
- 高性能計算機集群HPC
通過以及群開發(fā)的并行應(yīng)用程序,解決復(fù)雜的科學(xué)問題
- 負載均衡(LB)集群
客戶端負載在計算機集群中盡可能平均分攤
- 高可用(HA)集群
避免單點故障,當一個系統(tǒng)發(fā)生故障時,可以快速遷移
LVS介紹
- Linux虛擬服務(wù)器(Linux Virtual Server)是章文嵩在國防科技大學(xué)就讀博士期間創(chuàng)建的
- LVS可以實現(xiàn)高可用的,可伸縮的WEB,Mail,Cache和Media等網(wǎng)絡(luò)服務(wù)
- 最終目標是利用Linux操作系統(tǒng)和LVS集群軟件實現(xiàn)一個高可用,高性能,低成本的服務(wù)器應(yīng)用集群
- LVS,是一個虛擬的四層交換器集群系統(tǒng),根據(jù)目標地址和目標端口實現(xiàn)用戶請求轉(zhuǎn)發(fā),本身不產(chǎn)生流量,只做用戶請求轉(zhuǎn)發(fā)
- LVS是四層(傳輸層tcp/vdp),七層(應(yīng)用層)的負載均衡工具,用的最多的是就是四層負載均衡功能的ipvs,七層的內(nèi)容分發(fā)負載ktcpvs(kenrnel tcp virtual server),基于內(nèi)容的調(diào)度,因為應(yīng)用層交換處理復(fù)雜,但伸縮性有限.
- LVS是集成在Linux內(nèi)核里
LVS集群的組成
- 前端:負載均衡層
由一臺或多臺負載均衡層調(diào)度器構(gòu)成
- 中間:服務(wù)器群組成
由一組實際運行應(yīng)用服務(wù)的服務(wù)器組成
- 底端:數(shù)據(jù)共享存儲層
提供共享存儲空間的存儲區(qū)域
LVS與Nginx的區(qū)別
LVS的性能(效率)大于>Nginx
Nginx代理服務(wù)器:
數(shù)據(jù)封裝:
- 客戶端訪問代理服務(wù)器的時候數(shù)據(jù)包是四層封裝,代理服務(wù)器進行解壓再查看訪問數(shù)據(jù)
- 代理服務(wù)器充當客戶端角色進行數(shù)據(jù)封裝轉(zhuǎn)發(fā)給后臺服務(wù)器
- 后臺服務(wù)進行解壓數(shù)據(jù)包返回數(shù)據(jù)的同時進行數(shù)據(jù)封裝交給代理服務(wù)器
- 再由代理服務(wù)器回傳給客戶端
IP地址角度:
- 客戶端4.10===> Nginx代理4.5/2.5 ===>Web服務(wù)器2.100
- Web服務(wù)器2.100==>Nginx代理2.5/4.5===>客戶端4.10
LVS調(diào)度器:
- LVS可以實現(xiàn)動態(tài)路由功能
IP地址角度:
- 客戶端4.10===>LVS調(diào)度器4.5(NAT地址轉(zhuǎn)換4.10/2.100)===>Web服務(wù)器2.100
- Web服務(wù)器2.100===>LVS調(diào)度器(NAT地址轉(zhuǎn)換4.5/4.10===>客戶端4.10
- 調(diào)度器不會處理客戶端的數(shù)據(jù)包請求,通過NAT地址轉(zhuǎn)換起到一個轉(zhuǎn)發(fā)數(shù)據(jù)包給后端服務(wù)器的功能,(相當于客戶端直接訪問后端服務(wù)器)
- 由后端服務(wù)器處理完數(shù)據(jù)包通過LVS調(diào)度器回傳給客戶端
LVS與路由器的區(qū)別
- lvs除了能實現(xiàn)路由的功能,還能實現(xiàn)負載均衡,是一個動態(tài)的路由器
- 路由器NAT地址轉(zhuǎn)換只能實現(xiàn)把公網(wǎng)轉(zhuǎn)換成私網(wǎng),在把私網(wǎng)轉(zhuǎn)換成公網(wǎng),導(dǎo)致客戶端訪問的都是同一臺服務(wù)器.
LVS的缺點
- 功能少
- 不支持正則
- 不能做動態(tài)網(wǎng)站
- 不能做動靜分離
- 不具備健康檢查功能
LVS術(shù)語
- Director ?Server:調(diào)度服務(wù)器
將負載分發(fā)到Real ?Server的服務(wù)器
- Real ? ? ? Server:真實服務(wù)器
真正提供應(yīng)用的服務(wù)器
- VIP ? :虛擬IP地址?
公布給用戶訪問的虛擬IP地址
- RIP:真實IP地址
集群節(jié)點上使用的IP地址
- DIP:調(diào)度器連接節(jié)點服務(wù)器的IP地址
?
- CIP:客戶端的IP地址
LVS工作模式
? ? ? ? ? ?
?VS/NAT
- 通過網(wǎng)絡(luò)地址轉(zhuǎn)換實現(xiàn)的虛擬服務(wù)器
- 大并發(fā)訪問時,調(diào)度器的性能成為瓶頸
- 處理客戶端數(shù)據(jù)請求流量不大,返回數(shù)據(jù)的流量大
- 導(dǎo)致調(diào)度器處理數(shù)據(jù)流量的壓力更大
?
NAT模式工作流程
NAT即網(wǎng)絡(luò)地址轉(zhuǎn)換,其作用是將源(客戶端)的IP地址轉(zhuǎn)發(fā)給后端服務(wù)器
后端服務(wù)器處理完數(shù)據(jù)后通過NAT地址回傳給客戶端
VS/TUN
- 通過隧道方式實現(xiàn)虛擬服務(wù)器
TUN模式工作流程
這個模式是基于調(diào)度器與后端服務(wù)器是跨地區(qū)的情況
客戶端訪問LVS調(diào)度器,LVS通過vpn技術(shù)把用戶的請求轉(zhuǎn)發(fā)到后端服務(wù)器
再由服務(wù)器把處理數(shù)據(jù)的結(jié)果通過vpn回傳給客戶端
這樣做的最大缺點就是: 跨地區(qū)會導(dǎo)致網(wǎng)絡(luò)延遲很大訪問效率速度更低
VS/DR
- 直接使用路由技術(shù)實現(xiàn)虛擬服務(wù)器
- 節(jié)點服務(wù)器需要配置VIP,注意MAC地址廣播
- 可以滿足更大規(guī)模的集群
DR模式工作流程
由LVS調(diào)度轉(zhuǎn)發(fā)客戶端數(shù)據(jù)請求給后端服務(wù)器,由后端服務(wù)器處理
后端服務(wù)器處理完成后偽裝成LVS調(diào)度器回傳給客戶端
LVS的負載均衡調(diào)度算法
- LVS目前實現(xiàn)了10中調(diào)度算法
- 常用的調(diào)度算法有四種
輪詢:將客戶端的請求平均分發(fā)到Real ?Server,
加權(quán)輪詢:根據(jù)Real Server權(quán)重值進行輪詢
最少連接:選擇連接最少數(shù)的服務(wù)器
加權(quán)最少連接:根據(jù)Real Server權(quán)重值,選擇連接數(shù)最少的服務(wù)器
最小延遲:找網(wǎng)速更快的服務(wù)器
網(wǎng)卡的延遲與網(wǎng)卡的帶寬,數(shù)據(jù)的流量有關(guān)
最少隊列調(diào)度:當已經(jīng)達到最大的并發(fā)量時,客戶端訪問則自動進行排隊,哪個服務(wù)器的排隊最少則自動將客戶端放到該隊列
源地址散列(Source Hashing):根據(jù)請求的目標地址IP,作為散列鍵(Hash ?Key)從靜態(tài)分配的散列表找出對應(yīng)的服務(wù)器
其他調(diào)度算法:
基于局部性的最少連接
帶復(fù)制的基于局部性最少連接
目標地址散列(Destination ?Hashing)
最短的期望的延遲
最少隊列調(diào)度
LVS-NAT集群
LVS的IP負載均衡技術(shù)是通過IPVS模塊實現(xiàn)的
IPVS模塊已成為Linux的組成部分
[root@proxy ~]# grep -i 'ipvs' /boot/config-3.10.0-862.el7.x86_64 CONFIG_NETFILTER_XT_MATCH_IPVS=m # IPVS transport protocol load balancing support # IPVS scheduler # IPVS SH scheduler # IPVS application helperipvsadm命令用法
準備一臺Linux服務(wù)器,安裝ipvsadm軟件包,練習(xí)使用ipvsadm命令,實現(xiàn)如下功能:
- 使用命令添加基于TCP一些的集群服務(wù)
- 在集群中添加若干臺后端真實服務(wù)器
- 實現(xiàn)同一客戶端訪問,調(diào)度器分配固定服務(wù)器
- 會使用ipvsadm實現(xiàn)規(guī)則的增、刪、改
- 保存ipvsadm規(guī)則
方案安裝ipvsadm軟件包,關(guān)于ipvsadm的用法可以參考man ipvsadm資料。
常用ipvsadm命令語法格式如表-1及表-2所示。
使用命令增(add)、刪(delete)、改(edit)、清除所有(clear)LVS集群規(guī)則
1)創(chuàng)建LVS虛擬集群服務(wù)器(算法為輪詢:rr)
[root@proxy ~]# yum -y install ipvsadm #下載ipvsadm [root@proxy ~]# ipvsadm -A -t 192.168.4.5:80 -s rr #新建虛擬集群 新建一個虛擬服務(wù)器,協(xié)議是tcp服務(wù),算法為輪詢算法 [root@proxy ~]# ipvsadm -Ln #查看,此時沒有真實的服務(wù)器 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.4.5:80 rr2)為集群添加若干real server
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100:80 #添加真實服務(wù)器,添加到192.168.4.5的虛擬機群,添加realserver [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200:80 [root@proxy ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.4.5:80 rr-> 192.168.2.100:80 Route 1 0 0 -> 192.168.2.200:80 Route 1 0 0 [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.201:80 -w 2 #再添加一臺權(quán)重為2的服務(wù)器 [root@proxy ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.4.5:80 rr-> 192.168.2.100:80 Route 1 0 0 -> 192.168.2.200:80 Route 1 0 0 -> 192.168.2.201:80 Route 2 0 0 [root@proxy ~]# ipvsadm -e -t 192.168.4.5:80 -r 192.168.2.200:80 -w 3#修改realserver192.168.2.200的權(quán)重為3 [root@proxy ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.4.5:80 rr-> 192.168.2.100:80 Route 1 0 0 -> 192.168.2.200:80 Route 3 0 0 -> 192.168.2.201:80 Route 2 0 0 當算法為輪詢時,不論權(quán)重多少都依然自動執(zhí)行輪詢算法3)修改集群服務(wù)器設(shè)置(修改調(diào)度器算法,將輪詢修改為加權(quán)輪詢)
[root@proxy ~]# ipvsadm -E -t 192.168.4.5:80 -s wrr [root@proxy ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.4.5:80 wrr-> 192.168.2.100:80 Route 1 0 0 -> 192.168.2.200:80 Route 3 0 0 -> 192.168.2.201:80 Route 2 0 04)修改read server(使用-g,-m,-i選項,默認即為DR模式,-m為NAT模式,-i為Tunnel模式)
[root@proxy ~]# ipvsadm -e -t 192.168.4.5:80 -r 192.168.2.202 -g [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.202:80 -m [root@proxy ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.4.5:80 wrr-> 192.168.2.100:80 Route 1 0 0 -> 192.168.2.200:80 Route 3 0 0 -> 192.168.2.201:80 Route 2 0 0 -> 192.168.2.202:80 Masq 1 0 0 [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.203:80 -i [root@proxy ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.4.5:80 wrr-> 192.168.2.100:80 Route 1 0 0 -> 192.168.2.200:80 Route 3 0 0 -> 192.168.2.201:80 Route 2 0 0 -> 192.168.2.202:80 Masq 1 0 0 -> 192.168.2.203:80 Tunnel 1 0 0下面僅實驗NAT模式與DR模式,TUN模式不常用
LVS-NAT集群
- LVS的IP負載均衡技術(shù)是用過IPVS模塊實現(xiàn)的
- IPVS模塊已成為Linux組成部分
LVS-NAT集群拓撲圖
操作流程
- Real Server:
- 配置WEB服務(wù)器
- Director server:
- 在上安裝并啟用ipvsadm
- 創(chuàng)建虛擬服務(wù)器
- 向虛擬服務(wù)器中加入節(jié)點
- Client:
- 連接虛擬服務(wù)器測試
部署LVS-NAT集群
?問題
使用LVS實現(xiàn)NAT模式的集群調(diào)度服務(wù)器,為用戶提供Web服務(wù):
- 集群對外公網(wǎng)IP地址為192.168.4.5
- 調(diào)度器內(nèi)網(wǎng)IP地址為192.168.2.5
- 真實Web服務(wù)器地址分別為192.168.2.100、192.168.2.200
- 使用加權(quán)輪詢調(diào)度算法,真實服務(wù)器權(quán)重分別為1和2
方案
實驗拓撲結(jié)構(gòu)主機配置細節(jié)如表所示。
使用4臺虛擬機,1臺作為Director調(diào)度器、2臺作為Real Server、1臺客戶端,拓撲結(jié)構(gòu)如圖所示,注意:web1和web2必須配置網(wǎng)關(guān)地址。
步驟一:配置基礎(chǔ)環(huán)境
1 ) 為web1和web2配置服務(wù)器網(wǎng)關(guān)
[root@web1 ~]# nmcli connection modify eth1 ipv4.method manual ipv4.gateway 192.168.2.5 [root@web1 ~]# nmcli connection up eth1 連接已成功激活(D-Bus 活動路徑:/org/freedesktop/NetworkManager/ActiveConnection/5) #################################################################### 也可以更改/etc/sysconfig/network配置文件 [root@web1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.2.5 0.0.0.0 UG 104 0 0 eth1 192.168.2.0 0.0.0.0 255.255.255.0 U 104 0 0 eth1 [root@web2 ~]# nmcli connection modify eth1 ipv4.method manual ipv4.gateway 192.168.2.5 [root@web2 ~]# nmcli connection up eth1 連接已成功激活(D-Bus 活動路徑:/org/freedesktop/NetworkManager/ActiveConnection/5) [root@web2 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.2.5 0.0.0.0 UG 104 0 0 eth1 192.168.2.0 0.0.0.0 255.255.255.0 U 104 0 0 eth1?2)設(shè)置Web服務(wù)器(下載可忽略)
[root@web1 ~]# yum -y install httpd [root@web1 ~]# vim /etc/httpd/conf/httpd.conf 95 ServerName www.example.com:80 [root@web1 ~]# echo 123123 > /var/www/html/index.html [root@web1 ~]# systemctl restart httpd [root@web1 ~]# curl http://192.168.2.100 123123 [root@web2 ~]# vim /etc/httpd/conf/httpd.conf 95 ServerName www.example.com:80 [root@web2 ~]# echo 456456 > /var/www/html/index.html [root@web2 ~]# systemctl restart httpd [root@web2 ~]# curl 192.168.2.200 456456常見問題:如果httpd服務(wù)啟動啟動的比較慢?
解決方法:可以修改/etc/httpd/conf/httpd.conf文件,
將ServerName www.example.com:80這行的#注釋符刪除即可。
3 ) 客戶端訪問測試
[root@proxy ~]# curl 192.168.2.100 123123 [root@proxy ~]# curl 192.168.2.200 456456步驟二:部署LVS-NAT模式調(diào)度器
1 ) 確認調(diào)度器的路由轉(zhuǎn)發(fā)功能(如果已經(jīng)開啟,可以忽略)
[root@web1 ~]# cat /proc/sys/net/ipv4/ip_forward #確認路由是否開啟,0是沒開啟,1是已經(jīng)開啟 1 [root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward #臨時修改 [root@proxy ~]# cat /proc/sys/net/ipv4/ip_forward 1 [root@proxy ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf #修改配置文件,設(shè)置永久規(guī)則2)創(chuàng)建集群服務(wù)器
[root@proxy ~]# yum -y install ipvsadm [root@proxy ~]# ipvsadm -C [root@proxy ~]# ipvsadm -A -t 192.168.4.5:80 -s wrr3)添加真實服務(wù)器
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100:80 -m [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200:80 -m4)查看規(guī)則列表,并保存規(guī)則?
[root@proxy ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.4.5:80 wrr-> 192.168.2.100:80 Masq 1 0 0 -> 192.168.2.200:80 Masq 1 0 0 [root@proxy ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm步驟三:客戶端測試
客戶端使用curl命令反復(fù)連接http://192.168.4.5,查看訪問的頁面是否會輪詢到不同的后端真實服務(wù)器。
lvs集成在內(nèi)核,只要Linux啟動,lvs就自動集成[root@client ~]# curl 192.168.4.5 456456 [root@client ~]# curl 192.168.4.5 123123 [root@client ~]# curl 192.168.4.5 456456 [root@client ~]# curl 192.168.4.5 123123LVS-DR集群
LVS-DR集群拓撲圖
?
操作流程
- Real Server :
- 配置WEB服務(wù)器
- 配置輔助IP地址,調(diào)整內(nèi)核參數(shù)
- Director Server :
- 在上安裝并啟用ipvsadm
- 配置輔助IP地址
- 創(chuàng)建虛擬服務(wù)器,向虛擬服務(wù)器中加入節(jié)點
- Client :
- 連接虛擬服務(wù)器測試
ARP廣播問題
- 當客戶端發(fā)起訪問VIP時,對應(yīng)的域名的請求時,根據(jù)網(wǎng)絡(luò)通訊原理會產(chǎn)生ARR廣播
- 因為負載均衡器和真實的服務(wù)器在同一網(wǎng)絡(luò)并且VIP設(shè)置在集群中的每個節(jié)點上
- 此時集群內(nèi)的真實服務(wù)器會嘗試回答來自客戶端的ARR廣播,這就會產(chǎn)生問題,大家都說我是"VIP"
ARP防火墻
- 使用ARP防火墻也可以禁止對VIP的ARP請求
內(nèi)核參數(shù)說明
- arp_ignore(定義回復(fù)ARR廣播方式)
- 0(默認值)
- 回應(yīng)所有的本地地址ARR廣播,本地地址可以配置在任意網(wǎng)絡(luò)接口
- 1
- 只回應(yīng)配置在入站網(wǎng)卡接口上的任意IP地址的ARR廣播
- arp_announce
- 0(默認)
- 使用配置在任意網(wǎng)卡接口上的本地IP地址
- 2
- 對查詢目標使用最適當?shù)谋镜氐刂?在此模式下將忽略這個IP數(shù)據(jù)包的源地址并嘗試選擇與能與該地址通信的本地地址.首要是選擇所有的網(wǎng)絡(luò)接口的子網(wǎng)中外出訪問子網(wǎng)中包含該目標IP地址的本地地址.如果沒有合適的地址被發(fā)現(xiàn),將選擇當前的發(fā)送網(wǎng)絡(luò)接口或其他有可能接收到該ARR回應(yīng)的網(wǎng)絡(luò)接口來進行發(fā)送
部署LVS-DR集群
問題
使用LVS實現(xiàn)DR模式的集群調(diào)度服務(wù)器,為用戶提供Web服務(wù):
- 客戶端IP地址為192.168.4.10
- LVS調(diào)度器VIP地址為192.168.4.15
- LVS調(diào)度器DIP地址設(shè)置為192.168.4.5
- 真實Web服務(wù)器地址分別為192.168.4.100、192.168.4.200
- 使用加權(quán)輪詢調(diào)度算法,web1的權(quán)重為1,web2的權(quán)重為2
說明:
CIP是客戶端的IP地址;
VIP是對客戶端提供服務(wù)的IP地址;
RIP是后端服務(wù)器的真實IP地址;
DIP是調(diào)度器與后端服務(wù)器通信的IP地址(VIP必須配置在虛擬接口)。
?
方案
使用4臺虛擬機,1臺作為客戶端、1臺作為Director調(diào)度器、2臺作為Real Server,拓撲結(jié)構(gòu)如圖所示。實驗拓撲結(jié)構(gòu)主機配置細節(jié)如表所示。
步驟一:配置實驗網(wǎng)絡(luò)環(huán)境
1)設(shè)置Proxy服務(wù)器的VIP和DIP
注意:為了防止沖突,VIP必須要配置在網(wǎng)卡的虛擬接口!!!
[root@proxy ~]# cd /etc/sysconfig/network-scripts/ [root@proxy network-scripts]# ls ifcfg-eth0 ifdown-eth ifdown-sit ifup-eth ifup-ppp init.ipv6-global ifcfg-eth1 ifdown-ippp ifdown-Team ifup-ippp ifup-routes network-functions ifcfg-eth2 ifdown-ipv6 ifdown-TeamPort ifup-ipv6 ifup-sit network-functions-ipv6 ifcfg-eth3 ifdown-isdn ifdown-tunnel ifup-isdn ifup-Team ifcfg-lo ifdown-post ifup ifup-plip ifup-TeamPort ifdown ifdown-ppp ifup-aliases ifup-plusb ifup-tunnel ifdown-bnep ifdown-routes ifup-bnep ifup-post ifup-wireless [root@proxy network-scripts]# cp ifcfg-eth0{,:0} [root@proxy network-scripts]# vim ifcfg-eth0:0 1 TYPE=Ethernet #網(wǎng)卡類型為:以太網(wǎng)卡 4 BOOTPROTO=none #none手動配置IP,或者dhcp自動配置IP 6 NAME=eth0:0 #網(wǎng)卡名稱 7 DEVICE=eth0:0 #設(shè)備名稱 8 ONBOOT=yes #開機時是否自動激活該網(wǎng)卡 9 IPADDR=192.168.4.15 #IP地址 10 PREFIX=24 #子網(wǎng)掩碼 [root@proxy network-scripts]# systemctl restart network #重啟 [root@proxy network-scripts]# ifconfig #此時多了一個eth0:0的網(wǎng)卡,其他主機也可以ping通該IP eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.4.5 netmask 255.255.255.0 broadcast 192.168.4.255ether 52:54:00:2f:40:71 txqueuelen 1000 (Ethernet)RX packets 11438 bytes 698521 (682.1 KiB)RX errors 0 dropped 8612 overruns 0 frame 0TX packets 1826 bytes 222235 (217.0 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.4.15 netmask 255.255.255.0 broadcast 192.168.4.255ether 52:54:00:2f:40:71 txqueuelen 1000 (Ethernet).......[root@proxy ~]# ip a s eth0 #查看ip的另一種方法 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 52:54:00:2f:40:71 brd ff:ff:ff:ff:ff:ffinet 192.168.4.5/24 brd 192.168.4.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet 192.168.4.15/24 brd 192.168.4.255 scope global secondary noprefixroute eth0:0valid_lft forever preferred_lft forever?
常見問題:RHEL7和Centos7系統(tǒng)中有兩個管理網(wǎng)絡(luò)的服務(wù),有可能沖突?
解決方法:關(guān)閉NetworkManager服務(wù)后重啟network即可。
[root@proxy network-scripts]# systemctl ?stop NetworkManager?
2)設(shè)置Web1服務(wù)器網(wǎng)絡(luò)參數(shù)
[root@web1 ~]# nmcli connection modify eth0 ipv4.method manual \ ipv4.addresses 192.168.4.100/24 connection.autoconnect yes [root@web1 ~]# nmcli connection up eth0接下來給web1配置VIP地址。
注意:這里的子網(wǎng)掩碼必須是32(也就是全255),網(wǎng)絡(luò)地址與IP地址一樣,廣播地址與IP地址也一樣。
防止地址沖突的問題:
這里因為web1也配置與調(diào)度器一樣的VIP地址,默認肯定會出現(xiàn)地址沖突;
sysctl.conf文件寫入這下面四行的主要目的就是訪問192.168.4.15的數(shù)據(jù)包,只有調(diào)度器會響應(yīng),其他主機都不做任何響應(yīng),這樣防止地址沖突的問題。
重啟網(wǎng)絡(luò)服務(wù),設(shè)置防火墻與SELinux
[root@web1 network-scripts]# systemctl restart network [root@web1 network-scripts]# ifconfig ...... lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 192.168.4.15 netmask 255.255.255.255loop txqueuelen 1000 (Local Loopback)3)設(shè)置Web2服務(wù)器網(wǎng)絡(luò)參數(shù)
[root@web2 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.200/24 connection.autoconnect yes [root@web2 ~]# nmcli connection up eth0 連接已成功激活(D-Bus 活動路徑:/org/freedesktop/NetworkManager/ActiveConnection/6) [root@web2 ~]# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.4.200 netmask 255.255.255.0 broadcast 192.168.4.255ether 52:54:00:3e:8d:bf txqueuelen 1000 (Ethernet)RX packets 10245 bytes 533756 (521.2 KiB)RX errors 0 dropped 10193 overruns 0 frame 0TX packets 1 bytes 42 (42.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0接下來給web2配置VIP地址
注意:這里的子網(wǎng)掩碼必須是32(也就是全255),網(wǎng)絡(luò)地址與IP地址一樣,廣播地址與IP地址也一樣。
防止地址沖突的問題:
這里因為web1也配置與調(diào)度器一樣的VIP地址,默認肯定會出現(xiàn)地址沖突;
sysctl.conf文件寫入這下面四行的主要目的就是訪問192.168.4.15的數(shù)據(jù)包,只有調(diào)度器會響應(yīng),其他主機都不做任何響應(yīng),這樣防止地址沖突的問題。
重啟網(wǎng)絡(luò)服務(wù),設(shè)置防火墻與SELinux
[root@web2 network-scripts]# systemctl restart network [root@web2 network-scripts]# ifconfig .... lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 192.168.4.15 netmask 255.255.255.255loop txqueuelen 1000 (Local Loopback)步驟二:proxy調(diào)度器安裝軟件并部署LVS-DR模式調(diào)度器
1)安裝軟件(如果已經(jīng)安裝,此步驟可以忽略)
[root@proxy ~]# yum -y install ipvsadm2)清理之前實驗的規(guī)則,創(chuàng)建新的集群服務(wù)器規(guī)則
[root@proxy ~]# ipvsadm -C #清空所有規(guī)則 [root@proxy ~]# ipvsadm -A -t 192.168.4.15:80 -s wrr3)添加真實服務(wù)器(-g參數(shù)設(shè)置LVS工作模式為DR模式,-w設(shè)置權(quán)重)
[root@proxy network-scripts]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100:80 [root@proxy network-scripts]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200:804)查看規(guī)則列表,并保存規(guī)則
[root@proxy network-scripts]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.4.15:80 wrr-> 192.168.4.100:80 Route 1 0 0 -> 192.168.4.200:80 Route 1 0 0步驟三:客戶端測試
客戶端使用curl命令反復(fù)連接http://192.168.4.15,查看訪問的頁面是否會輪詢到不同的后端真實服務(wù)器。
擴展知識:默認LVS不帶健康檢查功能,需要自己手動編寫動態(tài)檢測腳本,實現(xiàn)該功能:(參考腳本如下,僅供參考)
?
總結(jié)
以上是生活随笔為你收集整理的集群与存储 LVS的集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 版本控制 Git RPM打包
- 下一篇: keepalived热备 keepa