網絡通信模型基本以及Linux下高可用/Bonding的概念和用法

  1. 網絡基本原理

  2. Bonging網卡綁定


    1.網絡基本原理


在現有的學習階段,可以通過ping命令來學習通信的原理(生產環境中爲了防止***幾乎所有的服務器都禁掉了PING),不過很多時候都並不清楚這個命令到底在背後執行什麼操作,那好吧,往下看就對了

1.1路由/路由器路由器(Router)又稱網關設備(Gateway)是用於連接多個邏輯上分開的網絡,所謂邏輯網絡是代表一個單獨的網絡或者一個子網。當數據從一個子網傳輸到另一個子網時,可通過路由器的路由功能來完成。因此,路由器具有判斷網絡地址和選擇IP路徑的功能,它能在多網絡互聯環境中,建立靈活的連接,可用完全不同的數據分組和介質訪問方法連接各種子網,路由器只接受源站或其他路由器的信息,屬網絡層的一種互聯設備。(此條來自百度百科)通俗一點講,就是發生網絡請求的時候,路由就是實現“怎麼找路”的功能

1.2網關網關是默認的數據出口。如果你的數據不知道往哪裏走的話,那麼他會去默認網關那裏報道。路由器包含許多這樣的網關,其中之一是默認網關。也就是說數據到了路由器以後,如果不知道自己下一步該怎麼走了,那麼他會去默認網關那裏去報道

圖示:


blob.png

圖中以route1爲例,PC1若要跟PC2通信,則一定要走route1/2/3,但是現在這三個路由器都不知道該怎麼走,因爲路由器內部要有“路由條目”這個路由條目就是記錄着“從哪裏來的數據包要傳遞到哪裏去,這個過程從哪裏走”這樣的信息,所以

(1)route1配置路由條目:由route1到PC2的“路線”

route add -net 4.4.4.0/24 gw 2.2.2.252

(3)route1配置路由條目:由route1到route3的“路線”

route add -net 3.3.3.0/24 gw 2.2.2.252

同理,每一個路由器(route)都要配置對應的“目標地址和經過的網關條目

上圖中以route1 爲例寫了兩個路由條目,這是最簡單的網絡通信模型,當然,現實生活中或者生產環境中顯然不會有如此簡單的路由,可能路由有好多個,路由下面還有交換機等等。難道每多一個路由或者    主機就要增加一個路由條目嗎?

顯然這是不現實的,其次,路由條目過多也會造成通信效率降低的問題,所以這個路由條目可以簡化

圖中,route1兩個條目雖然目的地不是一個,但是這兩個條目都是同方向的,都是從左右的,所以可以簡寫成:

route add -net default gw 2.2.2.252

 查看路由條目:

route -n

有添加就有刪除,只需要把對應的“add”換成“del”即可

圖中示例可以解釋爲“去往PC2方向的所有路由都執行這個條目,指定網關爲2.2.2.252”

路由條目簡化,則需要查找的範圍就變小了,效率自然就高了

上述“小實驗”是在VMware虛擬機上,用五臺虛擬機實現,如果是克隆的虛擬機則需要注意網卡配置文件名稱和MAC地址的問題

網卡配置文件目錄:

/etc/sysconfig/network-scripts

名爲“ifcfg-”的文件即爲網卡配置文件,說到網卡配置文件,那就來簡單看一下吧:

DEVICE=eth1                                 #設備名稱,就是ifconfig命令列表裏面設備的名稱
TYPE=Ethernet                   #類型爲以太網
UUID=9b86924e-c19c-46fc-8fb7-ab2239fb22cb    #系統中設備的唯一標識
ONBOOT=yes                        #是否開機啓動
NM_CONTROLLED=yes                #是否啓用NetworkManager管理工具(centos6 中建議爲“no”,否則設置靜態IP時很容易被此服務改掉成DHCP)
BOOTPROTO=dhcp                    #做網卡綁定的時候常用,DHCP或者STATIC類型,不指定的話容易出現訪問受限的問題
HWADDR=00:0C:29:E6:8B:2D            #MAC地址,全球唯一的設備標識
PREFIX=16                        #子網掩碼

如果需要設置指定的靜態IP則在上述內容中加一項“IPADDR=XXX.XXX.XXX.XXX”並且指定BOOTPROTO爲static

當然了,網卡配置方面的命令還是很多的,類似於ifconfig/netstat都是很久以前的命令集了,只是由於習慣大部分人還在使用

很多時候網卡服務重啓時很多功能並不會生效,這時候需要卸載/重裝網卡驅動模塊

查詢網卡模塊名稱:

ethtool -i eth0   #eth0爲ifconfig命令查詢出來的網卡名

卸載:

modprobe -r pcnet32 #pcnet32爲上一條命令查詢出來的結果

裝載:

modprobe pcnet32  #上一條命令去掉-r即可

2.Bonding

2.1 bonding(綁定)是一種linux系統下的網卡綁定技術,可以把服務器上n個物理網卡在系統內部抽象(綁定)成一個邏輯上的網卡,能夠提升網絡吞吐量、實現網絡冗餘、負載等功能,有很多優勢。

bonding技術是linux系統內核層面實現的,它是一個內核模塊(驅動)。使用它需要系統有這個模塊, 我們可以modinfo命令查看下這個模塊的信息, 一般來說都支持

通俗來講就是:把兩塊或者多塊實體物理網卡通過Bonding虛擬成一塊網卡,並賦予一個IP地址,能承載更多地數據流量,並且在高可用方面有很大作用,其中一塊出了故障可以由其他網卡代勞,當然,這個過程或多或少有個時間間隔,沒明確最大限度能允許這個過程的執行時間有多少,但是可以肯定的是如果數據流量大,Bonding裏面處理故障比較慢是一定會丟包的不過這個刷新時間間隔太短、太快又會過多的佔用系統資源,所以這個時間點自己掌握此外(這個時間通過Bonding配置文件裏面的miimon選項賦值控制,單位是ms),在實現負載均衡方面也有很大的本事,某一塊網卡流量太大,通過Bonding可以分擔一部分或大部分

1.Mode 0 (balance-rr)輪轉(Round-robin)策略:從頭到尾順序的在每一個slave接口上面發送數據包。本模式提供負載均衡和容錯的能力

2.Mode 1 (active-backup)活動-備份(主備)策略:只有一個slave被激活,當且僅當活動的slave接口失敗時纔會激活其他slave。 爲了避免交換機發生混亂此時綁定的MAC地址只有一個外部端口上可見

3.Mode 3 (broadcast)廣播策略:在所有的slave接口上傳送所有的報文,提供容錯能力

4.active-backup、 balance-tlb 和 balance-alb 模式不需要交換機的任何特殊配置。其他綁定模式需要配置交換機以便整合鏈接。如: Cisco 交換機需要在模式 0、 2 和 3 中使用EtherChannel,但在模式4中需要LACP和 EtherChannel

2.2Bonding配置文件

2.2.1創建bonding文件

vim  /etc/sysconfig/network-scripts/ifcfg-bond0
    DEVICE=bond0
    BONDING_OPTS="mode=1 miimon=100"    #mode1模式/每隔100ms刷新一次
    IPADDR=XXX.XXX.XXX.XXX
    PREFIX=24                            #子網掩碼

2.2.2 配置物理網卡與bond0的關係

DEVICE=eth3        #要配置的網卡名稱
MASTER=bond0       #網卡屬於哪個bond0
SLAVES=yes         #隸屬關係是否開啓(yes即爲bond0可以管理這塊網卡,no則反)

        *同理設置另一塊或多塊網卡爲此配置形式

2.2.3 在Centos6中,建議關閉NetworkManager管理工具

/etc/init.d/NetworkManager stop

重啓網絡服務:

/etc/init.d/network restart   #或者執行 :service network restart

查看bond0的狀態:

cat /proc/net/bonding

查看bond0的工作模式:

cat /sys/class/net/bond0

總結bonding:

    實際生產環境中,bonding可能不止兩三塊網卡,因爲服務器需要穩定、高可用,保證不丟包纔是根本,所以會有很多網卡組成bond,這個過程中,應用層是感受不到網卡的變動的,只要miiimon的值不太大、刷新頻率不要太慢,就不會丟包,就發現不了什麼,所以還是很好的一種解決網卡出故障時保證系統正常運轉的措施。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章