1. 程式人生 > 實用技巧 >ECNU 1002 IP Address

ECNU 1002 IP Address

技術標籤:運維

一、基本概念

Keepalived軟體起初是專為LVS負載均衡軟體設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,後來又加入了可以實現高可用的VRRP功能。因此,Keepalived除了能夠管理LVS軟體外,還可以作為其他服務(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟體。

Keepalived軟體主要是通過VRRP協議實現高可用功能的。VRRP是Virtual Router RedundancyProtocol(虛擬路由器冗餘協議)的縮寫,VRRP出現的目的就是為了解決靜態路由單點故障問題的,它能夠保證當個別節點宕機時,整個網路可以不間斷地執行。

所以,Keepalived 一方面具有配置管理LVS的功能,同時還具有對LVS下面節點進行健康檢查的功能,另一方面也可實現系統網路服務的高可用功能。

三個重要功能:
管理LVS負載均衡軟體
實現LVS叢集節點的健康檢查中
作為系統網路服務的高可用性(failover)

Keepalived高可用故障切換轉移原理
Keepalived高可用服務對之間的故障切換轉移,是通過 VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗餘協議)來實現的。

在 Keepalived服務正常工作時,主 Master節點會不斷地向備節點發送(多播的方式)心跳訊息,用以告訴備Backup節點自己還活看,當主 Master節點發生故障時,就無法傳送心跳訊息,備節點也就因此無法繼續檢測到來自主 Master節點的心跳了,於是呼叫自身的接管程式,接管主Master節點的 IP資源及服務。而當主 Master節點恢復時,備Backup節點又會釋放主節點故障時自身接管的IP資源及服務,恢復到原來的備用角色。

那麼,什麼是VRRP呢?
VRRP ,全 稱 Virtual Router Redundancy Protocol ,中文名為虛擬路由冗餘協議 ,VRRP的出現就是為了解決靜態踣甶的單點故障問題,VRRP是通過一種競選機制來將路由的任務交給某臺VRRP路由器的。

二、keepalived例項

1、keepalived高可用伺服器(web服務示例)
(1)架構圖
在這裡插入圖片描述

(2)環境說明
client:192.168.120.190
web1:192.168.120.191
web2:192.168.120.192

(3)部署步驟
步驟一、安裝Keepalived軟體(web主機)

# yum install -y keepalived 

步驟二、部署Keepalived服務
web1:

# vim /etc/keepalived/keepalived.conf 
global_defs { 
  notification_email { 
    [email protected]                //設定報警收件人郵箱 
  } 
  notification_email_from [email protected]    //設定發件人 
  smtp_server 127.0.0.1                //定義郵件伺服器 
  smtp_connect_timeout 30 
  router_id  web1                        //設定路由ID號(實驗需要修改) 
} 
vrrp_instance VI_1 { 
  state MASTER                         //主伺服器為MASTER(實驗需要修改) 
  interface eth0                    //定義網路介面(實驗需要修改) 
  virtual_router_id 50                //主輔VRID號必須一致(實驗需要修改) 
  priority 100                     //伺服器優先順序,優先順序高優先獲取VIP(實驗需要修改) 
  advert_int 1 
  authentication { 
    auth_type pass 
    auth_pass forlvs                       //主輔伺服器密碼必須一致 
  } 
  virtual_ipaddress { 192.168.120.10 }   //誰是主伺服器誰獲得該VIP(實驗需要修改) 
} 

web2:

# vim /etc/keepalived/keepalived.conf 
global_defs { 
  notification_email { 
    [email protected]                //設定報警收件人郵箱 
  } 
  notification_email_from [email protected]    //設定發件人 
  smtp_server 127.0.0.1                //定義郵件伺服器 
  smtp_connect_timeout 30 
  router_id  web2                        //設定路由ID號(實驗需要修改) 
} 
vrrp_instance VI_1 { 
  state BACKUP                             //從伺服器為BACKUP(實驗需要修改) 
  interface eth0                        //定義網路介面(實驗需要修改) 
  virtual_router_id 50                    //主輔VRID號必須一致(實驗需要修改) 
  priority 50                             //伺服器優先順序(實驗需要修改) 
  advert_int 1 
  authentication { 
     auth_type pass 
     auth_pass forlvs                   //主輔伺服器密碼必須一致(實驗需要修改) 
  } 
  virtual_ipaddress { 192.168.120.10 }    //誰是主伺服器誰配置VIP(實驗需要修改) 
} 

步驟三、啟動服務(web主機)

# systemctl start keepalived 

步驟四、配置防火牆和SELinux
啟動keepalived會自動新增一個drop的防火牆規則,需要清空!

# iptables -F 
# setenforce 0 

步驟五:測試
登入兩臺Web伺服器檢視VIP資訊

# ip addr show 

客戶端訪問
客戶端使用curl命令連線http://192.168.120.10,檢視Web頁面;關閉web1虛擬機器,客戶端再次訪問http://192.168.120.10,驗證是否可以正常訪問服務

2、Keepalived+LVS伺服器
(1)架構圖
在這裡插入圖片描述
(2)部署步驟
步驟一:配置網路環境
1)設定Web1、Web2伺服器的網路引數

# nmcli connection modify eth0 ipv4.method manual \ 
ipv4.addresses 192.168.4.100/24 connection.autoconnect yes 
# nmcli connection up eth0 

接下來給web1配置VIP地址
注意:這裡的子網掩碼必須是32(也就是全255),網路地址與IP地址一樣,廣播地址與IP地址也一樣

# cd /etc/sysconfig/network-scripts/ 
# cp ifcfg-lo{,:0} 
# vim ifcfg-lo:0 
DEVICE=lo:0 
IPADDR=192.168.4.15 
NETMASK=255.255.255.255 
NETWORK=192.168.4.15 
BROADCAST=192.168.4.15 
ONBOOT=yes 
NAME=lo:0 

注意:這裡因為web1也配置與排程器一樣的VIP地址,預設肯定會出現地址衝突。
寫入這四行的主要目的就是訪問192.168.4.15的資料包,只有排程器會響應,其他主機都不做任何響應

# vim /etc/sysctl.conf 
#手動寫入如下4行內容 
net.ipv4.conf.all.arp_ignore = 1 
net.ipv4.conf.lo.arp_ignore = 1 
net.ipv4.conf.lo.arp_announce = 2 
net.ipv4.conf.all.arp_announce = 2 

#當有arp廣播問誰是192.168.4.15時,本機忽略該ARP廣播,不做任何迴應
#本機不要向外宣告自己的lo迴環地址是192.168.4.15
重啟網路服務,設定防火牆與SELinux

# systemctl restart network 
# sysctl -p 
# ifconfig 
# systemctl stop firewalld 
# setenforce 0 

配置proxy1、proxy2主機的網路引數(不配置VIP,由keepalvied自動配置)

步驟二:配置後臺web服務
1)安裝軟體,自定義Web頁面(web1和web2主機)

# yum -y install httpd 
# echo "192.168.4.100" > /var/www/html/index.html 
# yum -y install httpd 
# echo "192.168.4.200" > /var/www/html/index.html 

2)啟動Web伺服器軟體(web1和web2主機)

# systemctl start httpd ; systemctl enable httpd 

步驟三:排程器安裝Keepalived與ipvsadm軟體
注意:兩臺LVS排程器執行相同的操作(如何已經安裝軟體,可用忽略此步驟)
安裝軟體

# yum install -y keepalived 
# systemctl enable keepalived 
# yum install -y ipvsadm 
# ipvsadm -C 

步驟四:部署Keepalived實現LVS-DR模式排程器的高可用
LVS1排程器設定Keepalived,並啟動服務

# vim /etc/keepalived/keepalived.conf 
global_defs { 
  notification_email { 
    [email protected]                //設定報警收件人郵箱 
  } 
  notification_email_from [email protected]    //設定發件人 
  smtp_server 127.0.0.1                //定義郵件伺服器 
  smtp_connect_timeout 30 
  router_id  lvs1                        //設定路由ID號(實驗需要修改) 
} 
vrrp_instance VI_1 { 
  state MASTER                             //主伺服器為MASTER(實驗需要修改) 
  interface eth0                        //定義網路介面(實驗需要修改) 
  virtual_router_id 50                    //主輔VRID號必須一致(實驗需要修改) 
  priority 100                         //伺服器優先順序(實驗需要修改) 
  advert_int 1 
  authentication { 
    auth_type pass 
    auth_pass forlvs                     //主輔伺服器密碼必須一致(實驗需要修改) 
  } 
  virtual_ipaddress {  192.168.4.15  }   //配置VIP(實驗需要修改) 
} 
virtual_server 192.168.4.15 80 {       //設定ipvsadm的VIP規則(實驗需要修改) 
  delay_loop 6 
  lb_algo wrr                          //設定LVS排程演算法為WRR 
  lb_kind DR                               //設定LVS的模式為DR 
  #persistence_timeout 50 
#注意這樣的作用是保持連線,開啟後,客戶端在一定時間內始終訪問相同伺服器 
  protocol TCP 
  real_server 192.168.4.100 80 {     //設定後端web伺服器真實IP(實驗需要修改) 
    weight 1                             //設定權重為1 
    TCP_CHECK { 
    connect_timeout 3 
    nb_get_retry 3 
    delay_before_retry 3 
    } 
  } 
 real_server 192.168.4.200 80 {      //設定後端web伺服器真實IP(實驗需要修改) 
    weight 2                          //設定權重為2 
    TCP_CHECK { 
    connect_timeout 3 
    nb_get_retry 3 
    delay_before_retry 3 
    } 
  } 
} 
# systemctl start keepalived 
# iptables -F  
# ipvsadm -Ln                     #檢視LVS規則 
# ip a  s                          #檢視VIP配置 

LVS2排程器設定Keepalived
從proxy1傳給proxy2

#scp /etc/keepalived/keepalived.conf 192.168.4.6:/etc/keepalived/ 
# vim /etc/keepalived/keepalived.conf 
router_id lvs2   
state BACKUP 
priority 50    
# systemctl start keepalived 
# iptables -F                       #每重啟一次服務就要清空一下防火牆 
# ipvsadm -Ln                     #檢視LVS規則 
# ip a  s                          #檢視VIP配置 

步驟五:客戶端測試
客戶端使用curl命令反覆連線http://192.168.4.15,檢視訪問的頁面是否會輪詢到不同的後端真實伺服器