注:實際上可以去掉nginx這一層,使用keepalived部署4節點。(德邦這邊因爲一開始部署的是雙nginx,後續需要修改)
一、需求
1)高可用環境
兩個nginx節點、兩個cmp節點、主主數據庫
2)使用vip地址訪問cmp服務
配置nginx+keepalived服務
二、nginx、cmp安裝,mysql雙主模式配置
三、相關環境
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目錄下
libnl-3.so.200
libnl-genl-3.so.200
2)重啓keepalived服務
2.keepalived.conf文件中的網卡配錯了,需要將eth0改爲ens192
解決方法:
1)使用ifconfig查看網絡配置
2)修改keepalived.conf文件,配置正確的網絡接口
3)重啓keepalived服務