Tomcat+nginx+keepalived+memcached實現雙VIP負載均衡及Session會話保持

来源:https://www.cnblogs.com/mushou/archive/2018/07/30/9391942.html
-Advertisement-
Play Games

第一臺 tar vxf apache-tomcat-7.0.54.tar.gz mv apache-tomcat-7.0.54 /usr/local/tomcat tar vxf jdk-7u65-linux-x64.tar.gz mv jdk1.7.0_65/ /usr/local/java 編輯 ...


  1. 準備好tomcat

第一臺

tar vxf apache-tomcat-7.0.54.tar.gz

mv apache-tomcat-7.0.54 /usr/local/tomcat

 

tar vxf jdk-7u65-linux-x64.tar.gz

mv jdk1.7.0_65/ /usr/local/java

編輯vim /etc/profile加

export JAVA_HOME=/usr/local/java       #設置java根目錄

export PATH=$PATH:$JAVA_HOME/bin  #在PATH環境變數中添加java跟目錄的bin子目錄

啟動tomcat服務

/usr/local/tomcat/bin/startup.sh

   打開瀏覽器,ip:8080顯示tomcat主頁

關閉服務;

  /usr/local/tomcat/bin/shutdown.sh

建立一個web 站點

cd webapps/

mkdir web

vim index.jsp

Server Info:  

SessionID:<%=session.getId()%>

<br>

SessionIP:<%=request.getServerName()%> 

<br>

SessionPort:<%=request.getServerPort()%>

<br>

<%

  out.println("server one");

%>

修改Tomcat的server.xml文件

cp server.xml server.xml.bak

vim server.xml

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

      <Context docBase="web" path="" reloadable="flase">                                                  

      </Context>

      </Host>

/usr/local/tomcat/bin/shutdown.sh

/usr/local/tomcat/bin/startup.sh

打開瀏覽器,ip:8080顯示tomcat主頁

  第二台

與第一臺基本一致,更改測試頁的ip地址

scp [email protected]:/usr/local/tomcat/webapps/web/index.jsp .

scp [email protected]:/usr/local/tomcat/conf/server.xml  .

啟動服務/usr/local/tomcat/bin/startup.sh

查看服務

netstat -anpult |grep java

瀏覽器訪問測試 http://ip:8080

顯示正常

2.準備nginx

第一臺

源碼安裝nginx,

修改配置文件,配置負載均衡

cp /usr/local/nginx/conf/nginx.conf{,.bak}

vim /usr/local/nginx/conf/nginx.conf

加upstream tomcat_server {

        server 172.16.1.12:8080 weight=1;

        server 172.16.1.2:8080 weight=1;

}

proxy_pass http://tomcat_server;

語法檢查

/usr/local/nginx/sbin/nginx –t

啟動服務/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

或者killadd -1 nginx

打開瀏覽器訪問: http://ip ,該ip為nginx 的ip,刷新瀏覽器,會顯示兩台

第二台

nginx-2伺服器配置:

配置方式與伺服器nginx-1一致

客戶端測試:

打開瀏覽器訪問: http://ip    #不斷刷新可看到由於權重相同,頁面會反覆切換

3.安裝配置keepalived

yum -y install keepalived

修改配置文件vim keepalived.conf

配置一個實例名字為VI_2,狀態作為主,優先順序100

vrrp_instance VI_2 {

    #備用伺服器上為 BACKUP

    state MASTER

    #綁定vip的網卡為ens33

    interface ens33

    virtual_router_id 51

    #備用伺服器上為90

    nopreempt                                        #為不搶占模式

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    #track_script {

     #nginx

    #}

    virtual_ipaddress {                               #配置虛擬ip地址

        172.16.1.200

    }

}

vrrp_instance VI_1 {                                  #配置另一個實例 VI_1,狀態為 從,優先順序為90

    state BACKUP

    interface ens33

    virtual_router_id 51

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {                                  #配置虛擬ip地址為254

        192.168.200.254

    }

}

配置第二台

Vim keepalive.conf

vrrp_instance VI_2 {                                             #實例名字為VI_2,狀態作為從,優先順序90

    #備用伺服器上為 BACKUP

    state SLAVE

    #綁定vip的網卡為ens33

    interface ens33

    virtual_router_id 51

    #備用伺服器上為90

    nopreempt

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

       virtual_ipaddress {

        172.16.1.200                                                         #配置虛擬ip地址

    }

}

vrrp_instance VI_1 {                                                          #配置另一個實例 VI_1,狀態為主,優先順序為100

    state MASTER

    interface ens33

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.200.254

    }

}

測試,關閉一臺keepalived,打開瀏覽器,刷新頁面,兩台機器網頁交替更新,測試正常

實現高可用。

4.安裝memcached,實現session會話保持。

yum -y install gcc openssl-devel pcre-devel zlib-devel

先安tar xf libevent-2.0.15-stable.tar.gz

cd libevent-2.0.15-stable

./configure --prefix=/usr/local/libevent && make && make install

再裝memcached 

tar xf memcached-1.4.5.tar.gz

cd memcached-1.4.5

./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ && make && make install 

配置

/usr/local/memcached/bin/memcached -u root -m 512M -n 10 -f 2 -d -vvv -c 512

vim /etc/ld.so.conf

include ld.so.conf.d/*.conf

/usr/local/libevent/lib/

Ldconfig

/usr/local/memcached/bin/memcached -u root -m 512M -n 10 -f 2 -d -vvv -c 512

 netstat  -antp| grep :11211

顯示埠開啟

安裝telnet測試yum -y install telnet

telnet 192.168.200.103 11211

顯示正常

最後執行讓Tomcat-1  Tomcat-2 通過(msm)連接到Memcached

 將session包中的“*.jar複製到/usr/local/tomcat/lib/ 下麵

cp session/* /usr/local/tomcat/lib/使tomcat支持memcached, 

tomcat-1  和  tomcat-2   配置文件一模一樣.

vim /usr/local/tomcat7/conf/context.xml

重啟服務tomcat

/usr/local/tomcat/bin/shutdown.sh

/usr/local/tomcat/bin/startup.sh

 如果成功,tomcat與Memcached 埠會連在一起,前後有變化

Tomcat-1與Tomcat-2如下圖

netstat -antp|grep java

tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      62496/java         

tcp        0      0 :::8009                     :::*                        LISTEN      62496/java         

tcp        0      0 :::8080                     :::*                        LISTEN      62496/java         

tcp        0      0 ::ffff:192.168.200.10:28232 ::ffff:192.168.200.10:11211 ESTABLISHED 62496/java         

tcp        0      0 ::ffff:192.168.200.10:28231 ::ffff:192.168.200.10:11211 ESTABLISHED 62496/java         

tcp        0      0 ::ffff:192.168.200.10:28230 ::ffff:192.168.200.10:11211 ESTABLISHED 62496/java         

tcp        0      0 ::ffff:192.168.200.10:28228 ::ffff:192.168.200.10:11211 ESTABLISHED 62496/java         

tcp        0      0 ::ffff:192.168.200.10:28229 ::ffff:192.168.200.10:11211 ESTABLISHED 62496/java         

[root@tomcat-1 ~]# netstat -antp|grep memcached

tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      62402/memcached     

tcp        0      0 192.168.200.103:11211       192.168.200.103:28230       ESTABLISHED 62402/memcached    

tcp       45      0 192.168.200.103:11211       192.168.200.103:28228       ESTABLISHED 62402/memcached    

tcp        0      0 192.168.200.103:11211       192.168.200.103:28232       ESTABLISHED 62402/memcached    

tcp        0      0 192.168.200.103:11211       192.168.200.103:28229       ESTABLISHED 62402/memcached    

tcp        0      0 192.168.200.103:11211       192.168.200.103:28231       ESTABLISHED 62402/memcached    

tcp        0      0 :::11211                    :::*                        LISTEN      62402/memcached   


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文主要以一個簡單的小例子,描述C# Winform程式異常關閉時,如何進行捕獲,並記錄日誌。 ...
  • 誤解一:併發就是多線程 實際上多線程只是併發編程的一種形式,在C 中還有很多更實用、更方便的併發編程技術,包括非同步編程、並行編程、TPL 數據流、響應式編程等。 誤解二:只有大型伺服器程式才需要考慮併發 伺服器端的大型程式要響應大量客戶端的數據請求,當然要充分考慮併發。但是桌面程式和手機、平板等移動 ...
  • 1. 程式集和CIL: 程式集是由.NET語言的編譯器接受源代碼文件產生的輸出文件,通常分為 exe和dll兩類,其中exe包含Main入口方法可以雙擊執行,dll則需要被其他程式集調用執行。 CIL(Common Intermediate Language): 公共中間語言①,需要被編譯成二進位機 ...
  • 依賴註入(DI)不是一個新的話題,它的出現是伴隨著系統解耦的需要而幾乎必然產生的。 在SOLID設計原則中,DIP(Dependency inversion principle)——依賴倒置,規定了“需依賴抽象,而非實現”的準則,該原則主要目的是通過引入抽象(比如介面)的方式降低模塊之間的耦合性。與 ...
  • 轉載請註明出處: https://home.cnblogs.com/u/zhiyong-ITNote/ 常用擴展方法 註入依賴服務: new ServiceCollection().AddSingleton<IApplicationBuilder, ApplicationBuilder>(); // ...
  • 首先先介紹一下這個項目,該項目實現了文本寫入及讀取,日誌寫入指定文件夾或預設文件夾,日誌數量控制,單個日誌大小控制,通過約定的參數讓用戶可以用更少的代碼解決問題。 1.讀取文本文件方法 使用:JIYUWU.TXT.TXTHelper.ReadToString(“文件物理路徑”) 1 public s ...
  •     在上一節講了一些tcpdump常用功能,本期我們繼續學習tcpdump後續功能。 流量過濾     tcpdump不僅支持單個過濾表達式過濾,也還支持多個過濾表達式。但需要註意的是 傳入的過濾表達式如含有Shell通配符,需將過濾表達式放在單引號內 , ...
  • tail -f 等同於--follow=descriptor,根據文件描述符進行追蹤,當文件改名或被刪除,追蹤停止 tail -F 等同於--follow=name --retry,根據文件名進行追蹤,並保持重試,即該文件被刪除或改名後,如果再次創建相同的文件名,會繼續追蹤 tail -F 相當於 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...