Linux集群架構(一)


第二十八課 Linux集群架構(一)

目錄

一、 集群介紹
二、 keepalived介紹
三、 用keepalived配置高可用集群
四、 負載均衡集群介紹
五、 LVS介紹
六、 LVS調度算法
七、 LVS NAT模式搭建


一、 集群介紹

集群聽起來好像是一個很高大上的技術,其實不是的,集群其實就是一堆計算機的集合,給用戶提供同一個服務的一組計算機,就稱之為集群,對於用戶而言好像就是一台計算機提供的服務,集群主要分為三大類。

LB 負載均衡集群

負載均衡集群主要是提高服務的響應能力的,比如說某服務器的並發響應能力是100個,這個時候經常有人反映說連不上服務器,這個時候解決方案一般有兩種:一、升級硬件,升級硬件顯然不是很好的解決方案,假如說升級硬件之后過了一段時間由於業務量的加大,服務器又負載不起了怎么辦呢, 二、將現有空閑低配的設備組合起來做成一個具有高並發的負載均衡集群,多台計算機同時分攤負載用戶的請求,這樣一來服務器的壓力也就沒有那么大了,這一類的集群具有很好的可伸縮性,可靠性,和成本低廉等好處。

負載均衡集群,需要有一台服務器作為分發器,它負責把用戶的請求分發給后端的服務器處理,在這個集群里,除了分發器外,就是給用戶提供服務的服務器了,這些服務器數量至少為2

HA 高可用性集群

高可用性集群主要是提供7*24小時不間斷服務的,不能說因為一台或幾台服務器的down機而導致無法提供服務的,如果某台down機了,會自動的切換到其他計算機上面工作,從而達到高可用的效果。

高可用集群通常為兩台服務器,一台工作,另外一台作為冗余,當提供服務的機器宕機,冗余將接替繼續提供服務。

HP 高性能集群

高性能集群主要是用於需要大量CPU運算的場景中,比如說天氣預報,國外3D大片的特效制作,等等一系列需要做大量運算的應用。

LB 負載均衡集群又分為硬件級與軟件級的

硬件類的價格比較貴,如:F5, Netscaler等

軟件級的比較常見的有如下幾種:

1.LVS;

2.Haproxy

3.Nignx

HA 高可用集群的解決方案常見的有以下幾種

heartbeat

corosync+openais RHCS

ultramokey

keepalived

HP 高性能集群的解決方案常見的有:bowerful


二、 keepalived介紹

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協議的。


三、 用keepalived配置高可用集群

環境

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介紹

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,所以它會認為是它自己


六、 LVS調度算法

針對不同的網絡服務需求和服務器配置,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)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。


七、 LVS NAT模式搭建

實驗環境

三台虛擬機

分發器,也叫調度器(簡寫為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!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM