做兼職的網(wǎng)站都有哪些工作最有吸引力的營(yíng)銷模式
一、云中網(wǎng)絡(luò)
物理機(jī)的劣勢(shì):
1)一旦需要擴(kuò)容 CPU、內(nèi)存、硬盤,都需要去機(jī)房手動(dòng)弄,非常麻煩
2)采購(gòu)的機(jī)器往往動(dòng)不動(dòng)幾百 G 的內(nèi)存,而每個(gè)應(yīng)用往往可能只需要 4 核 8G
3)一臺(tái)機(jī)器,一旦一個(gè)用戶不用了,給另外一個(gè)用戶,那就需要重裝操作系統(tǒng)
虛擬機(jī)的網(wǎng)路
- 網(wǎng)絡(luò)共享和互通
在數(shù)據(jù)中心里面,采取的也是類似的技術(shù),只不過(guò)都是 Linux,在每臺(tái)機(jī)器上都創(chuàng)建網(wǎng)橋 br0,虛擬機(jī)的網(wǎng)卡都連到 br0 上,物理網(wǎng)卡也連到 br0 上,所有的 br0 都通過(guò)物理網(wǎng)卡出來(lái)連接到物理交換機(jī)上。
在這種方式下,不但解決了同一臺(tái)機(jī)器的互通問(wèn)題,也解決了跨物理機(jī)的互通問(wèn)題,因?yàn)槎荚谝粋€(gè)二層網(wǎng)絡(luò)里面,彼此用相同的網(wǎng)段訪問(wèn)就可以了。但是當(dāng)規(guī)模很大的時(shí)候,會(huì)存在問(wèn)題。
你還記得嗎?在一個(gè)二層網(wǎng)絡(luò)里面,最大的問(wèn)題是廣播。一個(gè)數(shù)據(jù)中心的物理機(jī)已經(jīng)很多了,廣播已經(jīng)非常嚴(yán)重,需要通過(guò) VLAN 進(jìn)行劃分。如果使用了虛擬機(jī),假設(shè)一臺(tái)物理機(jī)里面創(chuàng)建 10 臺(tái)虛擬機(jī),全部在一個(gè)二層網(wǎng)絡(luò)里面,那廣播就會(huì)很嚴(yán)重,所以除非是你的桌面虛擬機(jī)或者數(shù)據(jù)中心規(guī)模非常小,才可以使用這種相對(duì)簡(jiǎn)單的方式。
- NAT
虛擬機(jī)是你的電腦,路由器和 DHCP Server 相當(dāng)于家用路由器或者寢室長(zhǎng)的電腦,物理網(wǎng)卡相當(dāng)于你們宿舍的外網(wǎng)網(wǎng)口,用于訪問(wèn)互聯(lián)網(wǎng)。所有電腦都通過(guò)內(nèi)網(wǎng)網(wǎng)口連接到一個(gè)網(wǎng)橋 br0 上,虛擬機(jī)要想訪問(wèn)互聯(lián)網(wǎng),需要通過(guò) br0 連到路由器上,然后通過(guò)路由器將請(qǐng)求 NAT 成為物理網(wǎng)絡(luò)的地址,轉(zhuǎn)發(fā)到物理網(wǎng)絡(luò)。
如果是你自己登錄到物理機(jī)上做個(gè)簡(jiǎn)單配置,你可以簡(jiǎn)化一下。例如將虛擬機(jī)所在網(wǎng)絡(luò)的網(wǎng)關(guān)的地址直接配置到 br0 上,不用 DHCP Server,手動(dòng)配置每臺(tái)虛擬機(jī)的 IP 地址,通過(guò)命令 iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE,直接在物理網(wǎng)卡 ethX 上進(jìn)行 NAT,所有從這個(gè)網(wǎng)卡出去的包都 NAT 成這個(gè)網(wǎng)卡的地址。通過(guò)設(shè)置 net.ipv4.ip_forward = 1,開啟物理機(jī)的轉(zhuǎn)發(fā)功能,直接做路由器,而不用單獨(dú)的路由器,這樣虛擬機(jī)就能直接上網(wǎng)了。
- 隔離問(wèn)題
如果一臺(tái)機(jī)器上的兩個(gè)虛擬機(jī)不屬于同一個(gè)用戶,怎么辦呢?好在 brctl 創(chuàng)建的網(wǎng)橋也是支持 VLAN 功能的,可以設(shè)置兩個(gè)虛擬機(jī)的 tag,這樣在這個(gè)虛擬網(wǎng)橋上,兩個(gè)虛擬機(jī)是不互通的。
但是如何跨物理機(jī)互通,并且實(shí)現(xiàn) VLAN 的隔離呢?由于 brctl 創(chuàng)建的網(wǎng)橋上面的 tag 是沒(méi)辦法在網(wǎng)橋之外的范圍內(nèi)起作用的,于是我們需要尋找其他的方式。
有一個(gè)命令vconfig,可以基于物理網(wǎng)卡 eth0 創(chuàng)建帶 VLAN 的虛擬網(wǎng)卡,所有從這個(gè)虛擬網(wǎng)卡出去的包,都帶這個(gè) VLAN,如果這樣,跨物理機(jī)的互通和隔離就可以通過(guò)這個(gè)網(wǎng)卡來(lái)實(shí)現(xiàn)。
首先為每個(gè)用戶分配不同的 VLAN,例如有一個(gè)用戶 VLAN 10,一個(gè)用戶 VLAN 20。在一臺(tái)物理機(jī)上,基于物理網(wǎng)卡,為每個(gè)用戶用 vconfig 創(chuàng)建一個(gè)帶 VLAN 的網(wǎng)卡。不同的用戶使用不同的虛擬網(wǎng)橋,帶 VLAN 的虛擬網(wǎng)卡也連接到虛擬網(wǎng)橋上。
這樣是否能保證兩個(gè)用戶的隔離性呢?不同的用戶由于網(wǎng)橋不通,不能相互通信,一旦出了網(wǎng)橋,由于 VLAN 不同,也不會(huì)將包轉(zhuǎn)發(fā)到另一個(gè)網(wǎng)橋上。另外,出了物理機(jī),也是帶著 VLAN ID 的。只要物理交換機(jī)也是支持 VLAN 的,到達(dá)另一臺(tái)物理機(jī)的時(shí)候,VLAN ID 依然在,它只會(huì)將包轉(zhuǎn)發(fā)給相同 VLAN 的網(wǎng)卡和網(wǎng)橋,所以跨物理機(jī),不同的 VLAN 也不會(huì)相互通信。
二、軟件定義網(wǎng)絡(luò)(SDN)
可以這樣比喻,云計(jì)算就像大家一起住公寓,要共享小區(qū)里面的基礎(chǔ)設(shè)施,其中網(wǎng)絡(luò)就相當(dāng)于小區(qū)里面的電梯、樓道、路、大門等,大家都走,往往會(huì)常出現(xiàn)問(wèn)題,尤其在上班高峰期,出門的人太多,對(duì)小區(qū)的物業(yè)管理就帶來(lái)了挑戰(zhàn)。
物業(yè)可以派自己的物業(yè)管理人員,到每個(gè)單元的樓梯那里,將電梯的上下行速度調(diào)快一點(diǎn),可以派人將隔離健身區(qū)、景色區(qū)的柵欄門暫時(shí)打開,讓大家可以橫穿小區(qū),直接上地鐵,還可以派人將多個(gè)小區(qū)出入口,改成出口多、入口少等等。等過(guò)了十點(diǎn)半,上班高峰過(guò)去,再派人都改回來(lái)。
如果物業(yè)管理人員有一套智能的控制系統(tǒng),在物業(yè)監(jiān)控室里就能看到小區(qū)里每個(gè)單元、每個(gè)電梯的人流情況,然后在監(jiān)控室里面,只要通過(guò)遠(yuǎn)程控制的方式,撥弄一個(gè)手柄,電梯的速度就調(diào)整了,柵欄門就打開了,某個(gè)入口就改出口了。
這就是軟件定義網(wǎng)絡(luò)(SDN)
OpenFlow 和 OpenvSwitch(SDN的實(shí)現(xiàn)方式)
OpenFlow 是 SDN 控制器和網(wǎng)絡(luò)設(shè)備之間互通的南向接口協(xié)議,OpenvSwitch 用于創(chuàng)建軟件的虛擬交換機(jī)。OpenvSwitch 是支持 OpenFlow 協(xié)議的,當(dāng)然也有一些硬件交換機(jī)也支持 OpenFlow 協(xié)議。它們都可以被統(tǒng)一的 SDN 控制器管理,從而實(shí)現(xiàn)物理機(jī)和虛擬機(jī)的網(wǎng)絡(luò)連通。
對(duì)于 OpenvSwitch 來(lái)講,網(wǎng)絡(luò)包到了我手里,就是一個(gè) Buffer,我想怎么改怎么改,想發(fā)到哪個(gè)端口就發(fā)送到哪個(gè)端口。
下面我們實(shí)驗(yàn)一下通過(guò) OpenvSwitch 實(shí)現(xiàn) VLAN 的功能
在 OpenvSwitch 中端口 port 分兩種。
在網(wǎng)絡(luò)中,VLAN(虛擬局域網(wǎng))用于將一個(gè)物理網(wǎng)絡(luò)劃分為多個(gè)邏輯網(wǎng)絡(luò),提供更好的管理、隔離和安全性。Open vSwitch(OVS)是一種用于管理和控制虛擬網(wǎng)絡(luò)交換機(jī)的軟件,可以實(shí)現(xiàn)VLAN功能。理解access port和trunk port的工作原理對(duì)于配置和管理VLAN至關(guān)重要。下面是對(duì)它們的通俗解釋和舉例說(shuō)明:
Access Port
定義:
- Access port配置一個(gè)特定的VLAN tag。
- 從這個(gè)端口進(jìn)來(lái)的網(wǎng)絡(luò)包會(huì)被打上這個(gè)VLAN tag。
- 如果一個(gè)網(wǎng)絡(luò)包本身帶有的VLAN ID等于配置的tag,則會(huì)從這個(gè)port發(fā)出。
- 從access port發(fā)出的包不帶VLAN ID。
舉例:
假設(shè)你有一個(gè)Open vSwitch的端口port1,它被配置為VLAN 10的access port。
-
從port1進(jìn)入的包:
- 一個(gè)無(wú)VLAN標(biāo)簽的包進(jìn)入port1。
- OVS會(huì)給這個(gè)包打上VLAN 10的標(biāo)簽。
- 這個(gè)包現(xiàn)在是一個(gè)VLAN 10的包。
-
從port1發(fā)出的包:
- 一個(gè)帶有VLAN 10標(biāo)簽的包從port1發(fā)出。
- OVS會(huì)移除VLAN標(biāo)簽,使其變?yōu)橐粋€(gè)無(wú)標(biāo)簽的包。
- 這個(gè)包現(xiàn)在沒(méi)有VLAN標(biāo)簽,發(fā)送到下一個(gè)目的地。
Trunk Port
定義:
- Trunk port不配置固定的VLAN tag,而是配置允許通過(guò)的VLAN ID(trunks)。
- 如果trunks為空,表示所有VLAN的包都可以通過(guò),不限制。
- 如果trunks不為空,則只有配置的VLAN ID的包可以通過(guò)。
- Trunk port的包會(huì)保留其原有的VLAN ID。
舉例:
假設(shè)你有一個(gè)Open vSwitch的端口port2,它被配置為trunk port,允許VLAN 10和VLAN 20通過(guò)。
-
從port2進(jìn)入的包:
-
一個(gè)帶有VLAN 10標(biāo)簽的包進(jìn)入port2。
-
OVS檢查這個(gè)包的VLAN ID,發(fā)現(xiàn)它在允許通過(guò)的范圍內(nèi)(VLAN 10和20)。
-
這個(gè)包繼續(xù)保持其VLAN 10標(biāo)簽,傳輸?shù)骄W(wǎng)絡(luò)中的其他位置。
-
一個(gè)帶有VLAN 30標(biāo)簽的包進(jìn)入port2。
-
OVS檢查這個(gè)包的VLAN ID,發(fā)現(xiàn)它不在允許通過(guò)的范圍內(nèi)(VLAN 10和20)。
-
這個(gè)包被丟棄,不會(huì)通過(guò)port2。
-
-
從port2發(fā)出的包:
- 一個(gè)帶有VLAN 10標(biāo)簽的包從port2發(fā)出。
- OVS保持其VLAN 10標(biāo)簽,直接發(fā)送。
- 這個(gè)包到達(dá)另一個(gè)trunk port或其他設(shè)備時(shí),仍然帶有VLAN 10標(biāo)簽。
綜合示例
假設(shè)我們有一個(gè)簡(jiǎn)單的網(wǎng)絡(luò),包含兩個(gè)端口port1和port2,配置如下:
- port1:配置為VLAN 10的access port
- port2:配置為允許VLAN 10和VLAN 20的trunk port
-
接入設(shè)備A通過(guò)port1發(fā)送數(shù)據(jù):
- 設(shè)備A發(fā)送一個(gè)沒(méi)有VLAN標(biāo)簽的數(shù)據(jù)包到port1。
- OVS給這個(gè)包打上VLAN 10標(biāo)簽,并發(fā)送到網(wǎng)絡(luò)中。
-
來(lái)自網(wǎng)絡(luò)的VLAN 10包經(jīng)過(guò)port2傳輸:
- 一個(gè)帶有VLAN 10標(biāo)簽的數(shù)據(jù)包進(jìn)入port2。
- OVS檢查包的VLAN標(biāo)簽,發(fā)現(xiàn)允許通過(guò)。
- 包保持VLAN 10標(biāo)簽,繼續(xù)傳輸?shù)较乱辉O(shè)備或端口。
-
來(lái)自網(wǎng)絡(luò)的VLAN 30包經(jīng)過(guò)port2傳輸:
- 一個(gè)帶有VLAN 30標(biāo)簽的數(shù)據(jù)包進(jìn)入port2。
- OVS檢查包的VLAN標(biāo)簽,發(fā)現(xiàn)不允許通過(guò)。
- 包被丟棄,不會(huì)傳輸。
通過(guò)上述例子,可以看到access port主要用于將單個(gè)設(shè)備連接到特定的VLAN,而trunk port則用于在不同的VLAN之間傳輸數(shù)據(jù),確保VLAN隔離和管理。
實(shí)驗(yàn)二:用 OpenvSwitch 模擬網(wǎng)卡綁定,連接交換機(jī)
為了高可用,可以使用網(wǎng)卡綁定,連接到交換機(jī),OpenvSwitch 也可以模擬這一點(diǎn)。
三、云中網(wǎng)絡(luò)安全
對(duì)于公有云上的虛擬機(jī),我的建議是僅僅開放需要的端口,而將其他的端口一概關(guān)閉。這個(gè)時(shí)候,你只要通過(guò)安全措施守護(hù)好這個(gè)唯一的入口就可以了。采用的方式常常是用ACL(Access Control List,訪問(wèn)控制列表)來(lái)控制 IP 和端口。
設(shè)置好了這些規(guī)則,只有指定的 IP 段能夠訪問(wèn)指定的開放接口,就算有個(gè)有漏洞的后臺(tái)進(jìn)程在那里,也會(huì)被屏蔽,黑客進(jìn)不來(lái)。在云平臺(tái)上,這些規(guī)則的集合常稱為安全組。
當(dāng)一個(gè)網(wǎng)絡(luò)包進(jìn)入機(jī)器
有了這個(gè) Netfilter 框架就太好了,你可以在 IP 轉(zhuǎn)發(fā)的過(guò)程中,隨時(shí)干預(yù)這個(gè)過(guò)程,只要你能實(shí)現(xiàn)這些 hook 函數(shù)。
一個(gè)著名的實(shí)現(xiàn),就是內(nèi)核模塊 ip_tables。它在這五個(gè)節(jié)點(diǎn)上埋下函數(shù),從而可以根據(jù)規(guī)則進(jìn)行包的處理。按功能可分為四大類:連接跟蹤(conntrack)、數(shù)據(jù)包的過(guò)濾(filter)、網(wǎng)絡(luò)地址轉(zhuǎn)換(nat)和數(shù)據(jù)包的修改(mangle)。其中連接跟蹤是基礎(chǔ)功能,被其他功能所依賴。其他三個(gè)可以實(shí)現(xiàn)包的過(guò)濾、修改和網(wǎng)絡(luò)地址轉(zhuǎn)換。
在用戶態(tài),還有一個(gè)你肯定知道的客戶端程序 iptables,用命令行來(lái)干預(yù)內(nèi)核的規(guī)則。內(nèi)核的功能對(duì)應(yīng) iptables 的命令行來(lái)講,就是表和鏈的概念。
iptables的作用
當(dāng)使用iptables時(shí),通常會(huì)針對(duì)不同的需求和場(chǎng)景設(shè)置不同的規(guī)則。以下是一些針對(duì)上述提到的iptables功能的例子:
-
防火墻功能:
-
允許特定IP地址的訪問(wèn):
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
-
阻止特定IP地址的訪問(wèn):
iptables -A INPUT -s 10.0.0.5 -j DROP
-
允許某個(gè)端口的訪問(wèn),拒絕其他所有訪問(wèn):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -j DROP
-
-
網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT):
-
將內(nèi)部IP地址轉(zhuǎn)換為外部IP地址:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
-
設(shè)置端口轉(zhuǎn)發(fā)規(guī)則,將外部訪問(wèn)的某個(gè)端口轉(zhuǎn)發(fā)到內(nèi)部主機(jī):
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
-
-
端口轉(zhuǎn)發(fā)(Port Forwarding):
- 將外部訪問(wèn)的某個(gè)端口轉(zhuǎn)發(fā)到內(nèi)部主機(jī)的特定端口:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
- 將外部訪問(wèn)的某個(gè)端口轉(zhuǎn)發(fā)到內(nèi)部主機(jī)的特定端口:
-
流量控制和限制:
-
限制某個(gè)IP地址的流量速率:
iptables -A INPUT -s 192.168.2.50 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT
-
限制某個(gè)端口的總流量:
iptables -A INPUT -p tcp --dport 443 -m quota --quota 1000M -j ACCEPT
-
-
包過(guò)濾和監(jiān)控:
-
監(jiān)控特定端口的進(jìn)出流量:
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Traffic: "
-
設(shè)置一個(gè)計(jì)數(shù)器來(lái)統(tǒng)計(jì)特定流量的包數(shù)量:
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 192.168.1.100 -p tcp --dport 80 -j ACCEPT iptables -nvL
-
這些例子展示了如何使用iptables來(lái)實(shí)現(xiàn)防火墻、NAT、端口轉(zhuǎn)發(fā)、流量控制和監(jiān)控等功能。通過(guò)這些例子,可以更好地理解iptables的實(shí)際應(yīng)用場(chǎng)景。
安全組
這些規(guī)則都可以在虛擬機(jī)里,自己安裝 iptables 自己配置。但是如果虛擬機(jī)數(shù)目非常多,都要配置,對(duì)于用戶來(lái)講就太麻煩了,能不能讓云平臺(tái)把這部分工作做掉呢?
當(dāng)然可以了。在云平臺(tái)上,一般允許一個(gè)或者多個(gè)虛擬機(jī)屬于某個(gè)安全組,而屬于不同安全組的虛擬機(jī)之間的訪問(wèn)以及外網(wǎng)訪問(wèn)虛擬機(jī),都需要通過(guò)安全組進(jìn)行過(guò)濾。
我們會(huì)創(chuàng)建一系列的網(wǎng)站,都是前端在 Tomcat 里面,對(duì)外開放 8080 端口。數(shù)據(jù)庫(kù)使用 MySQL,開放 3306 端口。
為了方便運(yùn)維,我們創(chuàng)建兩個(gè)安全組,將 Tomcat 所在的虛擬機(jī)放在安全組 A 里面。在安全組 A 里面,允許任意 IP 地址 0.0.0.0/0 訪問(wèn) 8080 端口,但是對(duì)于 ssh 的 22 端口,僅僅允許管理員網(wǎng)段 203.0.113.0/24 訪問(wèn)。
我們將 MySQL 所在的虛擬機(jī)在安全組 B 里面。在安全組 B 里面,僅僅允許來(lái)自安全組 A 的機(jī)器訪問(wèn) 3306 端口,但是對(duì)于 ssh 的 22 端口,同樣允許管理員網(wǎng)段 203.0.113.0/24 訪問(wèn)。
這些安全組規(guī)則都可以自動(dòng)下發(fā)到每個(gè)在安全組里面的虛擬機(jī)上,從而控制一大批虛擬機(jī)的安全策略。
所有從外網(wǎng)網(wǎng)口出去的,都轉(zhuǎn)換成為這個(gè) IP 地址。那又一個(gè)問(wèn)題來(lái)了,都變成一個(gè)公網(wǎng) IP 了,當(dāng) 163 網(wǎng)站返回結(jié)果的時(shí)候,給誰(shuí)呢,再 nat 成為哪個(gè)私網(wǎng)的 IP 呢?
這就是 Netfilter 的連接跟蹤(conntrack)功能了。對(duì)于 TCP 協(xié)議來(lái)講,肯定是上來(lái)先建立一個(gè)連接,可以用“源 / 目的 IP+ 源 / 目的端口”唯一標(biāo)識(shí)一條連接,這個(gè)連接會(huì)放在 conntrack 表里面。當(dāng)時(shí)是這臺(tái)機(jī)器去請(qǐng)求 163 網(wǎng)站的,雖然源地址已經(jīng) Snat 成公網(wǎng) IP 地址了,但是 conntrack 表里面還是有這個(gè)連接的記錄的。當(dāng) 163 網(wǎng)站返回?cái)?shù)據(jù)的時(shí)候,會(huì)找到記錄,從而找到正確的私網(wǎng) IP 地址。
這是虛擬機(jī)做客戶端的情況,如果虛擬機(jī)做服務(wù)器呢?也就是說(shuō),如果虛擬機(jī)里面部署的就是 163 網(wǎng)站呢?
這個(gè)時(shí)候就需要給這個(gè)網(wǎng)站配置固定的物理網(wǎng)的 IP 地址和公網(wǎng) IP 地址了。這時(shí)候就需要顯示的配置 Snat 規(guī)則和 Dnat 規(guī)則了。
當(dāng)外部訪問(wèn)進(jìn)來(lái)的時(shí)候,外網(wǎng)網(wǎng)口會(huì)通過(guò) Dnat 規(guī)則將公網(wǎng) IP 地址轉(zhuǎn)換為私網(wǎng) IP 地址,到達(dá)虛擬機(jī),虛擬機(jī)里面是 163 網(wǎng)站,返回結(jié)果,外網(wǎng)網(wǎng)口會(huì)通過(guò) Snat 規(guī)則,將私網(wǎng) IP 地址轉(zhuǎn)換為那個(gè)分配給它的固定的公網(wǎng) IP 地址。
四、 云中的網(wǎng)絡(luò)QoS 這一節(jié)細(xì)節(jié)沒(méi)有研究
本來(lái)合租共享 WIFI,一個(gè)人狂下小電影,從而你網(wǎng)都上不去,是不是很懊惱?
在云平臺(tái)上,也有這種現(xiàn)象,好在有一種流量控制的技術(shù),可以實(shí)現(xiàn)QoS(Quality of Service),從而保障大多數(shù)用戶的服務(wù)質(zhì)量。
QoS的關(guān)鍵指標(biāo)
帶寬(Bandwidth):指網(wǎng)絡(luò)能夠提供的最大數(shù)據(jù)傳輸速率。
延遲(Latency):指數(shù)據(jù)包從源端到達(dá)目的端所需的時(shí)間。
抖動(dòng)(Jitter):指數(shù)據(jù)包到達(dá)目的端的時(shí)間間隔的變動(dòng)。
丟包率(Packet Loss):指數(shù)據(jù)包在傳輸過(guò)程中丟失的比例。
云中的流量控制主要通過(guò)隊(duì)列進(jìn)行的,隊(duì)列分為兩大類:無(wú)類別隊(duì)列規(guī)則和基于類別的隊(duì)列規(guī)則。
在云中網(wǎng)絡(luò) Openvswitch 中,主要使用的是分層令牌桶規(guī)則(HTB),將總的帶寬在一棵樹上按照配置的比例進(jìn)行分配,并且在一個(gè)分支不用的時(shí)候,可以借給另外的分支,從而增強(qiáng)帶寬利用率。
五、云中網(wǎng)絡(luò)的隔離GRE、VXLAN 【沒(méi)仔細(xì)看】
好的,讓我嘗試用一個(gè)簡(jiǎn)單的比喻來(lái)解釋GRE和VXLAN這兩種網(wǎng)絡(luò)Overlay技術(shù)。
想象一下,你有一家大型公司,公司里有多個(gè)部門,比如銷售部、市場(chǎng)部和研發(fā)部。每個(gè)部門都有自己的辦公區(qū)域,員工們?cè)诟髯缘霓k公區(qū)域內(nèi)可以互相交流。但是,有時(shí)候銷售部的員工需要和市場(chǎng)部的員工交流,或者研發(fā)部的員工需要和市場(chǎng)部的員工交流。由于他們不在同一個(gè)辦公區(qū)域,直接交流就不太方便。
這時(shí)候,你可以想象成每個(gè)部門是一個(gè)獨(dú)立的網(wǎng)絡(luò)(VLAN),但是由于物理空間(網(wǎng)絡(luò)設(shè)備和端口數(shù)量)的限制,不能無(wú)限制地劃分更多的獨(dú)立網(wǎng)絡(luò)。這時(shí)就需要一種方法來(lái)讓不同部門的員工能夠方便地交流,這就是Overlay網(wǎng)絡(luò)技術(shù)發(fā)揮作用的地方。
GRE(Generic Routing Encapsulation Protocol)
GRE可以被看作是一種“點(diǎn)對(duì)點(diǎn)”的快遞服務(wù)。就像你從一個(gè)部門給另一個(gè)部門發(fā)送一個(gè)包裹,你需要把這個(gè)包裹交給快遞公司,快遞公司會(huì)在包裹外面加一個(gè)外包裝(封裝),寫上收件人和發(fā)件人的地址,然后通過(guò)他們的運(yùn)輸網(wǎng)絡(luò)送到目的地。在這個(gè)例子中:
- 包裹 = 原始數(shù)據(jù)包
- 外包裝 = GRE封裝
- 快遞公司 = 隧道(Tunnel)
- 運(yùn)輸網(wǎng)絡(luò) = 底層物理網(wǎng)絡(luò)
GRE隧道的兩端(Tunnel Endpoints)就像兩個(gè)快遞公司的分揀中心,負(fù)責(zé)把包裹加上外包裝發(fā)送出去,或者接收包裹后去掉外包裝,把原始的包裹交給正確的收件人。
VXLAN(Virtual Extensible Local Area Network)
VXLAN則可以被看作是一種更高級(jí)的快遞服務(wù),它支持“組播”的快遞方式。這就像是你有一個(gè)包裹需要同時(shí)發(fā)送給多個(gè)部門的聯(lián)系人。在VXLAN中:
- 包裹 = 原始數(shù)據(jù)包
- 外包裝 = VXLAN封裝
- 快遞公司 = 隧道(Tunnel)
- 運(yùn)輸網(wǎng)絡(luò) = 底層物理網(wǎng)絡(luò)
VXLAN的特點(diǎn)是可以在一個(gè)包裹上寫多個(gè)收件人的地址,然后通過(guò)快遞公司的網(wǎng)絡(luò)(這里可以想象成支持組播的網(wǎng)絡(luò)),一次性地將包裹的副本發(fā)送給所有指定的收件人。這樣,即使這些收件人不在同一個(gè)物理位置,他們也能同時(shí)收到包裹。
在實(shí)際的網(wǎng)絡(luò)環(huán)境中,GRE和VXLAN都是用來(lái)在不同網(wǎng)絡(luò)之間創(chuàng)建邏輯上的連接,使得原本不能直接通信的設(shè)備能夠互相通信,就像不同部門的員工能夠互相交流一樣。VXLAN相比于GRE,提供了更好的擴(kuò)展性,可以支持更多的終端設(shè)備,并且更適合大規(guī)模的云計(jì)算環(huán)境。
六、容器網(wǎng)絡(luò)
cgroup,也即明明整臺(tái)機(jī)器有很多的 CPU、內(nèi)存,而一個(gè)應(yīng)用只能用其中的一部分。
cgroup 全稱 control groups,是 Linux 內(nèi)核提供的一種可以限制、隔離進(jìn)程使用的資源機(jī)制。