LVS-DR+Keepalived+動靜分離實驗

架構圖

解釋一下架構,大概就是用Keepalived實現兩臺DR服務器的LVS負載均衡,然后后端服務器是兩臺Nginx服務器兩臺Tomcat服務器并且實現動靜分離
這個實驗其實就是把 LVS-DR+Keepalived?和 動靜分離 給拼起來,真的是拼起來,兩個部分其實就像是獨立的部分,互相之間的影響很小

實驗前準備:

主DR服務器:192.168.188.11 ??(ens33:0)192.168.188.188
備DR服務器:192.168.188.12 ??(ens33:0)192.168.188.188
Nginx服務器1:192.168.188.13 ???(lo:0)192.168.188.188
Nginx服務器2:192.168.188.14 ???(lo:0)192.168.188.188
VIP(虛擬IP):192.168.188.188
Tomcat服務器1:192.168.188.15
Tomcat服務器2:192.168.188.16
如果只想用四臺機器實現,那么就把Tomcat和Nginx部署到同一臺就行,比如說Tomcat1和Nginx1同一臺,Tomcat2和Nginx2同一臺。只需要改一下nginx.conf就行,底下會說

  1. DR服務器部署
    1. 關閉防火墻
      systemctl stop firewalld
      setenforce 0
    2. 安裝ipvsadm和keepalived
      yum -y install ipvsadm keepalived
    3. 加載ipvs內核模塊并查看
      modprobe ip_vs
      cat /proc/net/ip_vs
    4. 配置keepalived
      cd /etc/keepalived
      備份配置文件
      cp keepalived.conf keepalived.conf.bak
      對配置文件進行修改
      vim keepalived.conf
      主備服務器都要配置,下面這張圖是主的配置截圖,備的配置除了router_id改成LVS_02,state改成BACKUP,priority改成90,其他都一樣

    5. 配置虛擬IP(VIP)
      vim /etc/sysconfig/network-scripts/ifcfg-ens33:0

      DEVICE=ens33:0
      ONBOOT=yes
      IPADDR=192.168.188.188
      NETMASK=255.255.255.255


      配置完重啟網卡
      systemctl restart network
      打開虛擬網卡
      ifup ens33:0
      查看一下有沒有生效
      ip addr

      啟動keepalived服務
      systemctl start keepalived
      關于虛擬網卡,在實驗過程中總會碰到一個問題,那就是虛擬網卡連接很不穩定,打開后總是過一段時間就斷開,具體原因我也排查不出來,也可能是網絡不好,如果在后面測試過程中發現失敗,可以用ip addr看一下虛擬網卡是不是斷開了,如果沒了,那就用systemctl restart network重啟網絡

    6. 啟動ipvsadm服務
      主DR服務器(192.168.188.11):
      備份
      ipvsadm-save > /etc/sysconfig/ipvsadm
      systemctl start ipvsadm

      配置規則
      先清空
      ipvsadm -C
      ipvsadm -A -t 192.168.188.188:80 -s rr
      ipvsadm -a -t 192.168.188.188:80 -r 192.168.188.13:80 -g
      ipvsadm -a -t 192.168.188.188:80 -r 192.168.188.14:80 -g
      查看分發策略

      備DR服務器(192.168.188.12):
      備份
      ipvsadm-save > /etc/sysconfig/ipvsadm
      systemctl start ipvsadm
      直接查看
      ipvsadm -ln,目前并沒有策略

      當主服務器斷開后,備服務器會接收到主服務器的策略,測試的時候可以來這看一下

    7. 調整proc響應參數,關閉Linux內核的重定向參數響應
      vim /etc/sysctl.conf

      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
      net.ipv4.conf.ens33.send_redirects = 0


      sysctl -p

  2. Nginx服務器部署

    1. 關閉防火墻
      systemctl stop firewalld
      setenforce 0

    2. 安裝Nginx,不再贅述,這里只說一件事,pid改不改不影響使用,但是如果你改了nginx.conf里面的pid位置,那么就必須創建相應的目錄

    3. 為了方便測試,在Nginx1和Nginx2的index.html文件里隨便寫點東西以示區分就行

    4. 配置虛擬網卡(lo:0)
      vim /etc/sysconfig/network-scripts/ifcfg-lo:0

      DEVICE=lo:0
      ONBOOT=yes
      ???????IPADDR=192.168.188.188
      NETMASK=255.255.255.255


      重啟網卡
      systemctl restart network
      啟動虛擬網卡
      ifup lo:0
      查看
      ip addr

      添加路由規則
      route add -host 192.168.188.188 dev lo:0

    5. 調整proc響應參數
      vim /etc/sysctl.conf

      net.ipv4.conf.lo.arp_ignore = 1
      net.ipv4.conf.lo.arp_announce = 2
      net.ipv4.conf.all.arp_ignore = 1
      net.ipv4.conf.all.arp_announce = 2



      sysctl -p

    6. 配置文件后面再改

  3. Tomcat服務器部署

    1. 關閉防火墻
      systemctl stop firewalld
      setenforce 0

    2. 安裝JDK、Tomcat不再贅述,不知道怎么安裝可以看前面的實驗

    3. 創建測試的應用目錄
      mkdir /usr/local/tomcat/webapps/test
      寫一個頁面,這是Tomcat1的
      vim /usr/local/tomcat/webapps/test/index.jsp

      <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
      <html>
      <head>
      <title>JSP test1 page</title>   #指定為 test1 頁面
      </head>
      <body>
      <% out.println("動態頁面 1,http://www.test1.com");%>
      </body>
      </html>

      寫一個頁面,這是Tomcat2的
      vim /usr/local/tomcat/webapps/test/index.jsp

      <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
      <html>
      <head>
      <title>JSP test2 page</title>   #指定為 test2 頁面
      </head>
      <body>
      <% out.println("動態頁面 2,http://www.test2.com");%>
      </body>
      </html>
    4. 修改配置文件server.xml
      vim /usr/local/tomcat/conf/server.xml
      因為新增的Host的name也是localhost和原本的重名了,所以把原本的刪掉

      <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true"></Context>
      </Host>

    5. 重啟服務
      /usr/local/tomcat/bin/shutdown.sh
      /usr/local/tomcat/bin/startup.sh

  4. 動靜分離配置(只需要在Nginx服務器上修改就行)

    1. 修改nginx主配置文件
      vim /usr/local/nginx/conf/nginx.conf
      如果你只用了4臺機器,也就是說Nginx服務器同時是Tomcat服務器,那么就把服務器地址池里的IP地址改成Nginx的IP地址就行,端口不變

    2. 保存并重啟服務
      systemctl restart nginx

  5. 測試,在客戶端的瀏覽器輸入VIP,也就是192.168.188.188可以訪問到靜態頁面,多刷新幾次看看負載均衡有沒有問題
    這里要說一下,可能是LVS本身有問題,導致Nginx1的頁面和Nginx2的頁面總有一個很難刷新出來,這并不代表就是錯的,如果一直只能看到Nginx1,那就把Nginx1服務器上的Nginx服務直接停了,再刷新,如果能訪問到Nginx2那就說明沒問題
    再輸入192.168.188.188/index.jsp就能訪問到動態頁面,多刷新幾次看看負載均衡有沒有問題,這里用的Nginx的調度算法,就能正常顯示Tomcat1和Tomcat2的動態頁面

    ??????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208312.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208312.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208312.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在SQLServer中,把一個表的字段更新到另一個表中

在SQLServer中&#xff0c;把一個表的字段更新到另一個表中&#xff0c;應該如何實現? 你可以使用 UPDATE 語句結合 JOIN 來將一個表中的字段更新到另一個表中。假設你有兩個表&#xff0c;稱為 table1 和 table2&#xff0c;你想從 table1 中更新 table2&#xff0c;可以像這…

Rtrofit+Rxjava網絡請求封裝

好幾年前封裝的框架一直沒上傳&#xff0c;趁現在升級寫下。 簡介Retrofit是android的網絡請求庫&#xff0c;是一個RESTful的HTTP網絡請求框架的封裝&#xff08;基于okhttp&#xff09;。它內部網絡請求的工作&#xff0c;本質上是通過OkHttp完成&#xff0c;而Retrofit僅負責…

JVM虛擬機:執行Java程序并指定JVM參數

本文重點 在前面我們設置參數值的時候&#xff0c;需要在eclipse中的VM中進行參數設置&#xff0c;查詢的時候需要先jps&#xff0c;然后jinfo。這里嘗試動態的設置和查詢&#xff0c;也就是說在運行程序的時候就對其進行設置&#xff0c;并且進行查詢。 過程 為了確定參數修…

微信個人號機器人開發

簡要描述&#xff1a; 取消消息接收 請求URL&#xff1a; http://域名地址/cancelHttpCallbackUrl 請求方式&#xff1a; POST 請求頭Headers&#xff1a; Authorization&#xff1a;login接口返回Content-Type&#xff1a;application/json 無參數 返回數據&#xff…

MeteoInfo-Java解析與繪圖教程

MeteoInfo-Java解析與繪圖教程(四) 上文我們說到,將地圖疊加在色斑圖上,但大部分都是衛星繪圖,現在開始講解micaps數據繪圖,同樣也是更多自定義 配置 首先我們解析micaps數據,將之前學到的東西拿過來繪圖 MeteoDataInfo meteoDataInfo new MeteoDataInfo(); meteoDataInfo.o…

使用Binding的RelativeSource

一個Binding有明確的數據來源 可以通過Source或ElementName賦值的方法讓Binding與之關聯 但是有的時候我們不能確定作為Source的對象叫什么名字&#xff0c;但知道它與作為Binding目標的對象在UI上有相對關系&#xff0c;比如&#xff1a;空間自己關聯自己的某個數據、關聯自己…

Flutter代碼補全

有的時候屬性不經常使用&#xff0c;就想不起來該用啥&#xff0c;只有點點印象&#xff1b;只能用代碼補全功能&#xff0c;但我用了AS的默認操作發下并不好使&#xff0c;估計是快捷鍵沖突了。剛開始是不是下面的效果&#xff1a;這肯定不是我們想要的。 不怕&#xff0c;接下…

【S32DS報錯】-2-提示Error while launching command:arm-none-eabi-gdb –version錯誤

目錄 1 Error錯誤提示 2 Error錯誤原因 3 如何消除Error錯誤 結尾 【S32K3_MCAL從入門到精通】合集&#xff1a; S32K3_MCAL從入門到精通https://blog.csdn.net/qfmzhu/category_12519033.html 1 Error錯誤提示 使用S32DSJ-LinK下載程序&#xff0c;在Dedug Configurati…

計算機基礎知識67--BBS

遷移表格 # 以后你寫的每個python項目&#xff0c;都必須有一個txt文件叫 requirements.txt,里面放了當前項目所有的依賴&#xff0c;別人拿到項目---》需要執行 pip install -r requirements.txt # 裝好該項目所有依賴 django3.2.20 # 模塊 pillow mysqlclient # 主體項目功…

中東電商指南分享!盤點中東四大跨境電商平臺

提到跨境電商新藍海&#xff0c;就不得不想起土豪聚集地 ——中東&#xff0c;中東地區擁有龐大的人口、高人均GDP、強大的消費能力以及廣泛普及的互聯網&#xff0c;但外出購物卻相對不便&#xff0c;正是這一特點為中東跨境電商市場創造了巨大的優勢。隨著中東地區電商的崛起…

mycat實現分表操作、isinstance的使用、sqlalchemy的使用、mysql數據庫連接池

1 mycat實現分表操作 2 isinstance的使用 3 sqlalchemy的使用 4 mysql數據庫連接池 1 mycat實現分表操作 在 MySQL 數據庫中&#xff0c;Mycat 通常用于實現分片&#xff08;Sharding&#xff09;操作。分片是一種將大型數據庫水平拆分成多個較小數據庫的策略&#xff0c;以提…

Gan論文閱讀筆記

GAN論文閱讀筆記 2014年老論文了&#xff0c;主要記錄一些重要的東西。論文鏈接如下&#xff1a; Generative Adversarial Nets (neurips.cc) 文章目錄 GAN論文閱讀筆記出發點創新點設計訓練代碼網絡結構代碼測試代碼 出發點 Deep generative models have had less of an impac…

軟件壓力測試的重要性與用途

在當今數字化的時代&#xff0c;軟件已經成為幾乎所有行業不可或缺的一部分。隨著軟件應用規模的增加和用戶數量的上升&#xff0c;軟件的性能變得尤為關鍵。為了確保軟件在面對高并發和大負載時仍然能夠保持穩定性和可靠性&#xff0c;軟件壓力測試變得至關重要。下面是軟件壓…

提醒事項日歷同步怎么設置?可實時同步日歷的提醒事項工具

隨著生活節奏的加快&#xff0c;我們每天都需要處理許多瑣碎的事務。為了不忘記重要的事情&#xff0c;很多人選擇使用提醒事項工具來幫助自己。然而&#xff0c;市場上的提醒事項工具五花八門&#xff0c;有些并不具備日歷月視圖功能&#xff0c;也無法與手機日歷同步&#xf…

JavaScript 復雜的<三元運算符和比較操作>的組合--案例(一)

在逆向的時候,碰上有些復雜的js代碼,邏輯弄得人有點混; 因此本帖用來記錄一些棘手的代碼,方便自己記憶,也讓大家拓展認識~ ----前言 內容: function(e, t, n) {try {1 (e "{" e[0] ? JSON.parse(e) : JSON.parse(webInstace.shell(e))).Status || 200 e.Code…

Linux學習筆記7-IIC的應用和AP3216C

接下來進入其他兩種串行通信方式&#xff1a;SPI和I2C的學習&#xff0c;因為以后的項目中會用到這些通信方式&#xff0c;而且正點原子的開發板里面也有用I2C和SPI通信的傳感器來做實例&#xff0c;分別是一個距離傳感器和六軸陀螺儀&#xff0c;這樣就可以很好的通過實例來學…

GRE與順豐圓通快遞盒子

1. DNS污染 隨想&#xff1a; 在輸入一串網址后&#xff0c;會發生如下變化如果你在系統中配置了 Hosts 文件&#xff0c;那么電腦會先查詢 Hosts 文件如果 Hosts 里面沒有這個別名&#xff0c;就通過域名服務器查詢域名服務器回應了&#xff0c;那么你的電腦就可以根據域名服…

第六屆“強網”擬態防御國際精英挑戰賽——入圍戰隊篇

第六屆“強網”擬態防御國際精英挑戰賽即將于2023年12月6日在南京盛大開賽&#xff01;本屆挑戰賽再次為全球頂尖戰隊提供實戰機會&#xff0c;向多類擬態防御設備系統發起挑戰&#xff0c;在眾測實戰中持續檢驗中國制造內生安全數字產品所具有的中國力量。 本屆挑戰賽參賽戰隊…

【LeetCode:1466. 重新規劃路線 | DFS + 圖 + 樹】

&#x1f680; 算法題 &#x1f680; &#x1f332; 算法刷題專欄 | 面試必備算法 | 面試高頻算法 &#x1f340; &#x1f332; 越難的東西,越要努力堅持&#xff0c;因為它具有很高的價值&#xff0c;算法就是這樣? &#x1f332; 作者簡介&#xff1a;碩風和煒&#xff0c;…

Vue 子路由頁面發消息給主路由頁面 ,實現主頁面顯示子頁面的信息

需求 子頁面進入后&#xff0c;能在主頁面顯示子頁的相關信息&#xff0c;比如說主頁面的菜單激活的是哪個子頁面的菜單項 如上圖&#xff0c;當刷新瀏覽器頁面時&#xff0c;讓菜單的激活項仍保持在【最近瀏覽】。 實現方式&#xff1a; 在子頁面的create事件中增加&#xff…