keepalived+nginx部署高可用環境

                                        德邦證券使用keepalived+nginx部署高可用環境

 

注:實際上可以去掉nginx這一層,使用keepalived部署4節點。(德邦這邊因爲一開始部署的是雙nginx,後續需要修改)

 

一、需求

1)高可用環境

兩個nginx節點、兩個cmp節點、主主數據庫

2)使用vip地址訪問cmp服務

配置nginx+keepalived服務

二、nginx、cmp安裝,mysql雙主模式配置

參考:華安證券——cmp高可用部署

三、相關環境

vip nginx:192.168.7.88

vip 數據庫:192.168.7.89

nginx:192.168.7.69、192.168.7.70

cmp:192.168.7.71、192.168.7.72

mysql:192.168.7.73、192.168.7.74

四、在Nginx節點安裝和配置keepalived

1.安裝keepalived

方式一:yum安裝

yum install -y keepalived

方式二:rpm安裝

1)rpm -ivh keepalived-1.3.5-8.el7_6.x86_64.rpm --force --nodeps

2)將缺少的庫文件放入/usr/lib64和/usr/lib目錄下

libnetsnmpmibs.so.31

libnetsnmpagent.so.31

libnl-3.so.200

libnl-genl-3.so.200

2.keepalived服務開機自啓動

chkconfig keepalived on

3.修改配置文件keepalived.conf

注:這裏配置的是主備模式

nginx主節點:

vi /etc/keepalived/keepalived.conf

MASTER:nginx-1

 

cat <<EOF > /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

   router_id nginx-1

}

 

vrrp_script chk_nginx {

    script "/opt/chk_nginx.sh"

    interval 2

    weight -5

    fall 2

    rise 1

}

 

vrrp_instance VI_1 {

    state MASTER

    interface eth0   #指定HA監測網絡的接口  ifconfig 查看

    mcast_src_ip 192.168.7.69   #本機IP

    virtual_router_id 88   #虛擬路由

    priority 101  #優先級

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.7.88   #vip

    }

 

    track_script {

       chk_nginx

    }

}

EOF

nginx從節點:

vi /etc/keepalived/keepalived.conf

BACKUP:nginx-2

 

cat <<EOF > /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

   router_id nginx-2

}

 

vrrp_script chk_http_port {

    script "/opt/chk_nginx.sh"

    interval 2

    weight -5

    fall 2

    rise 1

}

 

vrrp_instance VI_1 {

    state BACKUP

    interface eth0   #指定HA監測網絡的接口  ifconfig 查看

    mcast_src_ip 192.168.7.70   #本機IP

    virtual_router_id 88   #虛擬路由

    priority 99  #優先級

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.7.88   #vip

    }

 

    track_script {

       chk_http_port

    }

}

EOF

4.keepalived監控Nginx腳本

1)讓keepalived監控Nginx的狀態

vi /opt/chk_nginx.sh

 

#!/bin/bash

counter=$(ps -C nginx --no-heading|wc -l)

echo "$counter"

if [ "${counter}" = "0" ]; then

    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

    sleep 2

    counter=$(ps -C nginx --no-heading|wc -l)

    if [ "${counter}" = "0" ]; then

        /etc/init.d/keepalived stop

    fi

fi

2)設置腳本文件的權限並測試

chmod 755 /opt/chk_nginx.sh

sh /opt/chk_nginx.sh

5.keepalived服務相關命令

service keepalived start   #啓動服務

service keepalived stop    #停止服務

service keepalived restart #重啓服務

五、在Mysql節點安裝和配置keepalived

1.安裝和配置keepalived

與nginx配置keepalived大同小異,略。

2.keepalived監控Mysql腳本

1)讓keepalived監控Mysql的狀態

vi /opt/chk_mysql.sh

 

#!/bin/bash

counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)

echo "$counter"

if [ "${counter}" -eq "0" ]; then

    /etc/init.d/keepalived stop

fi

2)設置腳本文件的權限並測試

chmod 755 /opt/chk_mysql.sh

sh /opt/chk_mysql.sh

3.驗證keepalived服務

1)在mysql兩個節點上使用命令查看是否能連接數據庫

mysql -uroot -p -P3306 -h192.168.7.89

2)如果不能連接,有以下原因:

  • keepalived服務配置失敗
  • 端口不通

4.修改cmp節點的配置文件

1)將fit2cloud.properties、keycloak.properties中的數據庫服務器地址改成mysql的vip地址

2)重啓cmp服務

service fit2cloud restart

參考:https://blog.csdn.net/miss1181248983/article/details/89139951

六、配置keepalived日誌

1.編輯系統日誌配置文件

注:centos7以上是rsyslog

1) 在最後一行加上下面的配置

vim /etc/rsyslog.conf

 

local4.*                                                /etc/keepalived/logs/keepalived.log

 

2) 重啓系統日誌服務

service rsyslog restart

2.編輯keepalived服務文件

1)修改最後一行的配置

vi /etc/sysconfig/keepalived

 

#KEEPALIVED_OPTIONS="-D"

KEEPALIVED_OPTIONS="-D -d -S 4"

 

2)重啓keepalived服務

service keepalived restart

3.查看keeaplived日誌

tail -f /etc/keepalived/keepalived.log

參考:https://blog.csdn.net/weiyuefei/article/details/78131509

七、驗證keepalived服務

1)在主節點使用ip a查看,發現eth0網絡接口下多了一個IP(vip地址)

2)關閉主節點的keepalived服務,使用ip a查看發現vip不在eth0下面了;在從節點使用ip a查看,發現eth0網絡接口下多了一個IP(vip地址)

圖略

3)重啓主節點的keepalived服務,使用ip a查看發現vip地址又回到了主節點eth0下面

4)keepalived配置成功

可以通過vip地址訪問cmp服務:http://192.168.7.88

八、注意事項

1.在同一個網段內的,若爲不同的應用做高可用,不同應用使用不同的VIP,那麼vrrp_instance、virtual_router_id的名字在不同的高可用實例必須設置不同的值區分開。

2.主備模式的keepalived設置優先級:設置priority的值,主節點的值設置的大一些,主備節點的優先級的值差距不要太大。

3.nginx不要缺少了重定向配置:

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

九、安裝和配置keepalived服務常見問題

1.離線安裝keepalived缺少庫文件

解決方法:

1)將缺少的庫文件放入/usr/lib64目錄下

libnetsnmpmibs.so.31

libnetsnmpagent.so.31

libnl-3.so.200

libnl-genl-3.so.200

2)重啓keepalived服務

2.keepalived.conf文件中的網卡配錯了,需要將eth0改爲ens192

解決方法:

1)使用ifconfig查看網絡配置

2)修改keepalived.conf文件,配置正確的網絡接口

3)重啓keepalived服務

 

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