keepalived+Nginx實現高可用集羣

keepalived安裝
Nginx安裝

配置keepalived
#修改配置
vim /etc/keepalived/keepalived.conf

    #配置文件
    ! Configuration File for keepalived

    global_defs {
       #從服務器最改一下這個
       router_id node1 #表示運行keepalived服務器的一個標識。發郵件時顯示在郵件主題的信息
    }
    #監控服務.NGINX mysql等
    vrrp_script chk_nginx {
        script "/usr/local/keepalived/check_nginx.sh"
        #每2s檢查一次
        interval 2
        #每次檢查-20
        weight -20
    }
    vrrp_instance VI_1 {
        ##主從設置 MASTER/BACKUP  
        state MASTER
        #網卡名稱
        interface eth0
        #同一個集羣下這個 router_id是一樣的
        virtual_router_id 51
        #本機的ip,需要修改
        mcast_src_ip 192.168.100.10 
        #優先級,從節點 配置,需要小於主節點
        priority 100
        #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
        advert_int 1
        #認證的密碼
        authentication {
            auth_type PASS
            #設定授權密碼,密碼相同的爲一個集羣
            auth_pass yellowcong
        }
        #觸發的腳本
        track_script {
            chk_nginx  #檢測腳本,上面配置的
        }
        #虛擬ip地址
        virtual_ipaddress {
            192.168.0.100
            192.168.0.101
        }
    }

下面是腳本內容,用來進行nginx是否存活的監測
#創建並賦予權限
touch check_nginx.sh && chmod a+x check_nginx.sh

#編輯文件
vim check_nginx.sh

#################下面是內容####################
#!/bin/bash

COUNT=$(ps -C nginx --no-header |wc -l)

echo $COUNT

#判斷Nginx 是否都掛掉了
if [ $COUNT -eq 0 ]
then
        #如果掛掉了,就啓動nginx
        /usr/local/nginx/sbin/nginx
        echo "重啓nginx"

        #等5秒鐘後,再次查看是否 啓動成功
        sleep 3

        #如果nginx沒有啓動起來,就直接幹掉keepalived
        COUNT=$(ps -C nginx --no-header |wc -l)
        if [ $COUNT -eq 0 ]
        then
                echo "幹掉keepalived"
                #如果killall命令不能使用,就需要安裝psmisc工具了
                #yum install -y psmisc
                killall keepalived
        fi
fi

Nginx 配置
vim /usr/local/nginx/conf/nginx.conf
#配置完成一個後,直接將另一個拷貝就可以了

#################配置的內容###############

#user  nobody;
#配置的線程數目和cpu處理器的核心數目一致
worker_processes  2;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    #負載均衡
    upstream webapp{
         server 192.168.100.11:8080 weight=1 max_fails=2 fail_timeout=30s;
         server 192.168.100.11:8081 weight=1 max_fails=2 fail_timeout=30s;
         server 192.168.100.10:8081 weight=1 max_fails=2 fail_timeout=30s;
         server 192.168.100.10:8081 weight=1 max_fails=2 fail_timeout=30s;
    }
    server {
        listen       80;
        server_name  localhost;

        #地址匹配
        location / {
            #root   html;
            #index  index.html index.htm;
            proxy_set_header X-real-ip $remote_addr;
            proxy_pass http://webapp;
        }

        #錯誤頁面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

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