一、準備工作:關閉防火牆,selinux以免對實驗結果造成影響,準備虛機,設置IP地址、主機名
hostname:Nginx01
IP:192.168.1.87
Role:Nginx Server
hostname:Nginx02
IP: 192.168.1.88
Role:Nginx Server
hostname:LVS01
IP: 192.168.1.89
Role:LVS+Keepalived
hostname:LVS02
IP: 192.168.1.90
Role:LVS+Keepalived
VIP:192.168.1.253
二、安裝相關軟件、以及配置文件修改:LVS、keepalived、nginx 該文檔軟件安裝全部使用yum
1、nginx01 以及nginx02 都執行
yum install -y nginx #安裝以後啓動nginx systemctl start nginx.service
修改測試頁面內容便於區分,根據主機名修改index.html文件
vim /usr/share/nginx/html/index.html
修改完訪問頁面如下:
nginx兩臺服務器準備完成,在LVS01、LVS02上安裝LVS以及keepalived
yum install -y ipvsadm #安裝keepalived依賴的軟件 yum install -y gcc openssl openssl-devel yum install -y keepalived
安裝完成以後,LVS01上先清空keepalived的配置文件
:>/etc/keepalived/keepalived.conf 複製下面內如到 /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id lvs_clu_1 } virrp_sync_group Prox { group { mail } } vrrp_instance mail { state MASTER interface eno16777736 lvs_sync_daemon_interface eno16777736 virtual_router_id 50 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.253 } } virtual_server 192.168.1.253 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 0 protocol TCP nat_mask 255.255.255.0 real_server 192.168.1.87 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.1.88 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
在LVS02上也先清空keepalived的配置文件
:>/etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id lvs_clu_1 } virrp_sync_group Prox { group { mail } } vrrp_instance mail { state BACKUP interface ens33 lvs_sync_daemon_interface ens33 virtual_router_id 50 priority 60 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.253 } } virtual_server 192.168.1.253 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 0 protocol TCP real_server 192.168.1.87 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.1.88 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
配置完成以後在兩臺機器上啓動 keepalived
注意 interface 需要修改爲自己電腦的網卡
systemctl start keepalived
三、測試結果
1、正常情況下
2、當nginx01宕機以後(在nginx01上執行命令),結果如圖:
systemctl stop nginx.service
nginx01啓動以後,在nginx02上停止nginx,效果雷同,不在貼圖。
3、當LVS01上keepalived死掉以後,LVS02上的keepalived會啓動配置VIP到自己機器上
systemctl stop keepalived
結果顯示正常,LVS01上keepalived啓動以後會把VIP配置到自己的網卡。
四、問題總結:
關於keepalived配置文件中相關參數說明
persistence_timeout 0 #保持客戶端的請求在這個時間段內全部發到同一個真實服務器,單位秒,動態 網站此參數很重要。 router_id LVS_DEVEL # 設置lvs的id,在一個網絡內應該是唯一的 vrrp_instance VI_1 { #vrrp實例定義部分 state MASTER #設置lvs的狀態,MASTER和BACKUP兩種,必須大寫 interface eno16777736 #設置對外服務的接口 lvs_sync_daemon_inteface #負載均衡器之間的監控接口,類似於 HA HeartBeat的心跳線。但它的機制優於 Heartbeat,因爲它沒有“裂腦”這個問題,它是以優先級這個機制來規避這個麻煩的。在DR 模式中,lvs_sync_daemon_inteface 與服務接口 interface 使用同一個網絡接口。 virtual_router_id 60 #設置虛擬路由標示,這個標示是一個數字,同一個vrrp實例使用唯一標示 priority 80 #定義優先級,數字越大優先級越高,在一個vrrp——instance下,master的優先級必須大於backup advert_int 1 #設定master與backup負載均衡器之間同步檢查的時間間隔,單位是秒 authentication { #設置驗證類型和密碼 auth_type PASS #主要有PASS和AH兩種 auth_pass 1111 #驗證密碼,同一個vrrp_instance下MASTER和BACKUP密碼必須相同 } virtual_ipaddress { #設置虛擬ip地址,可以設置多個,每行一個 192.168.1.253 } } virtual_server 192.168.1.253 80 { #設置虛擬服務器,需要指定虛擬ip和服務端口 delay_loop 3 #健康檢查時間間隔 lb_algo rr #負載均衡調度算法 lb_kind DR #負載均衡轉發規則 persistence_timeout 50 #設置會話保持時間,對動態網頁非常有用 protocol TCP #指定轉發協議類型,有TCP和UDP兩種 real_server 192.168.1.87 80 { #配置服務器節點1,需要指定real server的真實IP地址和端口 weight 1 #設置權重,數字越大權重越高 TCP_CHECK { #realserver的狀態監測設置部分單位秒 connect_timeout 3 #超時時間 nb_get_retry 3 #重試次數 delay_before_retry 3 #重試間隔 connect_port 80 #監測端口 }
歡迎打算使用阿里雲服務器的小夥伴,加我私聊!!QQ:3533470970 或直接領取阿里雲幸運券:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=b6h928qb&utm_source=b6h928qb