? ? ? ? 現階段項目開發往往采用前后臺分離,前臺常用的技術有vue、react等,前臺代碼部署在nginx中,代碼中配置了后臺服務的網關地址,由網關向后臺分發服務請求,架構示意圖如下:
? ? ? ? 在上述架構圖中,如果Nginx服務器宕機,那么客戶端則無法訪問后臺服務,本文重點闡述基于Keepalived實現前臺服務高可用。改進后架構示意圖如下:
? ? ? ? 實現基于Keepalived的前臺服務高可用,步驟如下:
? ? ? ? 環境說明:系統版本:centos7?;Nginx版本:nginx-1.20.2.tar.gz;keepalived版本:keepalived-2.0.20.tar.gz;后臺2個虛擬機,ip分別是:192.168.136.129、192.168.136.130
? ? ? ? 1、Nginx安裝【129、130】
# 安裝四個依賴
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel# 解壓nginx源碼
cd /usr/software/
tar xzvf nginx-1.20.2.tar.gz# 創建安裝的文件夾
cd /usr/install
mkdir nginx-1.20.2#指定安裝位置
cd /usr/software/nginx-1.20.2
./configure --prefix=/usr/install/nginx-1.20.2#編譯&安裝
make && make install
? ? ? ? 2、為了方便觀察ip信息,修改nginx的主頁面index.html
vim /usr/install/nginx-1.20.2/html/index.html
? ? ? ? 【129】文件修改內容如下:
????????【130】文件修改內容如下:
? ? ? ? 3、【129、130】分別啟動nginx
cd /usr/install/nginx-1.20.2/sbin/
./nginx
? ? ? ? 4、【129、130】安裝keepalived?
#解壓縮keepalived
cd /usr/software/
tar xzvf keepalived-2.0.20.tar.gz#創建keepalived的安裝目錄
cd /usr/install
mkdir keepalived-2.0.20#配置keepalived的安裝目錄并編譯安裝
cd /usr/software/keepalived-2.0.20
./configure --prefix=/usr/install/keepalived-2.0.20
make && make install
? ? ? ? 5、?【129、130】etc創建keepalived配置目錄,拷貝配置文件到etc目錄下,并修改此文件
mkdir /etc/keepalived
cp -p /usr/install/keepalived-2.0.20/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf
? ? ? ? 【129】keepalived.conf 文件信息如下:
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.136.250}
}virtual_server 192.168.136.250 80 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPsorry_server 192.168.136.200 80real_server 192.168.136.129 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.136.130 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
????????【130】keepalived.conf 文件信息如下:
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.136.250}
}virtual_server 192.168.136.250 80 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPsorry_server 192.168.136.200 80real_server 192.168.136.129 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.136.130 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
? ? ? ? ?重點配置如下:
? ? ? ? 【129】state MASTER;【130】state BACKUP;
????????interface ens33 :網卡名稱
????????virtual_ipaddress?192.168.136.250:虛擬地址,就是客戶端可以訪問的地址
????????【129】priority 100;【130】priority 80;【129】的優先級高
????????real_server 192.168.136.129 80 真實的nginx地址
????????real_server 192.168.136.130 80?真實的nginx地址
? ? ? ? 6、【129】、【130】分別啟動keepalived并測試
cd /etc/keepalived
service keepalived start
service keepalived status
? ? ? ? 瀏覽器輸入虛地址:http://192.168.136.250/?,由于129是master,顯示129的ip地址
? ? ? ? 當129虛擬機宕機時(模擬關閉電源),再次訪問?http://192.168.136.250/是,顯示130的ip地址,實現了前臺服務的高可用。