自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何配置OVN負(fù)載均衡器?

網(wǎng)絡(luò) 路由交換
本文將介紹OVN的負(fù)載平衡特性。 但在開(kāi)始之前,我們來(lái)看看上一個(gè)實(shí)驗(yàn)中的配置。

譯者簡(jiǎn)介:鄭敏先,就職于諾云系統(tǒng)(上海)有限公司。工作地點(diǎn)為南京的諾云研發(fā)中心。擔(dān)任解決方案工程師。

概述

基于我的上一篇文章,接下來(lái)我將介紹OVN的負(fù)載平衡特性。 但在開(kāi)始之前,我們來(lái)看看上一個(gè)實(shí)驗(yàn)中的配置。

OVN 負(fù)載均衡器

OVN負(fù)載均衡器旨在為OVN邏輯網(wǎng)絡(luò)空間內(nèi)的工作負(fù)載提供非?;镜呢?fù)載均衡服務(wù)。由于其簡(jiǎn)單的功能集,它不是設(shè)計(jì)用于替換那些為高級(jí)用例提供更多花里胡哨的功能的硬件負(fù)載均衡器。

其它負(fù)載均衡器大多使用基于哈希的算法來(lái)平衡VIP的請(qǐng)求到邏輯空間內(nèi)的相關(guān)IP地址池。由于哈希算法是使用客戶(hù)端請(qǐng)求的頭來(lái)計(jì)算的,所以平衡應(yīng)當(dāng)是隨機(jī)性的,其中每個(gè)單獨(dú)的客戶(hù)端請(qǐng)求在連接的持續(xù)時(shí)間內(nèi)始終選擇同一個(gè)負(fù)載均衡池的特定成員。

實(shí)驗(yàn)物理網(wǎng)絡(luò)拓?fù)洌?/strong>

如何配置OVN負(fù)載均衡器?

OVN 邏輯網(wǎng)絡(luò)拓?fù)?

如何配置OVN負(fù)載均衡器?

OVN中的負(fù)載平衡可以應(yīng)用于邏輯交換機(jī)或邏輯路由器。選擇何種方式取決于您的具體要求。每種方法都有注意事項(xiàng)。

當(dāng)應(yīng)用于邏輯路由器時(shí),需要牢記以下注意事項(xiàng):

  1. 負(fù)載平衡只能應(yīng)用于“集中式”路由器(即網(wǎng)關(guān)路由器)。
  2. 第1個(gè)注意事項(xiàng)已經(jīng)決定了路由器上的負(fù)載平衡是非分布式服務(wù)。

應(yīng)用于邏輯交換機(jī)時(shí),需要牢記以下注意事項(xiàng):

  1. 負(fù)載平衡是“分布式”的,因?yàn)樗粦?yīng)用于潛在的多個(gè)OVS主機(jī)。
  2. 僅在來(lái)自VIF(虛擬接口)的流量入口處評(píng)估邏輯交換機(jī)上的負(fù)載平衡。這意味著它必須應(yīng)用在“客戶(hù)端”邏輯交換機(jī)上,而不是在“服務(wù)器”邏輯交換機(jī)上。
  3. 由于第2個(gè)注意事項(xiàng),您可能需要根據(jù)您的設(shè)計(jì)規(guī)模對(duì)多個(gè)邏輯交換機(jī)應(yīng)用負(fù)載平衡。

使用我們的的“偽虛擬機(jī)”作為Web服務(wù)器

為了演示負(fù)載均衡器,我們希望在我們的“dmz”中創(chuàng)建一對(duì)Web服務(wù)器,Web服務(wù)器提供一個(gè)可識(shí)別它們身份的文件。 為了簡(jiǎn)化實(shí)驗(yàn),我們將使用在我們的vm1/vm2命名空間中分別運(yùn)行的一個(gè)python web服務(wù)器。

讓我們啟動(dòng)web服務(wù)器吧。

在ubuntu2上:

 

  1. mkdir /tmp/www 
  2. echo "i am vm1" > /tmp/www/index.html 
  3. cd /tmp/www 
  4. ip netns exec vm1 python -m SimpleHTTPServer 8000 

在ubuntu3上:

 

  1. mkdir /tmp/www 
  2. echo "i am vm2" > /tmp/www/index.html 
  3. cd /tmp/www 
  4. ip netns exec vm2 python -m SimpleHTTPServer 8000 

上面的命令將創(chuàng)建一個(gè)web服務(wù)器,監(jiān)聽(tīng)TCP 8000。

我們還希望能夠測(cè)試與我們的網(wǎng)絡(luò)服務(wù)器的連通性。 為此,我們將從Ubuntu主機(jī)的全局命名空間使用curl。如果curl還沒(méi)有被安裝,那么需要先安裝它。

 

  1. apt-get -y install curl 

配置負(fù)載均衡器規(guī)則

首先,需要定義我們的負(fù)載均衡規(guī)則,即VIP和后端服務(wù)器IP池。 這里涉及的是在OVN北向數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)條目,并捕獲生成的UUID。 在的這次實(shí)驗(yàn)中,我們將使用位于實(shí)驗(yàn)室“數(shù)據(jù)”網(wǎng)絡(luò)中的VIP 10.127.0.254。 我們將使用vm1/vm2的地址作為池IP。

在ubuntu1上:

 

  1. uuid=`ovn-nbctl create load_balancer vips:10.127.0.254="172.16.255.130,172.16.255.131"
  2. echo $uuid 

上述命令在北向數(shù)據(jù)庫(kù)的load_balancer表中創(chuàng)建一個(gè)條目,并將生成的UUID存儲(chǔ)到變量“uuid”。 我們將在后面的命令中引用這個(gè)變量。

在網(wǎng)關(guān)路由器上配置負(fù)載均衡

在OVN網(wǎng)關(guān)路由器“edge1”上開(kāi)啟負(fù)載均衡器功能。

在ubuntu1上:

 

  1. ovn-nbctl set logical_router edge1 load_balancer=$uuid 

您可以通過(guò)檢查edge1的數(shù)據(jù)庫(kù)條目來(lái)驗(yàn)證是否成功開(kāi)啟負(fù)載均衡器功能。

 

  1.      
  2. ovn-nbctl get logical_router edge1 load_balancer 

現(xiàn)在,我們可以從任何Ubuntu主機(jī)的全局命名空間連接到VIP。

 

  1. root@ubuntu1:~# curl 10.127.0.254:8000 
  2. i am vm2 
  3. root@ubuntu1:~# curl 10.127.0.254:8000 
  4. i am vm1 
  5. root@ubuntu1:~# curl 10.127.0.254:8000 
  6. i am vm2 

測(cè)試多次之后,可以確認(rèn)負(fù)載平衡是相當(dāng)隨機(jī)的。

讓我們看看禁用一個(gè)Web服務(wù)器會(huì)發(fā)生什么。 嘗試停止在vm1命名空間中運(yùn)行的python進(jìn)程。 這是我得到的輸出結(jié)果:

 

  1. root@ubuntu1:~# curl 10.127.0.254:8000 
  2. curl: (7) Failed to connect to 10.127.0.254 port 8000: Connection refused 
  3. root@ubuntu1:~# curl 10.127.0.254:8000 
  4. i am vm2 

如您所見(jiàn),負(fù)載均衡器未執(zhí)行任何類(lèi)型的運(yùn)行狀態(tài)檢查。 目前的計(jì)劃是,運(yùn)行狀態(tài)檢查將由協(xié)調(diào)解決方案(如Kubernetes)執(zhí)行,該功能將在未來(lái)某個(gè)時(shí)間點(diǎn)被加入。

在進(jìn)行下一個(gè)測(cè)試之前,在vm1上重新啟動(dòng)python Web服務(wù)器。

負(fù)載均衡器在虛擬機(jī)外部運(yùn)行著,讓我們來(lái)看看從內(nèi)部虛擬機(jī)訪(fǎng)問(wèn)VIP時(shí)會(huì)發(fā)生什么。

在ubuntu2上調(diào)用vm3的curl:

 

  1. root@ubuntu2:~# ip netns exec vm3 curl 10.127.0.254:8000 
  2. i am vm1 
  3. root@ubuntu2:~# ip netns exec vm3 curl 10.127.0.254:8000 
  4. i am vm2 

很棒, 這似乎也正常工作了,但有個(gè)地方很有意思。 來(lái)看我們的OVN網(wǎng)絡(luò)的邏輯圖,并考慮來(lái)自vm3的curl請(qǐng)求的流量。 另外,看看python web服務(wù)器的部分日志:

 

  1. 10.127.0.130 - - [29/Sep/2016 09:53:44] "GET / HTTP/1.1" 200 - 
  2. 10.127.0.129 - - [29/Sep/2016 09:57:42] "GET / HTTP/1.1" 200 - 

注意日志中的客戶(hù)端IP地址。***個(gè)IP是上一輪測(cè)試的ubuntu1。第二個(gè)IP是edge1(來(lái)自vm3的請(qǐng)求)。為什么請(qǐng)求來(lái)自edge1而不是直接來(lái)自vm3?答案是,實(shí)現(xiàn)負(fù)載平衡的OVN開(kāi)發(fā)人員使用了一種稱(chēng)為“代理模式”的方法,其中負(fù)載均衡器在某些情況下隱藏了客戶(hù)端IP。為什么這是必要的?想想如果Web服務(wù)器看到vm3的真實(shí)IP會(huì)發(fā)生什么。來(lái)自服務(wù)器的響應(yīng)將直接路由回到vm3,繞過(guò)edge1上的負(fù)載均衡器。從vm3的角度來(lái)看,它看起來(lái)像是向VIP發(fā)出請(qǐng)求,但收到了來(lái)自其中一個(gè)Web服務(wù)器的真實(shí)IP的回復(fù)。(如果不使用代理模式)負(fù)載均衡器就不工作了,這就是為什么代理模式功能很重要。

為了進(jìn)行第二輪測(cè)試,先刪除負(fù)載均衡器配置

 

  1. ovn-nbctl clear logical_router edge1 load_balancer 
  2. ovn-nbctl destroy load_balancer $uuid 

在邏輯交換機(jī)上配置負(fù)載均衡

接下來(lái)的實(shí)驗(yàn)將負(fù)載均衡規(guī)則應(yīng)用到邏輯交換機(jī),會(huì)發(fā)生什么呢? 由于我們將負(fù)載均衡從邊緣移開(kāi),***步需要?jiǎng)?chuàng)建一個(gè)帶有內(nèi)部VIP的新的負(fù)載均衡器。 我們將使用172.16.255.62作為VIP。

在ubuntu1上:

 

  1. uuid=`ovn-nbctl create load_balancer vips:172.16.255.62="172.16.255.130,172.16.255.131"
  2. echo $uuid 

***個(gè)測(cè)試:將負(fù)載均衡器應(yīng)用于“內(nèi)部”邏輯交換機(jī)。

在ubuntu1上:

 

  1. # apply and verify 
  2. ovn-nbctl set logical_switch inside load_balancer=$uuid 
  3. ovn-nbctl get logical_switch inside load_balancer 

然后從vm3測(cè)試(位于“inside”):

 

  1. root@ubuntu2:~# ip netns exec vm3 curl 172.16.255.62:8000 
  2. i am vm1 
  3. root@ubuntu2:~# ip netns exec vm3 curl 172.16.255.62:8000 
  4. i am vm1 
  5. root@ubuntu2:~# ip netns exec vm3 curl 172.16.255.62:8000 
  6. i am vm2 

實(shí)驗(yàn)貌似成功了。

再?gòu)?ldquo;inside”刪除負(fù)載均衡器,并將其應(yīng)用于“dmz”。在ubuntu1上:

 

  1. ovn-nbctl clear logical_switch inside load_balancer 
  2. ovn-nbctl set logical_switch dmz load_balancer=$uuid 
  3. ovn-nbctl get logical_switch dmz load_balancer 

然后再次從 vm3測(cè)試:

 

  1. root@ubuntu2:~# ip netns exec vm3 curl 172.16.255.62:8000 
  2. ^C 

不好,它掛起了。 那我們?cè)囋噺膙m1(它也駐留在“dmz”)測(cè)試:

 

  1. root@ubuntu2:~# ip netns exec vm1 curl 172.16.255.62:8000 
  2. ^C 

也不行。 這強(qiáng)烈說(shuō)明了對(duì)客戶(hù)端的邏輯交換機(jī)而不是服務(wù)器的邏輯交換機(jī)應(yīng)用負(fù)載平衡的要求。一定要清理環(huán)境。

在ubuntu1上:

 

  1. ovn-nbctl clear logical_switch dmz load_balancer 
  2. ovn-nbctl destroy load_balancer $uuid 

結(jié)語(yǔ)

基本的負(fù)載平衡功能是非常有用的。 由于它直接構(gòu)建到OVN中,意味著在你的SDN解決方案中又少部署一個(gè)軟件。 雖然OVN負(fù)載均衡器的功能不多,但是我認(rèn)為它滿(mǎn)足了大部分用戶(hù)的需求。我也期望某些不足,如缺乏的健康檢查功能未來(lái)能夠在OVN中實(shí)現(xiàn)。。在下一篇文章中,我將介紹OVN的網(wǎng)絡(luò)安全功能。

責(zé)任編輯:未麗燕 來(lái)源: SDNLAB
相關(guān)推薦

2023-02-13 16:39:45

Kubernetes容器負(fù)載均衡器

2010-05-06 10:14:31

負(fù)載均衡器

2010-04-22 10:09:28

負(fù)載均衡器

2010-05-04 13:32:37

nginx負(fù)載均衡器

2011-03-17 09:27:07

HAProxy負(fù)載均衡

2011-08-24 13:45:49

HAProxy負(fù)載均衡負(fù)載均衡器

2022-07-14 08:53:48

MetalLBkubernetes

2023-03-30 13:32:51

負(fù)載均衡器HDFS

2024-02-22 10:11:00

負(fù)載均衡器反向代理

2010-03-24 10:35:02

Nginx負(fù)載均衡器

2024-07-17 08:36:53

2010-05-04 13:38:25

nginx負(fù)載均衡器

2010-04-21 18:21:36

負(fù)載均衡器配置

2010-04-22 10:46:40

Lvs負(fù)載均衡故障負(fù)載均衡器

2010-05-10 18:22:51

負(fù)載均衡器

2024-06-18 08:14:21

2010-05-10 14:13:26

2010-04-20 10:46:59

什么是負(fù)載均衡器

2010-07-15 11:16:04

負(fù)載均衡

2010-04-22 22:25:50

F5負(fù)載均衡器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)