5、Nginx 配置實例-keepalived + nginx 實現高可用集群方案


一.使用場景介紹:

nginx做負載均衡,來達到分發請求的目的,但是不能很好的避免單點故障,假如nginx服務器掛點了,那么所有的服務也會跟着癱瘓 。keepalived+nginx,就能很好的解決這一問題。

二.原理介紹:

Keepalived 是一種高性能的服務器高可用或熱備解決方案,Keepalived 可以用來防止服務器單點故
障的發生,通過配合 Nginx 可以實現 web 前端服務的高可用。
Keepalived 以 VRRP 協議為實現基礎,用 VRRP 協議來實現高可用性(HA)。VRRP(Virtual Router
Redundancy Protocol)協議是用於實現路由器冗余的協議,VRRP 協議將兩台或多台路由器設備虛擬成一個
設備,對外提供虛擬路由器 IP(一個或多個),而在路由器組內部,如果實際擁有這個對外 IP 的路由器如
果工作正常的話就是 MASTER, 或者是通過算法選舉產生, MASTER 實現針對虛擬路由器 IP 的各種網絡功能,
如 ARP 請求,ICMP,以及數據的轉發等;其他設備不擁有該虛擬 IP,狀態是 BACKUP,除了接收 MASTER 的
VRRP 狀態通告信息外,不執行對外的網絡功能。當主機失效時,BACKUP 將接管原先 MASTER 的網絡功能。
VRRP 協議使用多播數據來傳輸 VRRP 數據, VRRP 數據使用特殊的虛擬源 MAC 地址發送數據而不是自身
網卡的 MAC 地址,VRRP 運行時只有 MASTER 路由器定時發送 VRRP 通告信息,表示 MASTER 工作正常以及虛
擬路由器 IP(組),BACKUP 只接收 VRRP 數據,不發送數據,如果一定時間內沒有接收到 MASTER 的通告信
息,各 BACKUP 將宣告自己成為 MASTER,發送通告信息,重新進行 MASTER 選舉狀態。

三.准備工作

兩台虛擬機如:
192.168.0.121 和 192.168.0.122

實例的過程如圖:

四.兩台虛擬機都安裝好nginx和keepalived

nginx的安裝我不再說明了,之前的學習已經做了筆記

1、在兩台服務器安裝keepalived

1)使用yum命令進行安裝(手動安裝方式可百度查詢)

yum install keepalived –y

2)安裝之后,在etc里面生成目錄keepalived,有文件keepalived.conf

2、完成高可用配置(主從配置)

1)修改/etc/keepalived/keepalivec.conf配置文件(兩台虛擬機都要配置,注意主服務機和備份服務機配置的區別)

router_id的值是在/etc/hosts文件中,通過router_id可以訪問到主機,hosts內容可以手動添加修改

#全局配置
global_defs {   notification_email {     acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server
192.168.17.129   smtp_connect_timeout 30   router_id LVS_DEVEL              #通過router_id可以訪問到主機 }
#腳本配置 vrrp_script chk_http_port {   script
"/usr/local/src/nginx_check.sh"    #檢測腳本文件的位置   interval 2                    #(檢測腳本執行的間隔)   weight 2                      #權重(即當腳本中的條件成立時權重進行修改) }
#虛擬ip的配置 vrrp_instance VI_1 {   state BACKUP       #備份服務器上將MASTER改為BACKUP   interface ens33      #網卡,及將虛擬ip綁定到哪個網卡中(ifconfig可以查看網卡)   virtual_router_id
51    #主、備機的virtual_router_id必須相同(相當於一個唯一標識)   priority 90         #主、備機取不同的優先級,主機值較大,備份機值較小   advert_int 1        #每隔多久發送一個心跳檢測服務器是否還活着,默認1秒   authentication {      #權限校驗方式,這里配置的是密碼校驗,密碼是1111     auth_type PASS     auth_pass 1111   }   virtual_ipaddress {       192.168.17.50     #綁定的虛擬ip,可以綁定多個   } }

2)在/usr/local/src添加檢測腳本nginx_check.sh(兩台虛擬機都要加)

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
  /usr/local/nginx/sbin/nginx        #啟動nginx的路徑
  sleep 2
  if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
    killall keepalived
  fi
fi

3、把兩台服務器上nginxkeepalived啟動

啟動nginx:     ./nginx

啟動keepalived:  systemctl start keepalived.service

4、最終測試 

1)在瀏覽器地址欄輸入 虛擬ip地址192.168.17.50

 說明能正常訪問;

主服務器中通過ip a命令可以看到ens33中綁定的虛擬ip

2)把主服務器(192.168.17.129nginxkeepalived停止,再輸入192.168.17.50

 再進行訪問:

還是能正常訪問,說明主服務器出現問題之后通過腳本檢查已經自動切換到了之前設置的備份服務器了

備份服務器中也輸入ip a命令可以看到此時也綁定了虛擬ip

 


免責聲明!

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



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