集羣部署——離線安裝keepalived(二)

1、 keepalived依賴的包,如何離線使用yum源,請查看前一篇文章

yum install gcc openssl-devel  libnl libnl-devel  libnfnetlink-devel net-tools  vim

在執行編譯的時候,會有提示,按照提示安裝依賴軟件即可

1、 上傳或下載 keepalived

上傳或下載 keepalived(keepalived-1.2.18.tar.gz) 到 /usr/local/ 目錄

解壓安裝

[plain] view plain copy

  1. # cd /usr/local/src  
  2. # tar -zxvf keepalived-1.2.18.tar.gz  
  3. # cd keepalived-1.2.18  
  4. # ./configure --prefix=/usr/local/keepalived  
  5. # make && make install  

將 keepalived 安裝成 Linux 系統服務

因爲沒有使用 keepalived 的默認路徑安裝(默認是/usr/local) ,安裝完成之後,需要做一些工作複製默認配置文件到默認路徑

[plain] view plain copy

  1. # mkdir /etc/keepalived  
  2. # cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/  

複製 keepalived 服務腳本到默認的地址

[plain] view plain copy

  1. # cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/  
  2. # cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/  
  3. # ln -s /usr/local/sbin/keepalived /usr/sbin/  
  4. # ln -s /usr/local/keepalived/sbin/keepalived /sbin/  

設置 keepalived 服務開機啓動

[plain] view plain copy

  1. # chkconfig keepalived on  

4、 修改 Keepalived 配置文件

(1) MASTER 節點配置文件(192.168.1.2)

[plain] view plain copy

  1. # vi /etc/keepalived/keepalived.conf  
  2. ! Configuration File for keepalived  
  3. global_defs {  
  4.     ## keepalived 自帶的郵件提醒需要開啓 sendmail 服務。 建議用獨立的監控或第三方 SMTP  
  5.     router_id liuyazhuang133 ## 標識本節點的字條串,通常爲 hostname  
  6. }   
  7. ## keepalived 會定時執行腳本並對腳本執行的結果進行分析,動態調整 vrrp_instance 的優先級。如果腳本執行結果爲 0,並且 weight 配置的值大於 0,則優先級相應的增加。如果腳本執行結果非 0,並且 weight配置的值小於 0,則優先級相應的減少。其他情況,維持原本配置的優先級,即配置文件中 priority 對應的值。  
  8. vrrp_script chk_nginx {  
  9.     script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態的腳本路徑  
  10.     interval 2 ## 檢測時間間隔  
  11.     weight -20 ## 如果條件成立,權重-20  
  12. }  
  13. ## 定義虛擬路由, VI_1 爲虛擬路由的標示符,自己定義名稱  
  14. vrrp_instance VI_1 {  
  15.     state MASTER ## 主節點爲 MASTER, 對應的備份節點爲 BACKUP  
  16.     interface eno24 ## 綁定虛擬 IP 的網絡接口,與本機 IP 地址所在的網絡接口相同, 我的是 eno24  
  17.     virtual_router_id 33 ## 虛擬路由的 ID 號,相同網段下router_id需要設置爲不同值 不同網段需要設置相同值
  18.     mcast_src_ip 192.168.1.1 ## 本機 IP 地址  
  19.     priority 100 ## 節點優先級, 值範圍 0-254, MASTER 要比 BACKUP 高  
  20.     nopreempt ## 優先級高的設置 nopreempt 解決異常恢復後再次搶佔的問題  
  21.     advert_int 1 ## 組播信息發送間隔,兩個節點設置必須一樣, 默認 1s  
  22.     ## 設置驗證信息,兩個節點必須一致  
  23.     authentication {  
  24.         auth_type PASS  
  25.         auth_pass 1111 ## 真實生產,按需求對應該過來  
  26.     }  
  27.     ## 將 track_script 塊加入 instance 配置塊  
  28.     track_script {  
  29.         chk_nginx ## 執行 Nginx 監控的服務  
  30.     } #  
  31.     # 虛擬 IP 池, 兩個節點設置必須一樣  
  32.     virtual_ipaddress {  
  33.         192.168.1.100 ## 虛擬 ip,可以定義多個  
  34.     }  
  35. }  

 

注意:############啓動keepalived後,nginx檢測可能不執行,查看日誌文件後,發現報了很多 unknow keyword, 若出現空格則需要將空格全部刪掉手動敲上,且 參數名與 "{" 之間必須存在空格vrrp_instance VI_1 { 之間必須存在空格

tail -100 /var/log/messages #命令查看日期報錯信息

※ 報錯信息中若仍報錯, shell腳本進行執行時,可能寫保護不能執行shell腳本,selinux 需要進行關閉

vi /etc/sysconfig/selinux

selinux = disabled

重啓服務

 

 

(2)BACKUP 節點配置文件(192.168.1.2) 

[plain] view plain copy

  1. # vi /etc/keepalived/keepalived.conf  
  2. ! Configuration File for keepalived  
  3. global_defs {  
  4.     router_id liuyazhuang134  
  5. }  
  6. vrrp_script chk_nginx {  
  7.     script "/etc/keepalived/nginx_check.sh"  
  8.     interval 2  
  9.     weight -20  
  10. }  
  11. vrrp_instance VI_1 {  
  12.     state BACKUP  
  13.     interface eno24  
  14.     virtual_router_id 33  
  15.     mcast_src_ip 192.168.1.2  
  16.     priority 90  
  17.     advert_int 1  
  18.     authentication {  
  19.         auth_type PASS  
  20.         auth_pass 1111  
  21.     }  
  22.     track_script {  
  23.         chk_nginx  
  24.     }  
  25.     virtual_ipaddress {  
  26.         192.168.1.100  
  27.     }  
  28. }  

5、 編寫 Nginx 狀態檢測腳本

編寫 Nginx 狀態檢測腳本 /etc/keepalived/nginx_check.sh (已在 keepalived.conf 中配置)腳本要求:如果 nginx 停止運行,嘗試啓動,如果無法啓動則殺死本機的 keepalived 進程, keepalied將虛擬 ip 綁定到 BACKUP 機器上。 內容如下:

[plain] view plain copy

#!/bin/bash

#時間變量,用於記錄日誌

d=`date +%Y%m%d_%H:%M:%S`

#計算nginx進程數量

n=`ps -C nginx --no-heading|wc -l`

#如果進程爲0,則啓動nginx,並且再次檢測nginx進程數量,

#如果進程還爲0,說明nginx無法啓動,此時需要關閉keepalived

if [ $n -eq "0" ]; then

systemctl start nginx

n2=`ps -C nginx --no-heading|wc -l`

if [ $n2 -eq "0" ]; then

echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log

systemctl stop keepalived

fi

fi

 

保存後,給腳本賦執行權限: 

[plain] view plain copy

  1. # chmod +x /etc/keepalived/nginx_check.sh  

6、 啓動 Keepalived

[plain] view plain copy

  1. # service keepalived start  
  2. Starting keepalived: [ OK ]  

7、查看keepalived生成的VIP信息

使用 ip addr命令查看生成的VIP信息,ifconfig命令不顯示VIP信息

我們可以看到在eno24網口生成了一個VIP,就是配置文件中配置的訪問的vip地址。可能出現未能生成vip的情況,將SELinux關閉。重啓服務。修改selinux的配置文件,重啓後生效。

 

 

打開 selinux 配置文件

[root@localhost ~]# vim /etc/selinux/config

修改 selinux 配置文件

將SELINUX=enforcing改爲SELINUX=disabled,保存後退出

重啓

[root@localhost ~]# reboot

驗證

[root@localhost ~]# /usr/sbin/sestatus SELinux status: disabled [root@localhost ~]# getenforce Disabled

7、測試訪問

訪問 http://192.168.1.100:80

 

 

這兩個tomcat主頁是兩臺應用服務器下的tomcat服務器,一臺是8080,8081,8082 一臺是8083,8084,8085,通過訪問統一VIP 192.168.1.100,訪問到了ngnix服務再轉發到配置的應用服務。

 

任意關閉其中的某臺nginx服務,訪問仍然可以訪問的到,說明keepalived實現了nginx服務器的高可用,可自動檢測nginx服務狀態,進行訪問節點的漂移

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章