centos7中安裝和配置nginx和keepalived


一.Linux安裝nginx

1.安裝依賴

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

2.創建一個文件夾

cd /usr/local
mkdir nginx
cd nginx

3.將nginx安裝包放在nginx文件夾下並解壓

或者使用wget聯網下載

wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -xvf nginx-1.16.1.tar.gz

4.編譯並make

cd nginx-1.16.1
./configure --prefix=/usr/local/naginx
make
make install

常用命令

 #啟動
/usr/local/nginx/sbin/nginx  
#修改配置文件重新加載
/usr/local/nginx/sbin/nginx  -s reload  
#關閉
/usr/local/nginx/sbin/nginx

二:安裝Keepalived

1.聯網下載到/usr/local目錄下並解壓

有可能會提示連接不成功,加上它提示的命令再下載就好了

cd /usr/local
wget http://www.keepalived.org/software/keepalived-1.4.2.tar.gz

tar zxvf keepalived-1.4.2.tar.gz

2.安裝相關依賴,有不用下載了

yum install -y gcc openssl-devel popt-devel

3.編譯

cd keepalived-1.4.2

./configure --prefix=/usr/local/keepalived

make

make install

4.相關配置,復制就完了

cp /usr/local/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

使用keepalived保證nginx的高可用(一主一從)

我的主服務器ip為(192.168.118.3),從機(192.168.118.5)

在兩條服務器分別安裝nginx和keepalived,

修改keeplived.conf文件

vim /etc/keepalived/keepalived.conf

主機配置文件

! Configuration File for keepalived

global_defs {
    #一個沒重復的名字即可
    router_id LVS_DEVEL        
}

# 檢測nginx是否運行
vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh"
        interval 2
#權重減少20,減少完要比從機的值小 weight -20 } vrrp_instance VI_1 { # MASTER代表主機 state MASTER # 網卡名字 ip addr 可以查看 interface eno16777736 # 同一個keepalived集群的virtual_router_id相同 virtual_router_id 51 # 權重,master要大於slave priority 100 # 主備通訊時間間隔 advert_int 1 # 如果兩節點的上聯交換機禁用了組播,則采用vrrp單播通告的方式 # 本機ip unicast_src_ip 192.168.118.3 unicast_peer { # 其他機器ip 192.168.118.5 } # 設置nopreempt防止搶占資源 nopreempt # 主備保持一致 authentication { auth_type PASS auth_pass 1111 } # 與上方nginx運行狀況檢測呼應 track_script { chk_nginx } virtual_ipaddress { # 虛擬ip地址(VIP,一個尚未占用的內網ip即可) 192.168.118.118 } }

從機配置文! Configuration File for keepalived


global_defs {
    #一個沒重復的名字即可
    router_id LVS_DEVEL
}

# 檢測nginx是否運行
vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh"
        interval 2
weight -20 } vrrp_instance VI_1 { # 代表是從機 state BACKUP # 網卡名字,ip addr獲取 interface eno16777736 # 同一個keepalived集群的virtual_router_id相同 virtual_router_id 51 # 權重,master要大於slave priority 90 # 主備通訊時間間隔 advert_int 1 # 如果兩節點的上聯交換機禁用了組播,則采用vrrp單播通告的方式 # 本機ip unicast_src_ip 192.168.118.5 unicast_peer { # 其他機器ip 192.168.118.3 } # 設置nopreempt防止搶占資源 nopreempt # 主備保持一致 authentication { auth_type PASS auth_pass 1111 } # 與上方nginx運行狀況檢測呼應 track_script { chk_nginx } virtual_ipaddress { # 虛擬ip地址(VIP,一個尚未占用的內網ip即可) 192.168.118.118 } }

主從機都需配置檢測nginx是否在運行,不在允許就直接啟動nginx的腳本,和keepalived放在一起

腳本名稱 nginx_check.sh

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

只要配置好了,以后直接啟動keepalived就好了,keepalived運行之后就會檢測nginx是否在運行,不在運行就通過腳本去啟動

自動重啟不了解決方案

查看腳本是否有運行的權限
如果你是root登陸的話(不是的話,切換到root用戶,對*.sh 賦可執行的權限)

chmod 777*.sh
或者
chmod +x *.sh

keepalived常用命令

#啟動
service keepalived start
#停止
service keepalived stop
#查看狀態
service keepalived status

開始測試

直接訪問主機的nginx服務

 

 直接訪問從機的nginx服務

 

 通過keepalived 設置的虛擬ip進行訪問

 

 一切正常,將主機的keepalived服務給停掉,模擬服務器宕機的場景

然后再通過虛擬IP進行訪問

 

 成功切換到備用服務器

接下來重啟主服務器,再訪問虛擬ip

 

 由此可見,當主機dowm掉的時候才會訪問從機,當主機連進來的時候又回去訪問主機

當主機正常運行通過ip addr命令的時候可以看到網絡下多了個虛擬ip,而從機卻沒有,只要當主機掛了時候從機才會顯示xuniip

 


免責聲明!

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



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