lvs集群實現lvs-dr模型和lvs-nat模型

来源:https://www.cnblogs.com/walk1314/archive/2018/07/26/9359158.html
-Advertisement-
Play Games

ipvsadm ipvsadm命令是lvs集群在應用層的管理工具,我們可以通過此ipvsadm來管理lvs的配置,其實現了集群服務管理:增、刪、改,集群服務的RS管理:增、刪、改以及查看集群狀態。 管理集群服務:增、改、刪; 管理集群上的RS:增、改、刪; 查看集群的狀態信息: 規則的保存和重載: ...


ipvsadm

ipvsadm命令是lvs集群在應用層的管理工具,我們可以通過此ipvsadm來管理lvs的配置,其實現了集群服務管理:增、刪、改,集群服務的RS管理:增、刪、改以及查看集群狀態。

管理集群服務:增、改、刪;

增(A)、改(E):
    ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
刪:
    ipvsadm -D -t|u|f service-address
-t|u|f service-address:
    -t: TCP協議的埠,VIP:TCP_PORT,如 -t 172.16.10.6:80
    -u: UDP協議的埠,VIP:UDP_PORT
    -f:firewall MARK,是一個數字,通過iptables可以定義firewall MARK
[-s scheduler]:指定集群的調度演算法,預設為wlc

管理集群上的RS:增、改、刪;

增(a)、改(e):
    ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
刪:
    ipvsadm -d -t|u|f service-address -r server-address
-r server-address:rip[:port],指明RS的IP地址
lvs類型:
    -g: gateway, dr類型
    -i: ipip, tun類型
    -m: masquerade, nat類型
-w weight:權重

查看集群的狀態信息:

    ipvsadm -L|l [options]
options:
    -c, --connection:顯示當前的LVS連接
    --timeout:列出超時
    --daemon:
    --stats:狀態信息
    --rate:傳輸速率
    --persistent-conn:堅持連接
    --sor:把列表排序。
    --nosort:不排序
    -n, --numeric:輸出IP地址和埠的數字形式

規則的保存和重載:

保存和重載:
    ipvsadm -S = ipvsadm-save
    ipvsadm -R = ipvsadm-restore
清空定義的所有內容:
    ipvsadm -C
將所有數據相關的計數器清零:
    ipvsadm -Z [-t|u|f service-address]

lvs-nat集群的實現

 簡易流程圖:

配置RS1:

[root@RS1 ~]# yum -y install httpd  #安裝Apache
[root@RS1 ~]# systemctl stop firewalld.service  #關閉防火牆
[root@RS1 ~]# ifconfig eno16777736 172.16.0.10/24 up  #配置網卡
[root@RS1 ~]# route add default gw 172.16.0.254  #配置路由
[root@RS1 ~]# vim /etc/httpd/conf/httpd.conf  #設置httpd
    Listen 8080
    ServerName localhost
[root@RS1 ~]# vim /var/www/html/index.html
    <h1> RS1 172.16.0.10 <h1>
[root@RS1 ~]# systemctl start httpd  #啟用httpd
[root@RS1 ~]# ss -tan
    LISTEN      0      128              :::8080                         :::*  

RS2的配置參考RS1。

配置DR:

[root@DR ~]# yum -y install ipvsadm  #安裝ipvsadm工具
[root@DR ~]# ifconfig eno16777736 10.0.0.1/24 up  #配置vip
[root@DR ~]# ifconfig eno16777736:0 172.16.0.254/24 up  #配置dip
[root@DR ~]# sysctl -a | grep ip_forward  #確保核心轉發功能已開啟
    net.ipv4.ip_forward = 1
[root@DR ~]# ipvsadm -A -t 10.0.0.1:80 -s rr  #配置lvs集群規則
[root@DR ~]# ipvsadm -a -t 10.0.0.1:80 -r 172.16.0.10:8080 -m
[root@DR ~]# ipvsadm -a -t 10.0.0.1:80 -r 172.16.0.11:8080 -m
[root@DR ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.1:80 rr
  -> 172.16.0.10:8080             Masq    1      0          0         
  -> 172.16.0.11:8080             Masq    1      0          0

客戶端測試:

# 調度演算法使用rr,輪詢方式,故調用RS時 比例為1:1
[root@client ~]# for i in {1..20}; do curl http://10.0.0.1; done
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>

 lvs-dr集群的實現

簡易流程圖:

      

配置RS1:

[root@RS1 ~]# ifconfig eno16777736 10.0.0.11/24 up  #配置網卡
[root@RS1 ~]# ifconfig lo:0 10.0.0.1 netmask 255.255.255.255 broadcast 10.0.0.1 up
[root@RS1 ~]# route add -host 10.0.0.1 dev lo:0  #配置路由
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  #設置arp響應
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@RS1 ~]# vim /etc/httpd/conf/httpd.conf  #設置httpd
    Listen 80
[root@RS1 ~]# vim /var/www/html/index.html
    <h1> RS1 10.0.0.11<h1>
[root@RS1 ~]# systemctl start httpd  #啟用httpd
[root@RS1 ~]# ss -tan
    LISTEN      0      128              :::8080                         :::*

RS2的配置參考RS1。

配置DR:

[root@DR ~]# ifconfig eno16777736 10.0.0.2/24 up  #配置dip
[root@DR ~]# ifconfig eno16777736:0 10.0.0.1 netmask 255.255.255.255 broadcast 10.0.0.1 up  #配置vip
[root@DR ~]# ipvsadm -A -t 10.0.0.1:80 -s wrr  #配置lvs集群規則
[root@DR ~]# ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.11 -g -w 1
[root@DR ~]# ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.12 -g -w 2
[root@DR ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.1:80 wrr
  -> 10.0.0.11:80                 Route   1      0          0         
  -> 10.0.0.12:80                 Route   2      0          0  

客戶端測試:

# 調度演算法使用wrr,比重為1:2
[root@client ~]# for i in {1..20}; do curl http://10.0.0.1; done
<h1> RS1 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS1 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS1 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS1 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>

RS1的配置腳本參考:

#!/bin/bash
#
vip=10.0.0.1
rip=10.0.0.11
mask1=255.255.255.255
mask2=255.255.255.0
case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig eno16777736 $rip netmask $mask2 up
    ifconfig lo:0 $vip netmask $mask1 broadcast $vip up
    route add -host $vip dev lo:0
    ;;
stop)
    ifconfig lo:0 down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ;;
*) 
    echo "Usage $(basename $0) start|stop"
    exit 1
    ;;
esac

DR的配置腳本參考:

#!/bin/bash
#
vip=10.0.0.1
mask1=255.255.255.255
dip=10.0.0.2
mask2=255.255.255.0
port=80
rs1=10.0.0.11
rs2=10.0.0.12
scheduler='wrr'
type='-g'
case $1 in
start)
    ifconfig eno16777736 $dip netmask $mask2 up
    ifconfig eno16777736:0 $vip netmask $mask1 broadcast $vip up

    ipvsadm -A -t ${vip}:${port} -s $scheduler
    ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
    ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 2
    ;;
stop)
    ipvsadm -C
    ifconfig eno16777736:0 down
    ;;
*)
    echo "Usage $(basename $0) start|stop"
    exit 1
    ;;
esac

 


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

-Advertisement-
Play Games
更多相關文章
  • TextTabBar控制項 一、 樣式一 我們要實現上圖中的效果,需要如下的操作: 設置控制項的背景色為“18, 183, 245”,如圖1; 圖 1設置界面 設置控制項邊框,將該屬性設置為“1,1,1,1”,如圖 2; 圖 2設置界面 設置控制項邊框顏色,將該屬性設置為“White”,如圖 3; 圖 3設 ...
  • 在Linux 中磁碟陣列RAID10配置中我們已經正確配置了RAID10 ,一般來說在RAID10中最多允許50%的磁碟損毀,當然除了,同一磁碟RAID1中的硬碟設備全部損毀。 這次我們討論一下:假設RAID中的某一個硬碟損毀了,如何修複? 1.損毀其中一塊磁碟sdd 2.查看錯誤: 3.若此時,我 ...
  • 我們自己安裝的ubuntu通常預設鏡像源是官方的,並不好用,因為網速以及限制比較多,所以為了使用方便,通常都會去更改一下預設的鏡像源配置。 這裡我們使用清華大學開源鏡像軟體站,https://mirrors.tuna.tsinghua.edu.cn 我的終端使用了root賬戶,命令行全部未用sudo ...
  • 首先,瞭解一下RAID是什麼?(百度所得) 獨立磁碟冗餘陣列(RAID,redundant array of independent disks)是把相同的數據存儲在多個硬碟的不同的地方(因此,冗餘地)的方法。通過把數據放在多個硬碟上,輸入輸出操作能以平衡的方式交疊,改良性能。因為多個硬碟增加了平均 ...
  • 大家好,這是我發表的第一篇文章,希望大家看到不對的地方指出來,也可以和我交流。本人是小白一名。下麵介紹如何安裝centos7的基本步驟。 步驟一: 到centos官網下載centos7鏡像(http://isoredirect.centos.org/centos/7/isos/x86_64/Cent ...
  • 好久沒更了,今天就更完這一期的Linux系統吧,這次主要安裝的是常用Linux系統的之一:Ubuntu(烏班圖)系統,這個系統和CentOS 7的安裝步驟也是類似的,(我不採取用虛擬機的方法來安裝,當然在虛擬機安裝是很方便,但是卻有問題,至於是什麼問題?請看本文最後部分。)PE系統中沒有適合的工具來 ...
  • 幾個小概念 date:系統時間 clock:硬體時間 clock -w:硬體時間根據系統時間同步 ntpdate:馬上同步時間 ntp:網路時間協議,起到的效果是讓你的時間始終穩定持續的同步,前提是時間差別不是很大 我們在生產環境中時間是個很重要的角色 下麵來說下同步時間的方法 首先我們知道一個服務 ...
  • 1.首先新建一個虛擬機併在該虛擬機上安裝Ubuntu16.04系統。為這台虛擬機起名為Ubuntu3。 2.對Ubuntu3進行克隆,為新克隆生成的虛擬機起名為Ubuntu2。(這時我們會發現Ubuntu2可以ping通Ubuntu3,但是反過來Ubuntu3無法ping通Ubuntu2。這是因為克 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...