keepalived+nginx實現高可用+tomcat
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