keeplied + nginx +tomcat 高可用部署

abin1703發表於2020-03-15

 

 

Tomcat 部署

 

本次實驗是在兩臺虛擬機器上部署tomcat中介軟體,每臺虛擬機器部署三個服務,分別使用7001、7002、7003三個埠,進行部署程式。

tomcat虛擬機器地址:

192.168.56.57

192.168.56.58

 

 

Tomcat7001配置:

進入到tomcat配置檔案,進行修改埠引數

 

 

將業務埠更改成7001埠,對外部瀏覽器訪問使用

 

將程式關閉的埠更改成8006 埠,該埠對內部使用。

 

其他幾個服務相應的去更改tomcat埠。

 

 

 

Nginx配置

 

本次反向代理使用的是軟負載nginx進行代理,分別使用了兩臺虛擬進行主備切換,保證業務正常使用。

 

Nginx 兩臺伺服器地址為:

192.168.56.55

192.168.56.56

 

Nginx 配置:

本次nginx 安裝在/usr/local/nginx目錄下面

 

Nginx配置檔案更改:

[root@edsir1p8 conf]# cat nginx.conf

worker_processes  4;

 

error_log  logs/error.log;

 

pid       logs/nginx.pid;

 

 

events {

    use epoll;

    worker_connections  65000;

}

 

http {

    include       mime.types;

    default_type  application/octet-stream;

 

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

 

 log_format json '{"@timestamp":"$time_iso8601",'

             '"@version":"1",'

             '"client":"$remote_addr",'

             '"url":"$uri",'

             '"status":"$status",'

             '"domian":"$host",'

             '"host":"$server_addr",'

             '"size":"$body_bytes_sent",'

             '"responsetime":"$request_time",'

             '"referer":"$http_referer",'

             '"ua":"$http_user_agent"'

          '}';

 

 

    sendfile        on;

include   weixin.vhost.conf;

}

 

 

[root@edsir1p8 conf]# cat weixin.vhost.conf

upstream weixin {

#     ip_hash;

       server 192.168.56.57:7001 weight=1;

       server 192.168.56.57:7002 weight=1;

       server 192.168.56.57:7003 weight=1;

       server 192.168.56.58:7001 weight=1;

       server 192.168.56.58:7002 weight=1;

       server 192.168.56.58:7003 weight=1;

}

server {

      listen 80;

      server_name localhost;

 

       location / {

#     include proxy_common.conf;

       proxy_pass http:// weixin;

       }

      access_log logs/weixin_access.log;

}

 

透過瀏覽器驗證

 

至此反向代理配置成功。

 

 

Keepalived 配置

 

安裝 Keepalived

 

      本次實驗將 keepalived nginx 安裝在一臺伺服器上。

192.168.56.55

192.168.56.56

 

完成上述步驟之後 keepalived 已經可以實現虛擬 IP 轉移了,但是實際應用當中我們需要的是自動進行虛擬 IP 的轉移,所以我們還需要配置 keepalived 的指令碼,使其能夠在某一個 nginx 無法提供服務的時候自動將虛擬 IP 轉移到備用伺服器,以下指令碼來自於上邊提供的連結 , 原理是透過 curl 訪問某一個連結,如果連續兩次三秒沒有響應則降低伺服器的優先順序,我們在 /etc/keepalived 目錄下建立一個名為 check_status.sh 的檔案,然後鍵入以下內容

 

#!/bin/bash

count=0

for (( k=0; k<2; k++ )) do check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" -o /dev/null )

if [ " $check_code " != "200" ]; then

count=$(expr $count + 1)

sleep 3

continue

else

count=0

break

fi

done

if [ " $count " != "0" ]; then

exit 1

else

exit

0

Fi

 

chmod +x check_status.sh

 

後我們在 keepalived.conf 中配置指令碼,配置內容如下 :

 

vrrp_script check_status

{

script "/etc/keepalived/check_status.sh"

interval 5

weight -5

}

vrrp_instance VI_1

{ state MASTER  # keepalived 填寫 BACKUP

interface eth0

  virtual_router_id 51

priority 100 # keepalived 填寫 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111 }

virtual_ipaddress {

192.168.56.100

}

track_script {

check_status

}

}

 

 

配置完成後重啟 keepavlied 即可,此時如果關閉本機的 nginx 的話可以看到在 5 秒後虛擬 IP 會漂移到備用伺服器上去,這裡因為演示的話圖片太多了,就不上圖片了, nginx 退出可以執行 nginx -s stop 命令,如果是使用 yum 安裝的 nginx 可以透過 systemctl 來停止 nginx 服務

 

 

模擬主nginx當機

[root@edsir1p8 conf]# killall nginx

 

繼續訪問虛擬地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30345407/viewspace-2680427/,如需轉載,請註明出處,否則將追究法律責任。

相關文章