模擬環境: 準備兩臺Centos環境linux
Master:10.10.30.100 Backup:10.10.30.101 VIP : 10.10.30.30
安裝Nginxnginx
一. gcc 安裝 安裝 nginx 須要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境,若是沒有 gcc 環境,則須要安裝: yum install gcc-c++ 二. PCRE pcre-devel 安裝 PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,因此須要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也須要此庫。命令: yum install -y pcre pcre-devel 三. zlib 安裝 zlib 庫提供了不少種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,因此須要在 Centos 上安裝 zlib 庫。 yum install -y zlib zlib-devel 四. OpenSSL 安裝 OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、經常使用的密鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程序供測試或其它目的使用。 nginx 不只支持 http 協議,還支持 https(即在ssl協議上傳輸http),因此須要在 Centos 安裝 OpenSSL 庫。 yum install -y openssl openssl-devel 下載安裝包: wget http://nginx.org/download/nginx-1.10.3.tar.gz 解壓 tar zxvf nginx-1.10.3.tar.gz cd nginx-1.10.3 ./configure --prefix=/usr/local/server/nginx make && make install 進入/usr/local/nginx/conf/nginx.conf修改配置文件 進入/usr/local/nginx/sbin/nginx 啓動nginx
安裝keepalived (兩臺Centos機器都要安裝keepalived)c++
1.安裝keepalived正則表達式
yum install -y keepalived
2.編輯keepalived.conf算法
進入keepalived.conf所在目錄:cd /etc/keepalived 首先清除掉keepalived原有配置:> keepalived.conf 從新編輯keepalived配置文件:vi keepalived.conf
在10.10.30.100(Master)中的keepalived.conf中進行以下配置: 安全
! Configuration File for keepalived global_defs { ## keepalived 自帶的郵件提醒須要開啓 sendmail 服務。 建議用獨立的監控或第三方 SMTP router_id tyd133 ## 標識本節點的字條串,一般爲 hostname } ## keepalived 會定時執行腳本並對腳本執行的結果進行分析,動態調整 vrrp_instance 的優先級。若是腳本執行結果爲 0,而且 weight 配置的值大於 0,則優先級相應的增長。若是腳本執行結果非 0,而且 weight配置的值小於 0,則優先級相應的減小。其餘狀況,維持本來配置的優先級,即配置文件中 priority 對應的值。 vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態的腳本路徑 interval 2 ## 檢測時間間隔 weight -20 ## 若是條件成立,權重-20 } ## 定義虛擬路由, VI_1 爲虛擬路由的標示符,本身定義名稱 vrrp_instance VI_1 { state MASTER ## 主節點爲 MASTER, 對應的備份節點爲 BACKUP interface enp0s3 ## 綁定虛擬 IP 的網絡接口,與本機 IP 地址所在的網絡接口相同, 個人是 eth0 virtual_router_id 33 ## 虛擬路由的 ID 號, 兩個節點設置必須同樣, 可選 IP 最後一段使用, 相同的 VRID 爲一個組,他將決定多播的 MAC 地址 mcast_src_ip 10.10.30.100 ## 本機 IP 地址 priority 100 ## 節點優先級, 值範圍 0-254, MASTER 要比 BACKUP 高 nopreempt ## 優先級高的設置 nopreempt 解決異常恢復後再次搶佔的問題 advert_int 1 ## 組播信息發送間隔,兩個節點設置必須同樣, 默認 1s ## 設置驗證信息,兩個節點必須一致 authentication { auth_type PASS auth_pass 1111 ## 真實生產,按需求對應該過來 } ## 將 track_script 塊加入 instance 配置塊 track_script { chk_nginx ## 執行 Nginx 監控的服務 } # # 虛擬 IP 池, 兩個節點設置必須同樣 virtual_ipaddress { 10.10.30.30 ## 虛擬 ip,能夠定義多個 } }
在10.10.30.101(Backup)的keepalived.conf中進行以下配置:bash
! Configuration File for keepalived global_defs { router_id tyd134 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } vrrp_instance VI_1 { state BACKUP interface enp0s3 virtual_router_id 33 mcast_src_ip 10.10.30.101 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 10.10.30.30 } }
檢測nginx的腳本check_nginx.sh網絡
# vi /etc/keepalived/nginx_check.sh #!/bin/bash A=`ps -C nginx –no-header |wc -l` if [ $A -eq 0 ];then /usr/local/server/nginx/sbin/nginx sleep 2 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi
放到/etc/keepalived/目錄下(兩臺Centos都要放)測試
給nginx_check.sh賦予執行權限:code
chmod +x /etc/keepalived/nginx_check.sh
啓動keepalived進行測試:
systemctl start keepalived.service
訪問:10.10.30.30
能夠看到成功訪問到nginx頁面
測試高可用
關閉10.10.30.100的nginx服務
再次訪問10.10.30.30,一樣輸出nginx頁面,說明此時訪問的是10.10.30.101的nginx,說明咱們的keepalived+nginx高可用搭建成功