歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> IBM AIX >> 如何在多租戶雲環境中細粒度調整IBM AIX 7.1和Linux上的網絡服務質量

如何在多租戶雲環境中細粒度調整IBM AIX 7.1和Linux上的網絡服務質量

日期:2017/3/3 14:56:03   编辑:IBM AIX

簡介

隨著中小型企業的快速發展,可擴展性、低初始投資、簡單部署、減少占地面積、按使用付費、安全性等等成為了熱門問題,這些都可以通過雲模型解決。在所有雲組件中,多租戶模型有助於共享軟件和硬件層。用外行人的話來說,租戶就是利用其它人所有的資產,並為使用付費。類似地,雲術語中的多租戶就是指多個客戶端利用雲基礎架構所有者提供的共享資源。

多租戶的概念構成了兩個成熟的雲實現模型的基礎:軟件即服務 (SaaS),其中多個客戶端將軟件作為資源進行共享;基礎架構即服務 (IaaS),其中多個客戶端共享應用程序、平台和網絡資源。多租戶支持雲供應商實現的主要功能是:保持客戶端之間的分離,並管理提供給客戶端的服務的質量。

本文幫助雲管理員通過選定的價格方案,使用 Linux 而不是專用硬件(如網絡分配器)為每個 IP 地址構建不同的網絡 QoS 策略,向租戶提供經過細粒度調整的 QoS。

多租戶環境中的網絡模式

讓我們考慮這樣一個場景:一個雲供應商擁有多個租戶,並且該供應商希望根據客戶選擇的方案在網絡中提供不同的服務質量。下圖展示了一個樣例 QoS 實現的圖示,其中一些機器被劃分到不同的 QoS 池中,而雲管理員需要對網絡帶寬進行劃分。

圖 1. 企業雲中的典型網絡配置

為了驅動上下文,我們假設一個雲供應商啟動了多個付費級別 (slab) 並提出了以下方案細節:

Platinum 方案下的客戶將獲得全部網速的 60%。

Gold 方案下的客戶將獲得全部網速的 25%。

Silver 方案下的客戶將獲得全部網速的 10%。

Bronze 方案下的客戶將獲得全部網速的 5%。

現在,考慮這樣一個場景:客戶 A 和客戶 B 利用同一個數據服務器基礎架構,其中,客戶 A 屬於 Platinum 方案,而客戶 B 屬於 Bronze 方案。如果客戶 B 的工作負載在共享的基於 Linux 的雲服務器中需要占用大量網絡資源,那麼很顯然,如果不進行網絡隔離或施加限制,那麼客戶 B 將占用為客戶 A 預留的網絡資源,從而間接影響到客戶 A 的工作負載,並違背對高級客戶做出的服務水平協議 (SLA)。這個問題在多租戶環境中十分突出,為了滿足多租戶客戶的服務質量和 SLA,雲提供商應當對滿足客戶端請求的網絡接口卡使用可管理的細粒度網絡整形 (network shaping)。

為了演示上述問題是如何解決的,我們將通過一個簡單的設置演示網絡 QoS 的配置,其中涉及一個 Linux 服務器(作為中央通用雲服務器托管雲應用程序)和一個 AIX 7.1 客戶端(構成租戶系統,訪問雲應用程序),如下圖所示。在假設的情況下,與網絡相關的 QoS 以及與 AIX 客戶端相關的 SLA 需要將客戶端的數據下載速度限制為 1MBps。在本演示中,我們將在 Linux 服務器上調整網絡帶寬,將 AIX 客戶端獲取或下載數據的速度限制為 1MBps。這有助於遵守與該 AIX 客戶端有關聯的網絡 QoS。

圖 2. Linux 服務器和 AIX 7.1 客戶端之間的示例設置

配置網絡 QoS 的必要條件

配置網絡 QoS 的必要條件包括:

運行 Linux 服務器

Linux 內核 2.6.x(RHEL 6 默認內核足夠滿足要求)

RPM 包列表

Iproute2 /tc(iproute-2.6.35-9.fc14.x86_64.rpm,由 Red Hat Enterprise Linux [RHEL] 安裝附帶)

tcptrack(衡量客戶端網絡帶寬)[可選]

AIX 7.1 客戶端

無需特殊的包或配置

Linux kernel 2.6.x 為網絡整形提供了靈活的實施策略,整個過程可以分為三個步驟:

步驟 1:識別必須應用網絡整形的目標對象。在本例中,必須對租戶的 IP 地址應用網絡限制(參閱 在與 AIX 客戶端相連的 Linux 服務器上配置網絡 QoS 小節)。

步驟 2:根據內核中啟用的模塊創建排隊策略(參考下面的 在與 AIX 客戶端相連的 Linux 服務器上配置網絡 QoS 小節中的 清單 5 到 清單 8)。

步驟 3:將排隊策略連接到一個過濾器(默認過濾器是 u32)(參閱 在與 AIX 客戶端相連的 Linux 服務器上配置網絡 QoS 小節中 清單 9 下方的內容 )。

圖 3 顯示了網絡整形的概念圖。

圖 3. 網絡整形概念圖

在圖 3 中:

X 表示服務器的總的網絡速度(物理帶寬)。

Ci=X/Ri 表示子類獲得的網絡帶寬,通過使用比例 (R) 劃分總的網絡帶寬來實現。

Ci/Ti 表示分配給每個租戶的網絡帶寬,通過使用客戶端選擇的 QoS 方案 (T) 劃分子類網絡帶寬來實現。

root qdisc、子類 和 過濾器 及其重要性將在本文後面解釋。

在與 AIX 客戶端相連的 Linux 服務器上配置網絡 QoS

分配靜態 IP 地址

向 Linux 服務器和客戶端 AIX 系統分配一個靜態 IP 地址。

Linux 服務器 IP 地址 = 172.18.10.60

AIX 客戶端 IP 地址 = 172.18.10.40

注意:確保這兩個 IP 地址都是可到達的。

檢查根排隊策略 (qdisc) 是否存在

網絡帶寬整形是一種基於樹的分層方法,其中,根 qdisc 構成基本單元(與內核通信的排隊策略),被附加到與客戶端相連的服務器網絡接口。tc 命令(由 Linux 提供)是一個管理接口,我們在本例中使用它進行網絡整形。(有關 tc 命令的更多信息,請參考 Linux 服務器的 tc 指南)。下面的步驟允許您檢查是否存在與內核相連的網絡帶寬限定配置。本文假設不存在這些配置,並因此而創建了一個新的配置。

清單 1. 檢查是否存在 qdisc

root@linuxserver:# tc qdisc show dev ethX0
root@linuxserver:# echo $?
0

確保沒有根 -qdisc 與網絡設備相連。如果有的話,請按照以下方式刪除 -qdisc。

清單 2. 刪除 qdisc

root@linuxserver:# tc qdisc del root dev ethX0
root@linuxserver:# echo $?
0

檢查與 qdisc 相連的類

類構成了可編程的實體,它們與根排隊策略相關。

清單 3. 檢查是否存在類

root@linuxserver:# tc class show dev ethX0
root@linuxserver:# echo $?
0

檢查是否存在過濾器

過濾器是操作實體,用於在所有與 Linux 服務器相連的 IP 地址中分離指定的 IP 地址。

清單 4. 檢查是否存在過濾器

root@linuxserver:# tc -s –d filter show dev ethX0
root@linuxserver:# echo $?
0

在任意 tc 命令中包含 –s(統計)和/或 –d(細節)可以生成更詳細的輸出。

添加排隊策略

向 ethX0(服務器的以太網卡,與 Linux 服務器相連,用於處理 AIX 客戶端的請求)添加根 -qdisc。在這裡,htb 指 hierarchical token bucket 類完整排隊策略。有關的更多細節,請參閱 參考資料 小節。

清單 5. 添加根 -qdisc

root@linuxserver:# tc qdisc add dev ethX0 root handle 10: htb
    
root@linuxserver:# tc -s qdisc show dev eth0
qdisc htb 10: r2q 10 default 0 direct_packets_stat 29
 Sent 3338 bytes 29 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0
    
root@linuxserver:# tc -d qdisc show dev eth0
qdisc htb 10: r2q 10 default 0 direct_packets_stat 58 ver 3.17

創建子類策略

當創建了一個子類並將它附加到一個 qdisc 時,這將充當所有其他類的父類。該類的帶寬參數等於接口的物理帶寬的參數(這裡假設接口物理帶寬是 100 Mbps)。

清單 6. 添加一個子類

root@linuxserver:# tc class add dev ethX0 parent 10:0 classid 10:10 htb rate 100mbps
    
root@linuxserver:# tc -s class show dev eth0
class htb 10:10 root prio 0 rate 800000Kbit ceil 800000Kbit burst 101600b 
cburst 101600b 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0
 lended: 0 borrowed: 0 giants: 0
 tokens: 1016 ctokens: 1016
    
root@linuxserver :# tc -d class show dev eth0
class htb 10:10 root prio 0 quantum 200000 rate 800000Kbit ceil 800000Kbit 
burst 101600b/8 mpu 0b overhead 0b cburst 101600b/8 mpu 0b overhead 0b level 0

您可以使用 ethtool 命令找到以太網卡的物理帶寬,如下所示。有關 ethtool 命令的更多信息,參見 Red Hat Linux 發行版提供的手冊。

清單 7. 在 Linux 服務器上使用 ethtool 命令識別物理網絡帶寬

root@linuxserver:# ethtool ethX0

向創建的子類添加一個葉類

添加一個葉類,其速度由方案中 AIX 客戶端選擇的參數確定。在下面的例子中,AIX 客戶端選擇的網絡速度選項 1Mbps。

清單 8. 添加一個葉類

root@linuxserver:# tc class add dev ethX0 parent 10:10 classid 10:100 htb rate 1mbps
    
root@linuxserver:# tc -s class show dev eth0
class htb 10:10 root rate 800000Kbit ceil 800000Kbit burst 101600b cburst 101600b 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0
 lended: 0 borrowed: 0 giants: 0
 tokens: 1016 ctokens: 1016
class htb 10:100 parent 10:10 prio 0 rate 8000Kbit ceil 8000Kbit burst 2600b 
cburst 2600b 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0
 lended: 0 borrowed: 0 giants: 0
 tokens: 2600 ctokens: 2600
     
root@localhost :# tc -d class show dev eth0
class htb 10:10 root rate 800000Kbit ceil 800000Kbit burst 101600b/8 mpu 0b 
overhead 0b cburst 101600b/8 mpu 0b overhead 0b level 7
class htb 10:100 parent 10:10 prio 0 quantum 100000 rate 8000Kbit ceil 8000Kbit 
burst 2600b/8 mpu 0b overhead 0b cburst 2600b/8 mpu 0b overhead 0b level 0

向創建的子類附加一個 qdisc

根據公平排隊算法,向 qdisc 附加一個隨機公平排隊 (SFQ),它屬於排隊策略集合。

查看本欄目更多精彩內容:http://www.bianceng.cn/OS/unix/

清單 9. 向子類添加一個 qdisc

root@linuxserver:# tc qdisc add dev ethX0 parent 10:100 sfq quantum 1514b perturb 15
    
root@linuxserver:# tc -s qdisc show dev eth0
qdisc htb 10: r2q 10 default 0 direct_packets_stat 256
 Sent 37768 bytes 256 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 8002: parent 10:100 limit 128p quantum 1514b perturb 15sec 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0
    
root@linuxserver:# tc -d qdisc show dev eth0
qdisc htb 10: r2q 10 default 0 direct_packets_stat 286 ver 3.17
qdisc sfq 8002: parent 10:100 limit 128p quantum 1514b flows 128/1024 perturb 15sec

在這裡,quantum 用作添加子類的選項(在 清單 9 中),指數據流中在輪到下一個隊列之前允許從隊列中去掉的字節數量。

向已創建的葉子類附加一個過濾器

清單 10. 向葉子類添加一個過濾器

root@linuxserver:# tc filter add dev ethX0 protocol ip parent 10:0 prio 5 u32 match 
ip dst 172.18.10.40 flowid 10:100
    
root@linuxserver:# tc -s filter show dev eth0
filter parent 10: protocol ip pref 5 u32 
filter parent 10: protocol ip pref 5 u32 fh 800: ht divisor 1
filter parent 10: protocol ip pref 5 u32 fh 800::800 order 2048 key ht 800 bkt 0
flowid 10:100 rule hit 30 success 0)
  match 097a7a04/ffffffff at 16 (success 0 ) 
    
root@linuxserver:# tc -d filter show dev eth0
filter parent 10: protocol ip pref 5 u32 
filter parent 10: protocol ip pref 5 u32 fh 800: ht divisor 1
filter parent 10: protocol ip pref 5 u32 fh 800::800 order 2048 key ht 800 bkt 0
flowid 10:100
  match 097a7a04/ffffffff at 16

清單 10 表示添加一個過濾器來匹配網絡所限定的特定 IP 地址。

但在企業環境中,客戶端可以請求對每個子網應用網絡速度限制,清單 11 中展示了這類場景。

清單 11. 對整個子網應用過濾器

root@linuxserver:# tc filter add dev ethX0 protocol ip parent 10:0 prio 5

u32 match ip dst 172.18.10.1/24 flowid 10:100

AIX 上的樣例網絡帶寬測試

清單 12 顯示了在對可用帶寬應用限制之前 AIX 7.1 上的網絡帶寬測試。

清單 12. 使用 SCP 協議在 AIX 7.1 上測試從 Linux 服務器下載樣例數據

root@linuxserver:# ssh [email protected]
******************************************************************************
*                                                                            *
*   Welcome to AIX Version 7.1 !                                             * 
*                                                                            * 
*   Please see the README file in /usr/lpp/bos for information pertinent to  *
*   this release of the AIX Operating System.                                *
*                                                                            *
*                                                                            *
******************************************************************************
# cd tmp/traffic_shaping
# scp [email protected]:/root/Data .
[email protected]’s password:
Data                                       38%   502MB   24MB/s   1:06  ETA

清單 13 顯示了在對可用帶寬施加限制後 AIX 7.1 上的網絡帶寬測試。

清單 13. 使用 SCP 協議在 AIX 7.1 上測試從 Linux 服務器下載樣例數據

root@linuxserver:# ssh [email protected]
******************************************************************************
*                                                                            *
*   Welcome to AIX Version 7.1 !                                             * 
*                                                                            * 
*   Please see the README file in /usr/lpp/bos for information pertinent to  *
*   this release of the AIX Operating System.                                *
*                                                                            *
*                                                                            *
******************************************************************************
# cd tmp/traffic_shaping
# scp [email protected]:/root/Data .
[email protected]’s password:
Data                                      7%   125MB   962KB/s   17:01  ETA

在清單 12 和清單 13 中的輸出中,您可以清晰地看到我們對網絡帶寬的配置效果。進行配置後,復制文件所分配的帶寬被限制為 24 MB/s 到 962 KB/s 之間(約 1MBps)。

注意

上述步驟需要 root 權限來對網絡設備進行配置。

整形配置在重啟後被清除。(可以通過在初始化腳本中添加規則解決這個問題)。

上面介紹的網絡整形只適用於從 Linux 服務器流出的網絡流量。換句話說,只適用於從 Linux 服務器獲取或下載的數據,不適用於上傳到 Linux 服務器的數據。要對進入 Linux 服務器的網絡流量進行網絡整形(即上傳到 Linux 服務器的數據),需要增加一個 Linux 系統來充當客戶端與服務器之間的路由器,並用 tc 命令適當地配置規則。或者,您可以使用 Intermediate Message Queue (IMQ) 或 Intermediate Functional Block (IFB),它們是針對 Linux 內核 2.6.x 的補丁,可以通過 iptable 表應用該補丁並在中央托管 Linux 服務器上配置它。

在上例中,當我們提到 35% 的網絡分配給 Gold QoS 下的系統時,這意味著 Gold 集合下的所有系統都分配了 35% 的網絡,而並不是說 Gold 下的所有系統總共分配了 35% 的網絡。

結束語

本文演示了雲管理員如何在一台中央 Linux 服務器上利用強大的 Linux 網絡整形功能為多個租戶劃分可用帶寬。此類功能通常可以幫助實現私有雲部署,在這種環境下,雲管理員希望跨不同部門對網絡帶寬進行調整,不同的部門相當於具有不同網絡 QoS 需求的租戶。

Copyright © Linux教程網 All Rights Reserved