Linux系統(五)負載均衡LVS集群之DR模式

序言

DR模式是lvs集群中三種負載均衡模式的其中一種,那么上一篇中我寫啦關于NAT模式的搭建與原理,為什么還要有DR模式與IP隧道模式呢?

首先我們來看3張圖。LVS/NAT模式如下圖:

LVS/IP隧道模式,如下圖:

LVS/DR模式,如下圖。

上面三張圖來自:http://www.linuxvirtualserver.org/zh/lvs3.html?,此文也正式是官方詳細描述LVS集群中實現的三種IP負載均衡技術(VS/NAT、VS/TUN和VS/DR)的工作原理,以及它們的優缺點的文章,推薦大家要詳細看看。

這里我簡述總結下他們的路由方式以及做一個區別:

VS/NAT模式:客戶機-->請求分發服務器-->Real Server-->請求分發服務器--->客戶機。

VS/DR模式:客戶機-->請求分發服務器-->Real Server-->客戶機。

VS/TUN模式:客戶機-->請求分發服務器-->Real Server-->客戶機。

由此可以看出,NAT模式的請求分發服務器會成為這個模式的瓶頸所在,因為所有請求與響應走要經過他轉發。那么IP隧道模式與DR模式的區別在于,DR模式與IP隧道模式相比,DR模式沒有IP封裝的開銷,但由于采用物理層(修改MAC地址)技術,所有服務器都必須在同一個物力網段中。

LVS/DR模式搭建詳細演練

首先我先上我的整體搭建機器的架構圖上來,以便更直觀的搭建與理解。

?

首先配置分發器這臺機器,操作很簡單,跟著做就可以啦。

  • 添加eth0:1網絡接口
[root@localhost network-scripts]# ifconfig eth0:1 172.18.8.6 netmask 255.255.255.255   --此接口只是臨時生效,下面需要配置的是永久生效
[root@localhost network-scripts]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1
  • 編輯由拷貝而來的ifcfg-eth0:1,需要注意的是必須把mac地址與eth0的保持一致。
[root@localhost network-scripts]# cat ifcfg-eth0:1
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
NAME="eth0:1"
DEVICE="eth0:1"
ONBOOT="yes"
IPADDR="172.18.8.6"
NETMASK="225.225.225.0"
HWADDR="00:0c:29:af:ff:3a"    
  • 配置ipvsadm負載算法,如果你不知道ipvsadm是什么,請看我的博客:Linux系統(四)LVS集群負載均衡NAT模式?里面有對他的詳細介紹。
[root@localhost network-scripts]# ipvsadm -A -t 172.18.8.6:80 -s rr  
[root@localhost network-scripts]# ipvsadm -a -t 172.18.8.6:80 -r 172.18.8.5 -g    
[root@localhost network-scripts]# ipvsadm -a -t 172.18.8.6:80 -r 172.18.8.4 -g

到此,分發器這臺機器就配置完成啦。

然后配置Real Server

  • 配置臨時生效的回環接口
[root@localhost ~]# ifconfig lo:1 172.18.8.6 netmask 255.255.255.255
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:1
  • 配置復制而來的回環接口配置文件ifcfg-lo:1,然后關機重啟使其永久生效。
[root@localhost network-scripts]# cat ifcfg-lo:1
CE=lo:1
IPADDR=272.18.8.6
NETMASK=255.255.255.255
# If you're having problems with gated making 127.0.0.0/8 a martian,
# # you can change this to something else (255.255.255.255, for example)
ONBOOT=yes
NAME=loopback
  • 這樣一來,我們從圖中可以看到有3個ip地址都為172.18.8.6,那么你在客戶端輸入172.18.8.6:80來訪問web服務器的時候,那臺機器響應呢?這里就需要以下2個配置,使訪問172.18.8.6這個ip的請求只在分發器這臺機器上處理。這兩個配置在稍后會做講解。
[root@localhost network-scripts]# echo "1">"/proc/sys/net/ipv4/conf/eno16777736/arp_ignore"
[root@localhost network-scripts]# echo "2">"/proc/sys/net/ipv4/conf/eno16777736/arp_announce"
[root@localhost network-scripts]# cat /etc/sysctl.conf
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.conf.eno16777736.arp_ignore=1
net.ipv4.conf.eno16777736.arp_announce=2
  • 開啟web服務器,我這里用的是nginx作為web服務器使用演練。
[root@localhost network-scripts]# /usr/sbin/nginx
  • 另外一臺Real Server如上操作一遍,即可。
  • 測試,切記測試萬萬不要在分發起上請求172.18.8.6,這里是行不通的,你要去其他機器上測,我在如圖的150機器上測試效果如下。

直接聯通realserver,沒問題,如下。

訪問分發器ip,做到啦輪詢效果,如下。

理解arp_ignore與arp_announce參數詳細

arp響應限制arp_ignore:

  • 0 - (默認值):?回應任何網絡接口上對任何本地IP地址的arp查詢請求
  • 1 -?只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求
  • 2 -只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內
  • 3 -?不回應該網絡界面的arp請求,而只對設置的唯一和連接地址做出回應
  • 4-7 -?保留未使用
  • 8 -不回應所有(本地地址)的arp查詢?

arp響應限制arp_announce:對網絡接口上,本地IP地址的發出的,ARP回應,作出相應級別的限制:?確定不同程度的限制,宣布對來自本地源IP地址發出Arp請求的接口

  • 0 - (默認)?在任意網絡接口(eth0,eth1,lo)上的任何本地地址
  • 1 -盡量避免不在該網絡接口子網段的本地地址做出arp回應.?當發起ARP請求的源IP地址是被設置應該經由路由達到此網絡接口的時候很有用.此時會檢查來訪IP是否為所有接口上的子網段內ip之一.如果改來訪IP不屬于各個網絡接口上的子網段內,那么將采用級別2的方式來進行處理.
  • 2 -?對查詢目標使用最適當的本地地址.在此模式下將忽略這個IP數據包的源地址并嘗試選擇與能與該地址通信的本地地址.首要是選擇所有的網絡接口的子網中外出訪問子網中包含該目標IP地址的本地地址.?如果沒有合適的地址被發現,將選擇當前的發送網絡接口或其他的有可能接受到該ARP回應的網絡接口來進行發送.

在dr模式中我們的realserver配置arp_ignore為1:意思是不是eno16777736所在ip的請求,我不與應答。arp_announce為2:意思是我不對外公布我有出來eno16777736所在ip之外的任何ip,避免主動宣告ip使arp廣播包發送過來,做出應答。

總結

接下來是大家最喜歡的總結內容啦,內容有二,如下:

1、希望能關注我其他的文章。

2、博客里面有沒有很清楚的說明白,或者你有更好的方式,那么歡迎加入左上方的2個交流群,我們一起學習探討。

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

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

相關文章

Redux API之applyMiddleware

applyMiddleware(...middlewares) 使用包含自定義功能的 middleware 來擴展 Redux 是一種推薦的方式。Middleware 可以讓你包裝 store 的dispatch 方法來達到你想要的目的。同時&#xff0c; middleware 還擁有“可組合”這一關鍵特性。多個 middleware 可以被組合到一起使用&a…

計算機2018創業方向,推薦2018年創業的方向

原標題&#xff1a;推薦2018年創業的方向1 新電商傳統的零售業收到互聯網電商的重沖擊&#xff0c;從而進行線上線下的結合是必然的趨勢&#xff0c;新零售&#xff0c;新電商&#xff0c;是幾千萬零售企業成功轉型的必然之路&#xff0c;學習一套全面的新電商轉型的方法&#…

包無法安裝_詳細教程 | 安裝Python編程環境以及使用OpenpyXl操作Excel

詳細教程 | 安裝Python編程環境以及使用OpenpyXl操作Excel注意&#xff1a;下列教程為 Windows7 64位&#xff1b;Windows 10有部分步驟有差異&#xff0c;請參考使用&#xff01;01 下載Python程序安裝包首先前往Python官網 www.python.org,進入官網點擊 Downloads,然后點擊 W…

Activity、Fragment、Dialog基類簡單整理

版權聲明&#xff1a;本文為HaiyuKing原創文章&#xff0c;轉載請注明出處&#xff01; 概述 這里簡單記錄下Activity、Fragment、Dialog基類中的常規寫法&#xff0c;后續根據項目需求進行相應的擴展。 BaseActivity.java package com.why.project.myapptemplet.activity;impo…

request重定向_golang不想http自動處理重定向的解決方案

前言有時候發送http請求不想讓庫自動幫忙處理重定向&#xff0c;庫里面默認的是會把所有重定向都完成一遍&#xff0c;結果就是最后一個沒有重定向的請求的結果。因此需要一種方案直接獲取首次訪問的結果&#xff0c;不走重定向。go的http庫里面是使用如下代碼檢查重定向的&…

C語言項目開發-項目架構和編程命名規范

一個項目的流程&#xff1a;1、公司市場人員與客戶交流&#xff0c;了解客戶、引導客戶使用公司最優資源并產出一份市場需求文檔 2、公司需求人員&#xff08;BA&#xff09;與客戶交流&#xff0c;了解客戶需求并產出一個軟件需求文檔 3、項目經理、開發小組成員、需求人員&am…

ajax登錄驗證的原理,ajax用戶登錄驗證-get和post提交方式,與工作原理—2018-8-15...

ajax用戶登錄驗證&#xff1a;實例html>Ajax實戰:表單驗證用戶登錄郵箱: 密碼: 提交let btn document.getElementsByTagName(button)[0];btn.onclick function () {//1.創建xhr對象let xhr new XMLHttpRequest();//2.監聽響應狀態xhr.onreadystatechange function(){// …

將Python腳本打包成可執行文件

Python是一個腳本語言&#xff0c;被解釋器解釋執行。它的發布方式&#xff1a; .py文件&#xff1a;對于開源項目或者源碼沒那么重要的&#xff0c;直接提供源碼&#xff0c;需要使用者自行安裝Python并且安裝依賴的各種庫。&#xff08;Python官方的各種安裝包就是這樣做的&a…

float foo=42e1為什么錯_為什么重寫了equals()也要重寫hashCode()

小Hub領讀&#xff1a;雖然是很基礎的一篇文章&#xff0c;但是對于equals、hashcode兩個方法&#xff0c;相信很多人都與其中的規則不熟悉&#xff0c;來跟著小Hub花個8分鐘回顧一下&#xff01;作者&#xff1a;不學無數的程序員https://my.oschina.net/u/4030990/blog/31341…

ssh客戶端_一款基于TAS框架的SSH客戶端蠕蟲

TEA是一款基于TAS框架的SSH客戶端蠕蟲&#xff0c;從本質上說&#xff0c;它是一個仿冒的SSH客戶端&#xff0c;它能夠修改tty輸入/輸出來實現任意命令執行&#xff0c;或通過SSH連接來上傳自身以實現滲透感染。為了實現該工具的正常功能&#xff0c;遠程主機需要滿足以下條件&…

Selenium入門11 滾動條控制(通過js)

這一節要有js基礎。做web端的UI自動化必須要有html&#xff0c;css&#xff0c;javascript前端基礎。 滾動條控制&#xff1a; 1 移動垂直滾動條 document.documentElement.scrollTop 2 移動垂直滾動條 document.documentElement.scrollLeft 3 找到某個元素&#xff0c;移動到可…

Qt之QNetworkInterface

簡述 QNetworkInterface類負責提供主機的IP地址和網絡接口的列表。 QNetworkInterface表示了當前程序正在運行時與主機綁定的一個網絡接口。每個網絡接口可能包含0個或多個IP地址&#xff0c;每個IP地址都可選擇性地與一個子網掩碼和/或一個廣播地址相關聯。這樣的列表可以通過…

第二周計劃

上周計劃回顧 3.5 ~ 3.11 數據&#xff1a; 評師網爬取&#xff0c;完成&#xff1a;2k條記錄 finished后端 數據結構 技術選型 學校API封裝未完成&#xff1a;后端負責人出差 工作暫停產品 功能設計&#xff1a;主要功能提交&#xff1a;原型圖 幾個頁面 每個頁面大概功能完成…

python編程軟件排行榜_PYPL 9月編程語言排行榜發布 Python一枝獨秀

開發者可以將 PYPL 作為一個參考&#xff0c;決定學習何種語言或 IDE&#xff0c;或者在新的軟件項目中使用何種語言或數據庫。9 月份的榜單如下&#xff1a;前五名分別是 Python、Java、JavaScript、C# 與 PHP。相比去年 9 月份的數據&#xff0c;除了 Python 大幅上漲了 4.5%…

分享到系統面板_win7電腦沒有nvidia控制面板怎么辦【解決方法】

我們在使用電腦的時候&#xff0c;當電腦顯卡出現問題導致屏幕畫面不清晰時&#xff0c;可以使用win7系統自帶nvidia控制面板&#xff0c;它能夠對顯卡進行設置&#xff0c;提升顯卡功能&#xff0c;不過很多電腦用戶點擊nvidia控制面板時卻提示nvidia顯示設置不可用&#xff0…

Python之數據加密與解密(hashlib、hmac、random、base64、pycrypto)--轉載

本文內容 數據加密概述Python中實現數據加密的模塊簡介hashlib與hmac模塊介紹random與secrets模塊介紹base64模塊介紹pycrypto模塊介紹總結參考文檔提示&#xff1a; Python 2.7中的str是字節串&#xff0c;而Python 3.x中的str是字符串。本文中的代碼都是通過Python 2.7實現的…

day3-文件操作之基本操作

一、文件的基本操作 文件內容&#xff1a; Somehow, it seems the love I knew was always the most destructive kind 不知為何&#xff0c;我經歷的愛情總是最具毀滅性的的那種 Yesterday when I was young 昨日當我年少輕狂1、read() 當read()函數中傳入整數(int)參數&#…

QT連接多種數據庫f方法及測試

QT提供了對多種數據庫的訪問支持&#xff0c;對SQL Server也可以通過ODBC來進行訪問。要想順利訪問SQL Server。 首先要保證以下幾點&#xff1a;1. QT編譯時已經編譯了QtSql2. 編譯了ODBC插件。可以通過 configure -plugin-sql-odbc來保證&#xff0c;也可以單獨編譯~/src/plu…

服務器如何實現電腦無線橋接,無線路由器WDS橋接成功副路由器下電腦無法上網怎么辦【解決方法】...

摘 要無線WDS橋接設置完成后&#xff0c;在副路由器管理面&#xff0c;運行狀態 無線狀態 中&#xff0c;WDS狀態顯示成功&#xff0c;但電腦通過副路由無法上網。該問題可能與主、副路由器的設置有關&#xff0c;如下圖所示&#xff1a; 解決辦法&#xff1a; 排查一&#xff…

spad 探測器_從光到光子—“單光子”探測器

光電探測器光電探測器是指在光輻射作用下將其非傳導電荷變為傳導電荷的一類器件。在電子學中&#xff0c;二極管是一種具有不對稱傳輸特性的雙端電子元件&#xff0c;在一個方向上對電流具有低(理想為零)電阻&#xff0c;在另一個方向上具有高(理想為無限)電阻。最常見的類型如…