第二十八課 Linux集羣架構(一)php
目錄linux
1、 集羣介紹
2、 keepalived介紹
3、 用keepalived配置高可用集羣
4、 負載均衡集羣介紹
5、 LVS介紹
6、 LVS調度算法
7、 LVS NAT模式搭建nginx
集羣聽起來好像是一個很高大上的技術,其實不是的,集羣其實就是一堆計算機的集合,給用戶提供同一個服務的一組計算機,就稱之爲集羣,對於用戶而言好像就是一臺計算機提供的服務,集羣主要分爲三大類。git
LB 負載均衡集羣算法
負載均衡集羣主要是提升服務的響應能力的,好比說某服務器的併發響應能力是100個,這個時候常常有人反映說連不上服務器,這個時候解決方案通常有兩種:1、升級硬件,升級硬件顯然不是很好的解決方案,假如說升級硬件以後過了一段時間因爲業務量的加大,服務器又負載不起了怎麼辦呢, 2、將現有空閒低配的設備組合起來作成一個具備高併發的負載均衡集羣,多臺計算機同時分攤負載用戶的請求,這樣一來服務器的壓力也就沒有那麼大了,這一類的集羣具備很好的可伸縮性,可靠性,和成本低廉等好處。apache
負載均衡集羣,須要有一臺服務器做爲分發器,它負責把用戶的請求分發給後端的服務器處理,在這個集羣裏,除了分發器外,就是給用戶提供服務的服務器了,這些服務器數量至少爲2vim
HA 高可用性集羣後端
高可用性集羣主要是提供7*24小時不間斷服務的,不能說由於一臺或幾臺服務器的down機而致使沒法提供服務的,若是某臺down機了,會自動的切換到其餘計算機上面工做,從而達到高可用的效果。瀏覽器
高可用集羣一般爲兩臺服務器,一臺工做,另一臺做爲冗餘,當提供服務的機器宕機,冗餘將接替繼續提供服務。bash
HP 高性能集羣
高性能集羣主要是用於須要大量CPU運算的場景中,好比說天氣預報,國外3D大片的特效製做,等等一系列須要作大量運算的應用。
LB 負載均衡集羣又分爲硬件級與軟件級的
硬件類的價格比較貴,如:F5, Netscaler等
軟件級的比較常見的有以下幾種:
1.LVS;
2.Haproxy
3.Nignx
HA 高可用集羣的解決方案常見的有如下幾種
heartbeat
corosync+openais RHCS
ultramokey
keepalived
HP 高性能集羣的解決方案常見的有:bowerful
keepalived是實現高可用的一種輕量級的技術手段,主要用來防止單點故障(單點故障是指一旦某一點出現故障就會致使整個系統架構的不可用)的發生。
1.keepalived經過VRRP(Virtual Router Redundancy Protocl)來實現高可用。
2.在VRRP協議裏會將多臺功能相同的路由器組成一個小組,這個小組裏會有1個master角色和N(N>=1)個backup角色。
3.master會經過組播的形式向各個backup發送VRRP協議的數據包,當backup收不到master發來的VRRP數據包時,就會認爲master宕機了。此時就須要根據各個backup的優先級來決定誰成爲新的mater。
4.Keepalived要有三個模塊,分別是core、check和vrrp。其中core模塊爲keepalived的核心,負責主進程的啓動、維護以及全局配置文件的加載和解析,check模塊負責健康檢查,vrrp模塊是來實現VRRP協議的。
環境
CentOS Linux release 7.4.1708 (Core)
內核版本:4.3.10.0-693.el7.x86_64
nginx/1.14.0
server1: 10.0.1.51 主機名:nginx-master
server2: 10.0.1.52 主機名:nginx-slave
nginx+keepalived高可用安裝過程
1.在nginx-master和nginx-slave上安裝keepalived軟件包
[root@localhost ~]# yum -y install keepalived Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * epel: mirrors.ustc.edu.cn * extras: mirrors.aliyun.com * updates: mirrors.cn99.com ...中間略... Installed: keepalived.x86_64 0:1.3.5-6.el7 Dependency Installed: net-snmp-agent-libs.x86_64 1:5.7.2-33.el7_5.2 net-snmp-libs.x86_64 1:5.7.2-33.el7_5.2 Complete!
2.在nginx-master和nginx-slave上安裝好nginx(以前已經安裝過,因此兩臺測試機都有nginx),此處略過。
[root@nginx-master ~]# netstat -nltup | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 963/nginx: master p [root@nginx-slave ~]# netstat -nltup | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 972/nginx: master p
3.編輯nginx-master上keepalived的配置文件
[root@nginx-master ~]# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.ori [root@nginx-master ~]# vim /etc/keepalived/keepalived.conf //內容參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_keepalived.conf global_defs { notification_email { kennminn@139.com } notification_email_from root smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx { //nginx狀態檢查腳本,需編寫 script "/usr/local/sbin/check_ng.sh" interval 3 } vrrp_instance VI_1 { state MASTER interface ens32 //與slave上的值需一致 virtual_router_id 51 //優先級 priority 100 advert_int 1 authentication { //驗證方式 auth_type PASS auth_pass aminglinux>com } virtual_ipaddress { //虛擬ip 10.0.1.50 } track_script { chk_nginx } }
4.新建監控腳本
[root@nginx-master ~]# vim /usr/local/sbin/check_ng.sh //內容參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_check_ng.sh #!/bin/bash #時間變量,用於記錄日誌 d=$(date --date today +%Y%m%d_%H:%M:%S) #計算nginx進程數量 n=`ps -C nginx --no-heading|wc -l` #若是進程爲0,則啓動nginx,而且再次檢測nginx進程數量, #若是還爲0,說明nginx沒法啓動,此時須要關閉keepalived if [ $n -eq "0" ]; then /etc/init.d/nginx start n2=`ps -C nginx --no-heading|wc -l` if [ $n2 -eq "0" ]; then echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log systemctl stop keepalived fi fi //授予腳本755權限 [root@nginx-master ~]# chmod 755 /usr/local/sbin/check_ng.sh [root@nginx-master ~]# ls -l /usr/local/sbin/check_ng.sh -rwxr-xr-x 1 root root 568 Jul 20 13:52 /usr/local/sbin/check_ng.sh
5.啓動nginx-master上的keepalived
[root@nginx-master ~]# systemctl start keepalived.service [root@nginx-master ~]# ps aux | grep keepalived root 1600 0.0 0.1 118608 1384 ? Ss 13:55 0:00 /usr/sbin/keepalived -D root 1601 0.0 0.3 127468 3308 ? S 13:55 0:00 /usr/sbin/keepalived -D root 1602 0.0 0.2 127408 2832 ? S 13:55 0:00 /usr/sbin/keepalived -D root 1728 0.0 0.0 112660 980 pts/0 S+ 13:56 0:00 grep --color=auto keepalived
6.編輯nginx-slave上的配置文件
[root@nginx-slave ~]# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.ori [root@nginx-slave ~]# vim /etc/keepalived/keepalived.conf //內容參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_keepalived.conf global_defs { notification_email { kennminn@139.com } notification_email_from root smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx { script "/usr/local/sbin/check_ng.sh" interval 3 } vrrp_instance VI_1 { //修改成BACKUP state BACKUP interface ens32 virtual_router_id 51 //修改優先級 priority 90 advert_int 1 authentication { auth_type PASS auth_pass aminglinux>com } virtual_ipaddress { 10.0.1.50 } track_script { chk_nginx } }
7.新建監控腳本
[root@nginx-slave ~]# vim /usr/local/sbin/check_ng.sh //內容參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_check_ng.sh #!/bin/bash #時間變量,用於記錄日誌 d=$(date --date today +%Y%m%d_%H:%M:%S) #計算nginx進程數量 n=`ps -C nginx --no-heading|wc -l` #若是進程爲0,則啓動nginx,而且再次檢測nginx進程數量, #若是還爲0,說明nginx沒法啓動,此時須要關閉keepalived if [ $n -eq "0" ]; then /etc/init.d/nginx start n2=`ps -C nginx --no-heading|wc -l` if [ $n2 -eq "0" ]; then echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log systemctl stop keepalived fi fi //授予腳本755權限 [root@nginx-master ~]#ls -l /usr/local/sbin/check_ng.sh -rwxr-xr-x 1 root root 568 Jul 20 14:09 /usr/local/sbin/check_ng.sh
8.啓動nginx-slave上的keepalived
[root@nginx-slave ~]# systemctl start keepalived.service [root@nginx-slave ~]# ps aux | grep keepalived root 1891 0.0 0.1 118608 1388 ? Ss 14:13 0:00 /usr/sbin/keepalived -D root 1892 0.0 0.3 127468 3308 ? S 14:13 0:00 /usr/sbin/keepalived -D root 1893 0.1 0.2 127408 2828 ? S 14:13 0:00 /usr/sbin/keepalived -D root 1926 0.0 0.0 112660 980 pts/0 S+ 14:13 0:00 grep --color=auto keepalived
9.測試
//環境 [root@nginx-master ~]# curl -x127.0.0.1:80 localhost I am nginx-master!!! [root@nginx-slave ~]# curl -x127.0.0.1:80 localhost I am nginx-slave!!!
遠程瀏覽器
測試1.關閉master上的nginx服務
> ^C [root@nginx-master ~]# /etc/init.d/nginx stop Stopping nginx (via systemctl): [ OK ] [root@nginx-master ~]# ps aux | grep nginx nginx 1210 0.0 0.4 227116 4720 ? S 11:37 0:00 php-fpm: pool www nginx 1211 0.0 0.4 227116 4720 ? S 11:37 0:00 php-fpm: pool www nginx 1212 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1213 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1214 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1215 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1216 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1217 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1218 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1219 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1220 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1221 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1222 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1223 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1224 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1225 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1226 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1227 0.0 0.4 227116 4724 ? S 11:37 0:00 php-fpm: pool www nginx 1228 0.0 0.4 227116 4728 ? S 11:37 0:00 php-fpm: pool www nginx 1229 0.0 0.4 227116 4728 ? S 11:37 0:00 php-fpm: pool www root 5641 0.0 0.1 45884 1144 ? Ss 14:26 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nginx 5642 0.0 0.3 48372 3792 ? S 14:26 0:00 nginx: worker process nginx 5643 0.0 0.3 48372 3792 ? S 14:26 0:00 nginx: worker process root 5679 0.0 0.0 112660 976 pts/0 S+ 14:26 0:00 grep --color=auto nginx [root@nginx-master ~]# netstat -nltup | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5641/nginx: master //由於監控腳本有寫自動重啓的指令,因此手工重啓後監控腳本又自動把nginx服務開啓了。
測試2.在master上增長iptabls規則
//開啓防火牆,添加規則,主備上都須要作 [root@nginx-master ~]# systemctl status firewalld.service [root@nginx-master ~]firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens32 --destination 224.0.0.18 --protocol vrrp -j ACCEPT [root@nginx-master ~]firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface ens32 --destination 224.0.0.18 --protocol vrrp -j ACCEPT [root@nginx-master ~]firewall-cmd --zone=public --add-port=80/tcp --permanent [root@nginx-master ~]firewall-cmd --reload 此時keepalived是正常的,虛ip能夠在主、從上進行漂移。 //刪除master上的容許規則,添加拒絕規則 [root@nginx-master ~]# firewall-cmd --direct --permanent --remove-rule ipv4 filter OUTPUT 0 --out-interface ens32 --destination 224.0.0.18 --protocol vrrp -j ACCEPT success [root@nginx-master ~]# firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface ens32 --destination 224.0.0.18 --protocol vrrp -j DROP success [root@nginx-master ~]# firewall-cmd --direct --permanent --remove-rule ipv4 filter INPUT 0 --in-interface ens32 --destination 224.0.0.18 --protocol vrrp -j ACCEPT success [root@nginx-master ~]# firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens32 --destination 224.0.0.18 --protocol vrrp -j DROP success [root@nginx-master ~]# firewall-cmd --reload
遠程瀏覽器訪問
測試3 關閉master上的keepalived服務
[root@nginx-master ~]# systemctl stop keepalived.service
遠程瀏覽器此時訪問的頁面爲
測試4 從新啓用master上的keepalived服務
[root@nginx-master ~]# systemctl start keepalived.service
切換過程存在延時
//遠程機器上長ping虛ip:10.0.1.50 來自 10.0.1.50 的回覆: 字節=32 時間<1ms TTL=64 來自 10.0.1.50 的回覆: 字節=32 時間<1ms TTL=64 來自 10.0.1.50 的回覆: 字節=32 時間=5ms TTL=64 來自 10.0.1.50 的回覆: 字節=32 時間<1ms TTL=64 請求超時。 來自 10.0.1.50 的回覆: 字節=32 時間<1ms TTL=64 來自 10.0.1.50 的回覆: 字節=32 時間<1ms TTL=64 來自 10.0.1.50 的回覆: 字節=32 時間<1ms TTL=64
負載均衡創建在現有網絡結構之上,它提供了一種廉價、有效、透明的方法擴展網絡設備和服務器的帶寬、增長吞吐量、增強網絡數據處理能力、提升網絡的靈活性和可用性。
主流的負載均衡開源軟件有LVS、keepalived、haproxy、nginx等
其中LVS屬於4層(OSI7層模型),nginx屬於7層,haproxy既能夠認爲是4層,也能夠當作7層使用,keepalived的負載均衡功能其實就是lvs。
lvs這種4層的負載均衡是能夠分發除80外的其餘端口通訊的,好比MySQL的,而nginx僅僅支持http,https,mail,haproxy也支持MySQL這種
相比較來講,LVS這種4層的更穩定,能承受更多的請求,而nginx這種7層的更加靈活,能實現更多的個性化需求
LVS是由國人章文嵩開發的一款4層負載均衡開源軟件
流行度不亞於apache的httpd,基於TCP/IP作的路由和轉發,穩定性和效率很高
LVS最新版本基於Linux內核2.6,有好多年不更新了
LVS有三種常見的模式:NAT、DR、IP Tunnel
LVS架構中有一個核心角色叫作分發器(Load balance),它用來分發用戶的請求,還有諸多處理用戶請求的服務器(Real Server,簡稱rs)
lvs三種模式
1.LVS NAT模式
這種模式藉助iptables的nat表來實現,
用戶的請求到分發器後,經過預設的iptables規則,把請求的數據包轉發到後端的rs上去,
rs須要設定網關爲分發器的內網ip。
用戶請求的數據包和返回給用戶的數據包所有通過分發器,因此分發器成爲瓶頸,在nat模式中,只須要分發器有公網ip便可,因此比較節省公網ip資源
2.LVS IP Tunnel模式
這種模式,須要有一個公共的IP配置在分發器和全部rs上,咱們把它叫作vip
客戶端請求的目標IP爲vip,分發器接收到請求數據包後,會對數據包作一個加工,會把目標IP改成rs的IP,這樣數據包就到了rs上
rs接收數據包後,會還原原始數據包,這樣目標IP爲vip,由於全部rs上配置了這個vip,因此它會認爲是它本身
3.LVS DR模式
這種模式,也須要有一個公共的IP配置在分發器和全部rs上,也就是vip
和IP Tunnel不一樣的是,它會把數據包的MAC地址修改成rs的MAC地址
rs接收數據包後,會還原原始數據包,這樣目標IP爲vip,由於全部rs上配置了這個vip,因此它會認爲是它本身
針對不一樣的網絡服務需求和服務器配置,IPVS調度器實現了以下八種負載調度算法:
輪叫(Round Robin)
調度器經過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而無論服務器上實際的鏈接數和系統負載。
加權輪叫(Weighted Round Robin)
調度器經過"加權輪叫"調度算法根據真實服務器的不一樣處理能力來調度訪問請求。這樣能夠保證處理能力強的服務器處理更多的訪問流量。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。
最少連接(Least Connections)
調度器經過"最少鏈接"調度算法動態地將網絡請求調度到已創建的連接數最少的服務器上。若是集羣系統的真實服務器具備相近的系統性能,採用"最小鏈接"調度算法能夠較好地均衡負載。
加權最少連接(Weighted Least Connections)
在集羣系統中的服務器性能差別較大的狀況下,調度器採用"加權最少連接"調度算法優化負載均衡性能,具備較高權值的服務器將承受較大比例的活動鏈接負載。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。
基於局部性的最少連接(Locality-Based Least Connections)
"基於局部性的最少連接" 調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器 是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工做負載,則用"最少連接"的原則選出一個可用的服務 器,將請求發送到該服務器。
帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication)
"帶複製的基於局部性最少連接"調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不一樣之處是它要維護從一個 目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務 器組,按"最小鏈接"原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器,若服務器超載;則按"最小鏈接"原則從這個集羣中選出一 臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以下降複製的 程度。
目標地址散列(Destination Hashing)
"目標地址散列"調度算法根據請求的目標IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。
源地址散列(Source Hashing)
"源地址散列"調度算法根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。
實驗環境
三臺虛擬機
分發器,也叫調度器(簡寫爲dir)
lvs-lb
內網:192.168.2.100(僅主機),外網:192.168.1.30
lvs-rs1
內網:192.168.2.110(僅主機)
lvs-rs2
內網:192.168.2.120(僅主機)
1.在三臺虛擬機上停用firewalld,啓用iptables
//停用firewalld systemctl stop firewalld.service systemctl disable firewalld.service //若是未安裝iptables,用yum安裝一下 yum -y install iptables-services systemctl start iptables-services //清空、保存規則 iptables -F; service iptables save
2.在分發器上安裝ipvsdam
[root@localhost ~]# yum install -y ipvsdam
3.在分發器上編寫腳本,放置在/usr/local/sbin, 賦予執行權限後執行
#! /bin/bash # director 服務器上開啓路由轉發功能 echo 1 > /proc/sys/net/ipv4/ip_forward # 關閉icmp的重定向 echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects # 注意區分網卡名字 echo 0 > /proc/sys/net/ipv4/conf/ens32/send_redirects echo 0 > /proc/sys/net/ipv4/conf/ens34/send_redirects # director 設置nat防火牆 iptables -t nat -F iptables -t nat -X iptables -t nat -A POSTROUTING -s 192.168.126.0/24 -o ens32 -j MASQUERADE # director設置ipvsadm IPVSADM='/usr/sbin/ipvsadm' $IPVSADM -C $IPVSADM -A -t 192.168.1.30:80 $IPVSADM -a -t 192.168.1.30:80 -r 192.168.126.110:80 -m -w 1 $IPVSADM -a -t 192.168.1.30:80 -r 192.168.126.120:80 -m -w 1
4.啓動ipvsadm.service服務
//啓動ipvsadm.service 報錯 [root@localhost ~]# systemctl start ipvsadm.service Job for ipvsadm.service failed because the control process exited with error code. See "systemctl status ipvsadm.service" and "journalctl -xe" for details. [root@localhost ~]# systemctl status ipvsadm.service ● ipvsadm.service - Initialise the Linux Virtual Server Loaded: loaded (/usr/lib/systemd/system/ipvsadm.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since Sun 2018-07-22 23:35:17 CST; 17s ago Process: 15928 ExecStart=/bin/bash -c exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm (code=exited, status=1/FAILURE) Main PID: 15928 (code=exited, status=1/FAILURE) //查看日誌,發現是沒有/etc/sysconfig/ipvsadm chrony/ lastlog secure vmware-vmsvc.log [root@localhost ~]# tail /var/log/messages Jul 22 23:29:24 localhost kernel: IPVS: ipvs loaded. Jul 22 23:29:24 localhost kernel: IPVS: [wlc] scheduler registered. Jul 22 23:30:01 localhost systemd: Started Session 11 of user root. Jul 22 23:30:01 localhost systemd: Starting Session 11 of user root. Jul 22 23:35:17 localhost systemd: Starting Initialise the Linux Virtual Server... Jul 22 23:35:17 localhost bash: /bin/bash: /etc/sysconfig/ipvsadm: No such file or directory Jul 22 23:35:17 localhost systemd: ipvsadm.service: main process exited, code=exited, status=1/FAILURE Jul 22 23:35:17 localhost systemd: Failed to start Initialise the Linux Virtual Server. Jul 22 23:35:17 localhost systemd: Unit ipvsadm.service entered failed state. Jul 22 23:35:17 localhost systemd: ipvsadm.service failed. //解決 [root@localhost ~]# ipvsadm --save > /etc/sysconfig/ipvsadm [root@localhost ~]# systemctl start ipvsadm.service
5.測試
//當前策略 ~ [root@localhost ~]# ipvsadm -l IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP localhost.localdomain:http wlc -> 192.168.126.110:http Masq 1 1 0 -> 192.168.126.120:http Masq 1 2 0 //從另一臺主機192.168.1.5上測試 I am lvs-rs2!!! [root@lnmp-server ~]# curl 192.168.1.30 I am lvs-rs2!!! [root@lnmp-server ~]# curl 192.168.1.30 I am lvs-rs1!!! [root@lnmp-server ~]# curl 192.168.1.30 I am lvs-rs2!!! [root@lnmp-server ~]# curl 192.168.1.30 I am lvs-rs1!!! [root@lnmp-server ~]# curl 192.168.1.30 I am lvs-rs2!!! [root@lnmp-server ~]# curl 192.168.1.30 I am lvs-rs1!!! [root@lnmp-server ~]# curl 192.168.1.30 I am lvs-rs2!!! [root@lnmp-server ~]# curl 192.168.1.30 I am lvs-rs1!!!