集群与存储 LVS的集群
集群
什么是集群?
- 一組通過網絡互聯的計算組,并以單一系統的模式加以管理
- 講很多服務器集中起來一起,提供同一種服務,在客戶端看起來就像是只有一個服務器
- 可以自愛付出較低成本的情況下獲得在性能,可靠性,靈活性方面的相對較高的收益
- 任務調度時集群系統中的核心技術
集群的目的
- 提高性能
如計算密集型應用,如:天氣預報,核試驗模擬
- 降低成本
相對百萬美元的超級計算機,價格便宜
- 提高可擴展性
只要增加集群節點即可
- 增強可靠性
多個節點完成相同功能,避免單點失敗
集群的分類
- 高性能計算機集群HPC
通過以及群開發的并行應用程序,解決復雜的科學問題
- 負載均衡(LB)集群
客戶端負載在計算機集群中盡可能平均分攤
- 高可用(HA)集群
避免單點故障,當一個系統發生故障時,可以快速遷移
LVS介紹
- Linux虛擬服務器(Linux Virtual Server)是章文嵩在國防科技大學就讀博士期間創建的
- LVS可以實現高可用的,可伸縮的WEB,Mail,Cache和Media等網絡服務
- 最終目標是利用Linux操作系統和LVS集群軟件實現一個高可用,高性能,低成本的服務器應用集群
- LVS,是一個虛擬的四層交換器集群系統,根據目標地址和目標端口實現用戶請求轉發,本身不產生流量,只做用戶請求轉發
- LVS是四層(傳輸層tcp/vdp),七層(應用層)的負載均衡工具,用的最多的是就是四層負載均衡功能的ipvs,七層的內容分發負載ktcpvs(kenrnel tcp virtual server),基于內容的調度,因為應用層交換處理復雜,但伸縮性有限.
- LVS是集成在Linux內核里
LVS集群的組成
- 前端:負載均衡層
由一臺或多臺負載均衡層調度器構成
- 中間:服務器群組成
由一組實際運行應用服務的服務器組成
- 底端:數據共享存儲層
提供共享存儲空間的存儲區域
LVS與Nginx的區別
LVS的性能(效率)大于>Nginx
Nginx代理服務器:
數據封裝:
- 客戶端訪問代理服務器的時候數據包是四層封裝,代理服務器進行解壓再查看訪問數據
- 代理服務器充當客戶端角色進行數據封裝轉發給后臺服務器
- 后臺服務進行解壓數據包返回數據的同時進行數據封裝交給代理服務器
- 再由代理服務器回傳給客戶端
IP地址角度:
- 客戶端4.10===> Nginx代理4.5/2.5 ===>Web服務器2.100
- Web服務器2.100==>Nginx代理2.5/4.5===>客戶端4.10
LVS調度器:
- LVS可以實現動態路由功能
IP地址角度:
- 客戶端4.10===>LVS調度器4.5(NAT地址轉換4.10/2.100)===>Web服務器2.100
- Web服務器2.100===>LVS調度器(NAT地址轉換4.5/4.10===>客戶端4.10
- 調度器不會處理客戶端的數據包請求,通過NAT地址轉換起到一個轉發數據包給后端服務器的功能,(相當于客戶端直接訪問后端服務器)
- 由后端服務器處理完數據包通過LVS調度器回傳給客戶端
LVS與路由器的區別
- lvs除了能實現路由的功能,還能實現負載均衡,是一個動態的路由器
- 路由器NAT地址轉換只能實現把公網轉換成私網,在把私網轉換成公網,導致客戶端訪問的都是同一臺服務器.
LVS的缺點
- 功能少
- 不支持正則
- 不能做動態網站
- 不能做動靜分離
- 不具備健康檢查功能
LVS術語
- Director ?Server:調度服務器
將負載分發到Real ?Server的服務器
- Real ? ? ? Server:真實服務器
真正提供應用的服務器
- VIP ? :虛擬IP地址?
公布給用戶訪問的虛擬IP地址
- RIP:真實IP地址
集群節點上使用的IP地址
- DIP:調度器連接節點服務器的IP地址
?
- CIP:客戶端的IP地址
LVS工作模式
? ? ? ? ? ?
?VS/NAT
- 通過網絡地址轉換實現的虛擬服務器
- 大并發訪問時,調度器的性能成為瓶頸
- 處理客戶端數據請求流量不大,返回數據的流量大
- 導致調度器處理數據流量的壓力更大
?
NAT模式工作流程
NAT即網絡地址轉換,其作用是將源(客戶端)的IP地址轉發給后端服務器
后端服務器處理完數據后通過NAT地址回傳給客戶端
VS/TUN
- 通過隧道方式實現虛擬服務器
TUN模式工作流程
這個模式是基于調度器與后端服務器是跨地區的情況
客戶端訪問LVS調度器,LVS通過vpn技術把用戶的請求轉發到后端服務器
再由服務器把處理數據的結果通過vpn回傳給客戶端
這樣做的最大缺點就是: 跨地區會導致網絡延遲很大訪問效率速度更低
VS/DR
- 直接使用路由技術實現虛擬服務器
- 節點服務器需要配置VIP,注意MAC地址廣播
- 可以滿足更大規模的集群
DR模式工作流程
由LVS調度轉發客戶端數據請求給后端服務器,由后端服務器處理
后端服務器處理完成后偽裝成LVS調度器回傳給客戶端
LVS的負載均衡調度算法
- LVS目前實現了10中調度算法
- 常用的調度算法有四種
輪詢:將客戶端的請求平均分發到Real ?Server,
加權輪詢:根據Real Server權重值進行輪詢
最少連接:選擇連接最少數的服務器
加權最少連接:根據Real Server權重值,選擇連接數最少的服務器
最小延遲:找網速更快的服務器
網卡的延遲與網卡的帶寬,數據的流量有關
最少隊列調度:當已經達到最大的并發量時,客戶端訪問則自動進行排隊,哪個服務器的排隊最少則自動將客戶端放到該隊列
源地址散列(Source Hashing):根據請求的目標地址IP,作為散列鍵(Hash ?Key)從靜態分配的散列表找出對應的服務器
其他調度算法:
基于局部性的最少連接
帶復制的基于局部性最少連接
目標地址散列(Destination ?Hashing)
最短的期望的延遲
最少隊列調度
LVS-NAT集群
LVS的IP負載均衡技術是通過IPVS模塊實現的
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服務器,安裝ipvsadm軟件包,練習使用ipvsadm命令,實現如下功能:
- 使用命令添加基于TCP一些的集群服務
- 在集群中添加若干臺后端真實服務器
- 實現同一客戶端訪問,調度器分配固定服務器
- 會使用ipvsadm實現規則的增、刪、改
- 保存ipvsadm規則
方案安裝ipvsadm軟件包,關于ipvsadm的用法可以參考man ipvsadm資料。
常用ipvsadm命令語法格式如表-1及表-2所示。
使用命令增(add)、刪(delete)、改(edit)、清除所有(clear)LVS集群規則
1)創建LVS虛擬集群服務器(算法為輪詢:rr)
[root@proxy ~]# yum -y install ipvsadm #下載ipvsadm [root@proxy ~]# ipvsadm -A -t 192.168.4.5:80 -s rr #新建虛擬集群 新建一個虛擬服務器,協議是tcp服務,算法為輪詢算法 [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 rr2)為集群添加若干real server
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100:80 #添加真實服務器,添加到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 #再添加一臺權重為2的服務器 [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的權重為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 當算法為輪詢時,不論權重多少都依然自動執行輪詢算法3)修改集群服務器設置(修改調度器算法,將輪詢修改為加權輪詢)
[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負載均衡技術是用過IPVS模塊實現的
- IPVS模塊已成為Linux組成部分
LVS-NAT集群拓撲圖
操作流程
- Real Server:
- 配置WEB服務器
- Director server:
- 在上安裝并啟用ipvsadm
- 創建虛擬服務器
- 向虛擬服務器中加入節點
- Client:
- 連接虛擬服務器測試
部署LVS-NAT集群
?問題
使用LVS實現NAT模式的集群調度服務器,為用戶提供Web服務:
- 集群對外公網IP地址為192.168.4.5
- 調度器內網IP地址為192.168.2.5
- 真實Web服務器地址分別為192.168.2.100、192.168.2.200
- 使用加權輪詢調度算法,真實服務器權重分別為1和2
方案
實驗拓撲結構主機配置細節如表所示。
使用4臺虛擬機,1臺作為Director調度器、2臺作為Real Server、1臺客戶端,拓撲結構如圖所示,注意:web1和web2必須配置網關地址。
步驟一:配置基礎環境
1 ) 為web1和web2配置服務器網關
[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)設置Web服務器(下載可忽略)
[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服務啟動啟動的比較慢?
解決方法:可以修改/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模式調度器
1 ) 確認調度器的路由轉發功能(如果已經開啟,可以忽略)
[root@web1 ~]# cat /proc/sys/net/ipv4/ip_forward #確認路由是否開啟,0是沒開啟,1是已經開啟 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 #修改配置文件,設置永久規則2)創建集群服務器
[root@proxy ~]# yum -y install ipvsadm [root@proxy ~]# ipvsadm -C [root@proxy ~]# ipvsadm -A -t 192.168.4.5:80 -s wrr3)添加真實服務器
[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)查看規則列表,并保存規則?
[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命令反復連接http://192.168.4.5,查看訪問的頁面是否會輪詢到不同的后端真實服務器。
lvs集成在內核,只要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服務器
- 配置輔助IP地址,調整內核參數
- Director Server :
- 在上安裝并啟用ipvsadm
- 配置輔助IP地址
- 創建虛擬服務器,向虛擬服務器中加入節點
- Client :
- 連接虛擬服務器測試
ARP廣播問題
- 當客戶端發起訪問VIP時,對應的域名的請求時,根據網絡通訊原理會產生ARR廣播
- 因為負載均衡器和真實的服務器在同一網絡并且VIP設置在集群中的每個節點上
- 此時集群內的真實服務器會嘗試回答來自客戶端的ARR廣播,這就會產生問題,大家都說我是"VIP"
ARP防火墻
- 使用ARP防火墻也可以禁止對VIP的ARP請求
內核參數說明
- arp_ignore(定義回復ARR廣播方式)
- 0(默認值)
- 回應所有的本地地址ARR廣播,本地地址可以配置在任意網絡接口
- 1
- 只回應配置在入站網卡接口上的任意IP地址的ARR廣播
- arp_announce
- 0(默認)
- 使用配置在任意網卡接口上的本地IP地址
- 2
- 對查詢目標使用最適當的本地地址.在此模式下將忽略這個IP數據包的源地址并嘗試選擇與能與該地址通信的本地地址.首要是選擇所有的網絡接口的子網中外出訪問子網中包含該目標IP地址的本地地址.如果沒有合適的地址被發現,將選擇當前的發送網絡接口或其他有可能接收到該ARR回應的網絡接口來進行發送
部署LVS-DR集群
問題
使用LVS實現DR模式的集群調度服務器,為用戶提供Web服務:
- 客戶端IP地址為192.168.4.10
- LVS調度器VIP地址為192.168.4.15
- LVS調度器DIP地址設置為192.168.4.5
- 真實Web服務器地址分別為192.168.4.100、192.168.4.200
- 使用加權輪詢調度算法,web1的權重為1,web2的權重為2
說明:
CIP是客戶端的IP地址;
VIP是對客戶端提供服務的IP地址;
RIP是后端服務器的真實IP地址;
DIP是調度器與后端服務器通信的IP地址(VIP必須配置在虛擬接口)。
?
方案
使用4臺虛擬機,1臺作為客戶端、1臺作為Director調度器、2臺作為Real Server,拓撲結構如圖所示。實驗拓撲結構主機配置細節如表所示。
步驟一:配置實驗網絡環境
1)設置Proxy服務器的VIP和DIP
注意:為了防止沖突,VIP必須要配置在網卡的虛擬接口!!!
[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 #網卡類型為:以太網卡 4 BOOTPROTO=none #none手動配置IP,或者dhcp自動配置IP 6 NAME=eth0:0 #網卡名稱 7 DEVICE=eth0:0 #設備名稱 8 ONBOOT=yes #開機時是否自動激活該網卡 9 IPADDR=192.168.4.15 #IP地址 10 PREFIX=24 #子網掩碼 [root@proxy network-scripts]# systemctl restart network #重啟 [root@proxy network-scripts]# ifconfig #此時多了一個eth0:0的網卡,其他主機也可以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系統中有兩個管理網絡的服務,有可能沖突?
解決方法:關閉NetworkManager服務后重啟network即可。
[root@proxy network-scripts]# systemctl ?stop NetworkManager?
2)設置Web1服務器網絡參數
[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地址。
注意:這里的子網掩碼必須是32(也就是全255),網絡地址與IP地址一樣,廣播地址與IP地址也一樣。
防止地址沖突的問題:
這里因為web1也配置與調度器一樣的VIP地址,默認肯定會出現地址沖突;
sysctl.conf文件寫入這下面四行的主要目的就是訪問192.168.4.15的數據包,只有調度器會響應,其他主機都不做任何響應,這樣防止地址沖突的問題。
重啟網絡服務,設置防火墻與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)設置Web2服務器網絡參數
[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地址
注意:這里的子網掩碼必須是32(也就是全255),網絡地址與IP地址一樣,廣播地址與IP地址也一樣。
防止地址沖突的問題:
這里因為web1也配置與調度器一樣的VIP地址,默認肯定會出現地址沖突;
sysctl.conf文件寫入這下面四行的主要目的就是訪問192.168.4.15的數據包,只有調度器會響應,其他主機都不做任何響應,這樣防止地址沖突的問題。
重啟網絡服務,設置防火墻與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調度器安裝軟件并部署LVS-DR模式調度器
1)安裝軟件(如果已經安裝,此步驟可以忽略)
[root@proxy ~]# yum -y install ipvsadm2)清理之前實驗的規則,創建新的集群服務器規則
[root@proxy ~]# ipvsadm -C #清空所有規則 [root@proxy ~]# ipvsadm -A -t 192.168.4.15:80 -s wrr3)添加真實服務器(-g參數設置LVS工作模式為DR模式,-w設置權重)
[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)查看規則列表,并保存規則
[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命令反復連接http://192.168.4.15,查看訪問的頁面是否會輪詢到不同的后端真實服務器。
擴展知識:默認LVS不帶健康檢查功能,需要自己手動編寫動態檢測腳本,實現該功能:(參考腳本如下,僅供參考)
?
總結
以上是生活随笔為你收集整理的集群与存储 LVS的集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 版本控制 Git RPM打包
- 下一篇: keepalived热备 keepa