1. 程式人生 > >Keepalived+nginx高可用及+Tomcat負載均衡叢集以及動靜分離

Keepalived+nginx高可用及+Tomcat負載均衡叢集以及動靜分離

概括:主要是利用keepalivednginx的高可用 再用nginxtomcat Web的負載均衡。總體拓撲圖如下:

 

高可用部分

第一步:安裝部署nginx

[[email protected] ~]# useradd nginx -s /sbin/nologin -M

[[email protected] ~]# tar -xf nginx-1.13.8.tar.gz

[[email protected] ~]# cd nginx-1.13.8/

[[email protected] ~]# ./configure

--prefix=/usr/local/nginx

--user=nginx

--group=nginx

--with-http_ssl_module

--with-http_v2_module

--with-http_stub_status_module

--with-pcre

--with-http_mp4_module

--with-http_flv_module

[[email protected] ~]# make&&make install

檢查nginx已經啟動


為了實驗的正常進行,我們可以先將防火牆關閉

[[email protected] ~]# systemctl stop firewalld

為了方便佔時將網頁做個變更如下

 

1、原始碼安裝

keepalived,以下所有的必須在兩臺伺服器上安裝部署

[[email protected] ~]# tar -xf keepalived-2.0.0.tar.gz

[[email protected] ~]# cd keepalived-2.0.0

[[email protected] keepalived-2.0.0]# ./configure --prefix=/usr/local/keepalived

[[email protected] keepalived-2.0.0]# make&&make install

2、將配置檔案放到預設路徑下

[[email protected]

keepalived-2.0.0]# mkdir /etc/keepalived   

[[email protected] keepalived-2.0.0]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

3、複製 keepalived 服務指令碼到預設的地址

[[email protected] keepalived-2.0.0]# cp /root/keepalived-2.0.0/keepalived/etc/init.d/keepalived /etc/init.d/keepalived

[[email protected] keepalived-2.0.0]# chmod +x /etc/init.d/keepalived

[[email protected] keepalived-2.0.0]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

[[email protected] keepalived-2.0.0]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

4、設定開機啟動:

[[email protected] keepalived-2.0.0]# systemctl enable keepalived

Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

5、修改配置檔案

Master伺服器的配置檔案

# vi /etc/keepalived/keepalived.conf  

! Configuration File for keepalived  

global_defs {  

   ## keepalived 自帶的郵件提醒需要開啟 sendmail 服務。建議用獨立的監控或第三方 SMTP  

    router_id liuyazhuang133 ## 標識本節點的字條串,通常為 hostname  

}   

## keepalived 會定時執行指令碼並對指令碼執行的結果進行分析,動態調整 vrrp_instance 的優先順序。如果指令碼執行結果為 0,並且 weight 配置的值大於 0,則優先順序相應的增加。如果指令碼執行結果非 0,並且 weight配置的值小於 0,則優先順序相應的減少。其他情況,維持原本配置的優先順序,即配置檔案中 priority 對應的值。

vrrp_script chk_nginx {  

    script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態的指令碼路徑

    interval 2 ## 檢測時間間隔

    weight -20 ## 如果條件成立,權重-20  

}  

## 定義虛擬路由, VI_1 為虛擬路由的標示符,自己定義名稱

vrrp_instance VI_1 {  

    state MASTER ## 主節點為 MASTER對應的備份節點為 BACKUP  

    interface ens33 ## 繫結虛擬 IP 的網路介面,與本機 IP 地址所在的網路介面相同,我的是ens33 

    virtual_router_id 33 ## 虛擬路由的 ID 號,兩個節點設定必須一樣,可選 IP 最後一段使用相同的 VRID 為一個組,他將決定多播的 MAC 地址

    mcast_src_ip 192.168.1.104 ## 本機 IP 地址

    priority 100 ## 節點優先順序,值範圍 0-254 MASTER 要比 BACKUP 

    nopreempt ## 優先順序高的設定 nopreempt 解決異常恢復後再次搶佔的問題

    advert_int 1 ## 組播資訊傳送間隔,兩個節點設定必須一樣,預設 1s  

    ## 設定驗證資訊,兩個節點必須一致

    authentication {  

        auth_type PASS  

        auth_pass 1111 ## 真實生產,按需求對應該過來

    }  

    ##  track_script 塊加入 instance 配置塊

    track_script {  

        chk_nginx ## 執行 Nginx 監控的服務

    } #  

    # 虛擬 IP 兩個節點設定必須一樣

    virtual_ipaddress {  

        192.168.1.110  ## 虛擬 ip,可以定義多個

    }  

}

Backup伺服器配置檔案

! Configuration File for keepalived

global_defs {

    router_id 103

}

vrrp_script chk_nginx {

    script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態的指令碼路徑  

    interval 2 ## 檢測時間間隔  

    weight -20 ## 如果條件成立,權重-20  

}

vrrp_instance VI_1 {

    state BACKUP

    interface ens33

    virtual_router_id 51

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

   track_script {

        chk_nginx ## 執行 Nginx 監控的服務  

    }

  virtual_ipaddress {

        192.168.1.110

    }

}

6、編寫 Nginx 狀態檢測指令碼

[[email protected] keepalived-2.0.0]# vim /etc/keepalived/nginx_check.sh

#!/bin/sh

nginxPidNum=`ps -C nginx --no-header |wc -l`

keepalivedPidNum=`psi -C keepalived --no-header |wc -l`

if [ $nginxPidNum -eq 0 ];then

    /usr/bin/pkill keepalived

elif [ $keepalivedPidNum -eq 0 ];then

    service keepalived start

fi

[[email protected] keepalived-2.0.0]# chmod +x /etc/keepalived/nginx_check.sh

7、此時可以啟動keepalived了:


8、此時可以通過ip addr 命令檢視VIP的情況

Master伺服器的情況


Backup伺服器的情況


瀏覽器訪問192.168.1.110,此時出現的是第一臺伺服器的網頁


8、測試

我們可以嘗試關閉主伺服器上nginx觀看情況如下:

Master主機如下

 

Backup如下:

 

訪問virtual_ip後得到第二個頁面:

 

我們嘗試關閉backup伺服器的nginx,現實環境中則要求我們發現主伺服器上的nginx停止後及時修復,解決問題,防止從服務出現問題時無法正常跳轉,同時我們可以搭建第三個臨時的backup2,應現實情況而言,出現情況與之前的一樣,

至此整個高可用部分已經部署完畢

第三部分,部署tomcat的負載均衡

2、修改nginx服務的配置檔案

httpd內新增如下,

        upstream tomcats {

        ip_hash;

        server 192.168.1.97:8080;

        server 192.168.1.158:8080;

}

server內新增如下

        location / {

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header REMOTE-HOST $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

        #靜態檔案交給nginx處理

        location ~.*\.(html|jpg|jpeg|png|bmp|gif|ico|mp3|mid|wma|mp4|swf|flv|rar|zip|txt|doc|ppt|xls|pdf)$ {
            proxy_pass http://tomcats;
            expires     7d;
        }

之後重啟nginx,重啟後我們再訪問192.168.1.110,得到如下(為了區分將兩個tomcat部署不同的版本如下)

第一次訪問如下,點選重新整理

 

點選重新整理,第二次如下






相關推薦

Keepalived+nginx可用+Tomcat負載均衡叢集以及動靜分離

概括:主要是利用keepalived做nginx的高可用 再用nginx做tomcat Web的負載均衡。總體拓撲圖如下: 高可用部分第一步:安裝部署nginx[[email protected] ~]# useradd nginx -s /sbin/nologin

keepalived+nginx實現HA可用的web負載均衡

Keepalived 是一種高效能的伺服器高可用或熱備解決方案, Keepalived 可以用來防止伺服器單點故障的發生,通過配合 Nginx 可以實現 web 前端服務的高可用。Keepalived 以 VRRP 協議為實現基礎,用 VRRP 協議來實現高可用性(HA)。 VRRP(Virtual Rout

keepAlived+Nginx 可用性(非搶佔)負載均衡

前言 一直以來都想自己來做一個完整的應用,從網路架構到技術架構,最近一段時間覺得生活不能再窮困了,於是,趁現在還有時間,決定自己來搭一個完整的專案。千里之行,始於足下。 正題 - 負載均衡設計 Nginx+keepAlived方案:負載層

keepalived雙主模式實現nginx可用LNAMMP架構

keepalived nginx lnammpkeepalived雙主模式實現nginx高可用及LNAMMP架構一、利用keepalived實現nginx調度器高可用;二、構建LNAMMP架構: 1) Nginx既是前端調度器,又是緩存服務器; 2) 將php的session緩存於memcached中;

nginx 配置多域名 tomcat 負載均衡

上回建立了 test.tomcat.com —— nginx —— 8080 8081 缺點在於 1 nginx負載均衡部署的 127.0.0.1:8080 和 127.0.0.1:8081 訪問各自的webapp目錄,給war包的部署帶來麻煩,需要部署兩臺tomcat 2

keepalived+nginx雙機熱備+負載均衡

ethernet auth 超時任務 collision boot .rpm ocl bnl host keepalived+nginx雙機熱備+負載均衡最近因業務擴展,需要將當前的apache 轉為nginx(web), 再在web前端放置nginx(負載均衡)。同時結合

「mysql優化專題」可用性、負載均衡的mysql集群解決方案(12)

格式 return 建議 處理方式 sage 主機 等待 status 深度 一、為什麽需要mysql集群? 一個龐大的分布式系統的性能瓶頸中,最脆弱的就是連接。連接有兩個,一個是客戶端與後端的連接,另一個是後端與數據庫的連接。簡單如圖下兩個藍色框框(其實,這張圖是我在悟空

drbd+mariadb+corosync+pacemaker構建可用,實現負載均衡

drbd mysql 高可用DRBD DRBD是由內核模塊和相關腳本而構成,用以構建高可用性的集群 drbd 工作原理:DRBD是一種塊設備,可以被用於高可用(HA)之中.它類似於一個網絡RAID-1功能。當你將數據寫入本地 文件系統時,數據還將會被發送到網絡中另一臺主機上。以相同的形式記錄在

haprox + keepalive 實現 可用+ 四層負載均衡

cfg stat 負載均衡 pass 編寫 vip ddr arp host 目前,比較流行開源集群管理工具是haproxy + keepalived 是比較簡單易學的組合; 主機環境:     Cent OS 6.8x64 軟件版本:     haproxy-1.5.18

keepalived+nginx可用環境搭建

MASTER:192.168.101.132 BACKUP:192.168.101.133 真實主機zabbix:192.168.101.131 虛IP:192.168.101.138 1、安裝nginx和keepalived,需要安裝依賴 yum -y install

Linux叢集KeepalivedNginx可用叢集架構搭建

叢集介紹Linux叢集根據功能劃分為兩大類:高可用和負載均衡。高可用叢集高可用叢集通常為2臺伺服器,一臺工作,另一臺作為冗餘,當提供服務的機器宕機時,冗餘將接替繼續提供服務。實現高可用的開源軟體有:heartbeat、Keepalived,其中heartbeat已無人維護,所

Nginxnginx反向代理與tomcat負載均衡

前言         nginx反向代理大大節省了伺服器開支,通過配置多個虛擬主機,使多個服務共同的使用虛擬的80埠。 首先,某個伺服器上有多個tomcat服務,分別佔用一個埠。先看配置檔案。 tomcat服務1 upstream sina{ server 192

Nginx、LVSHAProxy負載均衡軟體的優缺點詳解

【編者按】負載均衡 (Load Balancing) 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力,同時能夠提高網路的靈活性和可用性。目前使用最為廣泛的負載均衡軟體是Nginx、LVS、HAProx

nginx的配置以反向代理方式實現動靜分離負載均衡

整個安裝環境用root安裝,本文中所有環境的配置以及安裝均在/usr/local目錄下,如需要在其他目錄下安裝根據需要進行調整 配置安裝環境: 1.解壓縮pcre-8.20.tar.gz 並重命名為pcre,進入pcre資料夾 ./configure make make i

使用Redis儲存Nginx+Tomcat負載均衡叢集的Session

環境:Cent OS 7.0(虛擬機器環境)、Nginx 1.9.8、Redis 3.2.1 一、背景 在使用Nginx+Tomcat實現負載均衡的時候,由於Nginx對不同的請求分發到某一個Tomcat,Tomcat在執行的時候分別是不同的容器裡,因為

Mycat+Mysql主從複製+haproxy+keepalived實現可用的分庫分表叢集方案

一, 部署架構 1.1架構圖 1.2 軟體版本 作業系統: CentOS2-7-X86_64-DVD-1708.iso JDK 版本: jdk1.8.0_11 Keepalived 版本: keepalived-1.2.18.tar.gz

keepalived+nginx+mysql實現可用負載均衡

最近搗鼓了一下mysql資料庫的高可用方案。藉助mysql官方的InnoDB Cluster 以及nginx+keepalived。能夠輕易的做到。效果及穩定性令人滿意。 前言: 首先這裡預設你已

nginx+keepalived實現可用負載均衡

其中 centos7.3 9.png IT 配置文件 bsp 是我 add nginx 環境: centos7.3虛擬機A 10.0.3.46 centos7.3虛擬機B 10.0.3.110 虛擬機A和B都需要安裝nginx和keepalived(過程省略,其中keepa

lvs+keepalived 可用負載均衡

module pri gzip cal flv -i poll ORC 虛擬ip 一、環境準備 VIP:10.18.43.30 dr1:10.18.43.10 dr2:10.18.43.20 web1:10.18.43.13 web2:10.18.43.14

Centos7.5 配置 Nginx+Keepalived 搭建可用負載均衡

一、系統要求:[[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 二、IP 地址規劃:主機名 IP VIP linux-node1 192.168.10.10 192.168.1