1. 程式人生 > >keepalived+nginx實現高可用+tomcat

keepalived+nginx實現高可用+tomcat

pro location add protoc ins ade 要求 網卡 fire

1、keepalived的yum安裝

安裝依賴包
[root@localhost ~]# yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel
[root@localhost ~]# yum install -y keepalived

2、nginx安裝(省略)

3、tomcat部署(省略)

4、nginx配置文件:每個nginx的配置都是一樣的。註意location /njm1/test1 。可以看我另一篇關於nginx+springboot的文章

技術分享圖片

5:主keepalived的配置

技術分享圖片

6:備keepalived的配置

技術分享圖片

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

# vi /etc/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


保存後,給腳本賦執行權限:
# chmod +x /etc/keepalived/nginx_check.sh(賦完權後sh文件會變綠色)

7、要使nopreempt生效,需要做如下操作

inux下設置允許keepalived組播(主備都要執行如下命令)

centos防火墻默認是不允許keepalived使用 vrrp的組播,如果不開啟組播ip,keepalived雙機不能實現熱備的效果,只能實現負載的效果,即虛擬ip不能實現漂移。

熱備:當主keepalived掛掉時,虛擬Ip會漂移到備用的keepalived上。當主的keepalived啟用是,虛擬ip再次回到主的keepalived上。

防火墻開啟keepalived使用組播ip執行一下命令:

centos7使用一下命令:

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eno16777736 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

firewall-cmd --reload

紅色標記eno16777736是指的服務器的網卡名稱,INPUT代表接收224.0.0.18的報文,使用 ip a 命令查看.

8、訪問vip(虛擬ip)

註意:我的nginx訪問為www.njm1.com

技術分享圖片

比如我的vip為192.168.177.200。nginx的ip為192.168.177.136。

通過nginx訪問我的tomcat:192.168.177.136/njm1/test1/index_html(訪問不到),因為我綁定了域名:www.njm1.com/njm1/test1/index_html(這樣就可以訪問)

記得在你的windows配置域名解析:

技術分享圖片

通過vip訪問我的tomcat:

因為nginx綁定了域名www.njm1.com。所以如果我們要通過vip訪問,就要將此域名解析到vip這個ip地址(192.168.177.200)

技術分享圖片

9、通過如上設置,就可以讓vip在nginx之間漂移了~~~可以測試:例如同時開啟主備keepalived,訪問www.njm1.com。訪問到的肯定是主keep。然後stop主keep,停掉後,vip就會飄去備keep~~。再訪問www.njm1.com。就是備keep了。

當我們再啟動主keep,因為配置了nopreempt屬性。備keep會讓vip飄回主keep~~

keepalived+nginx實現高可用+tomcat