LVS的持久連接、會話保持和高可用介紹

来源:https://www.cnblogs.com/shenxm/archive/2018/02/23/8461303.html
-Advertisement-
Play Games

持續連接 session保存機制(會話機制) LVS的高可用 ...


持續連接

    1)持久連接(lvs persistence)模板:
        實現無論使用任何調度演算法,在一段時間內(預設360s),能夠實現將來自同一個地址的請求始終發往同一個RS
            ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
                -p # :定義持久時長
    
    2)持久連接實現方式:
        每埠持久(PPC):每個埠對應定義為一個集群服務,每個集群服務單獨調度,同一服務持久
        每防火牆標記持久(PFWMC ):基於防火牆標記定義集群服務,可實現將多個埠上的應用統一調度,即所謂的port Affinity,同一防火牆標記持久
        每客戶端持久(PCC ):基於0埠(表示所有服務)定義集群服務,即將客戶端對所有應用的請求都調度至後端主機,必須定義為持久模式,所有服務持久將vip的埠定義為0,則表示所有請求都將發送後臺伺服器。
        
    3)具體實現
        在VS上進行如下操作
            [root@centos7 ~]#ipvsadm -E -f 12 -s rr -p 300   
            [root@centos7 ~]#ipvsadm -Ln
                IP Virtual Server version 1.2.1 (size=4096)
                Prot LocalAddress:Port Scheduler Flags
                  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn      
                FWM  12 rr persistent 300
                  -> 192.168.74.129:0             Route   1      0          0         
                  -> 192.168.74.133:0             Route   1      0          0

session保存機制(會話機制)

    session綁定(session sticky)
        始終將同一個請求者的請求發送到同一臺RS(第一次請求由演算法調度)
        缺陷:沒有容錯能力,若此RS宕機,則會話丟失,並且將同一請求發送到同一RS有損均衡效果。
    session複製(session cluster)
        在RS之間同步session,因此每個RS都保持集群中的所有session
        缺陷:增加了RS的負擔,對大規模的集群不適用
    session伺服器(session server),redis:
        用單獨一組伺服器來管理session

LVS的高可用

    1.Director 不可用,整個系統將不可用,SPoF Single Point of  Failure
        解決方案:高可用
            keepalived heartbeat/corosync
    
    2.某RS不可用時,Director 依然會調度請求至此RS
        解決方案:由Director 對各RS健康狀態進行檢查,失敗時禁用,成功時啟用
            keepalived heartbeat/corosync, ldirectord
        檢測方式:
            (a) 網路層檢測,icmp
            (b) 傳輸層檢測,埠探測
            (c) 應用層檢測,請求某關鍵資源
            RS 全不用時:back server, sorry server
            
        ldirectord
            ldirectord :監控和控制LVS 守護進程,可管理LVS 規則
            包名:ldirectord-3.9.6-0rc1.1.1.x86_64.rpm
            文件:
                /etc/ha.d/ldirectord.cf     主配置文件
                /usr/share/doc/ldirectord-3.9.6/ldirectord.cf    配置模版
                /usr/lib/systemd/system/ldirectord.service  服務
                /usr/sbin/ldirectord    主程式
                /var/log/ldirectord.log     日誌
                /var/run/ldirectord.ldirectord.pid  pid 文件
            
            ldirectord 配置文件示例
                checktimeout=3  如果3秒沒有反應就認為是有故障了
                checkinterval=1 表示一秒檢查一次後端的伺服器
                autoreload=yes  自動載入配置文件,不用重啟就可以生效
                logfile=“/var/log/ldirectord.log“   日誌文件
                quiescent=no    down 時yes權重為0 ,no為刪除
                virtual=5                               指定VS的FWM或IP:port
                real=172.16.0.7:80 gate 2   gate表示dr模式,2表示權重為2
                real=172.16.0.8:80 gate 1   權重為1
                fallback=127.0.0.1:80 gate #sorry server    定義後面的VS全部宕機了,由誰來提供服務
                service=http    服務類型
                scheduler=wrr   調度演算法
                checktype=negotiate 定義檢查的類型為協商模式
                checkport=80    檢查的埠
                request="index.html"    
                receive=“Test Ldirectord"   表示檢查的時候看到什麼字樣就可以說是健康的,是index.html中的,註意大小寫敏感
        
    3.由VS對各RS進行健康狀態檢查的實現
        1)編寫腳本來實現
            #!/bin/bash
            while true;do
                 curl 192.168.74.133 &> /dev/null && ipvsadm -a -f 12 -r 192.168.74.133 &>/dev/null || ipvsadm -d -f 12 -r 192.168.74.133 &>/dev/null
                 sleep 1
            done
        2)通過ldirectord來實現
            1、
                yum install ldirectord-3.9.5-5.1.x86_64.rpm 
                rpm -ql ldirectord
                cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/  ###把模板拷貝到配置文件的目錄當做配置文件
            2、
                ipvsadm -C   ##清空之前的集群服務,在配置文件里可以定義集群服務,並對RS進行實時監控
                ipvsadm -Ln
            3、
                vim /etc/ha.d/ldirectord.cf
                    checktimeout=3
                    checkinterval=1
                    autoreload=yes
                    quiescent=no
                    # Sample for an http virtual service
                    virtual=192.168.74.88:80
                    real=192.168.74.133:80 gate
                    real=192.168.74.129:80 gate
                    fallback=127.0.0.1:80  ##表示兩台VS都有故障了就由本機來代替,這樣本機也得裝一個httpd服務
                    service=http
                    scheduler=rr
                    #persistent=600
                    #netmask=255.255.255.255
                    protocol=tcp
                    checktype=negotiate
                    checkport=80
                    request="index.html"
                    receive="welcom"    ##表示收到index.html里有welcom字樣就認為機器是好的
                在本機也安裝一個httpd服務
                    vim /var/www/html/index.html  ##這樣兩台RS都蕩機了就有本機提供服務顯示sorry server字樣
                        sorry server
            4、測試
                分別宕機一臺和兩台RS
                [root@centos7 resource.d]#ipvsadm -Ln    ##這是兩台都宕機的顯示,有本機提供服務
                IP Virtual Server version 1.2.1 (size=4096)
                Prot LocalAddress:Port Scheduler Flags
                  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
                TCP  192.168.74.88:80 rr
                  -> 127.0.0.1:80                 Route   1      0          0        
                此時在客戶端
                    [root@redhat7 ~]#curl 192.168.74.88
                    sorry server

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

-Advertisement-
Play Games
更多相關文章
  • 1.定義整型數據類型INT16U之類取代int,short等與編譯器有關的類型定義,方便移植 2.全局變數的定義 在工裝項目中進行了實踐,每個模塊的代碼對應的頭文件包含對應全局變數,其中使用 #ifdef xxx_模塊 #define xxx_模塊 #else #define xxx_模塊 exte ...
  • 過完年回來, github不安分了, 發了博文說不支持TLSv1/TLSv1.1: Weak cryptographic standards removed, 沒看到這篇博文之前, 還以為是代理問題, 設置過, 還是不行, 還更新到最新的git, 還是不行, 就查了一下TLS協議, 終於通過git的 ...
  • Nginx介紹 nginx nginx的功能 nginx與web 服務相關的功能 nginx的特性 nginx程式架構 nginx 模塊 nginx的功用 nginx的安裝 nginx目錄和命令 nginx優缺點 ...
  • 一、Linux簡單介紹 二、虛擬機Linux中常用介紹 上一篇博文記錄瞭如何在虛擬機中安裝centOS,但是因為使用windows習慣了,所以記錄一下centOS常用的界面圖標 【註意】虛擬機的Linux中有一個比較坑的地方,那就是如果需要大寫,需要按住shift不放,然後輸入字元......筆者因 ...
  • 環境: win10 64位 Virtualbox 5.1.30 ubuntu-16.04.3-server-amd64.iso 1. 安裝好ubuntu後,打開virtualbox安裝路徑文件夾,找到VBoxGuestAdditions.iso(增強包)。如圖: 2. 點擊滑鼠右鍵,選擇裝載,就會看 ...
  • HTTP 2.2 ...
  • apache apache介紹 apache的特性 apache的功能 apache優缺點 httpd介紹 https :http over ssl ...
  • 一、在虛擬機中安裝Linux 1.1安裝虛擬機 雙擊VMWare Workstation Pro軟體,點擊下一步: 點擊同意協議,下一步: 自定義安裝的目錄,點擊下一步:(暫時先不勾選增強型.....) 不要更新了,避免麻煩,畢竟是用的破解的,點擊下一步: 創建桌面快捷方式,點擊下一步: 點擊安裝: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...