1. 程式人生 > >ceph配置——3.網路配置

ceph配置——3.網路配置

簡介

建立一個高效能的Ceph儲存叢集網路配置是至關重要的。 Ceph的儲存叢集不執行CEPH客戶的路由請求或路由排程。相反, Ceph的Client直接提出請求CEPH OSD守護程序。 Ceph的OSD守護代表Ceph的客戶端執行資料備份,這意味著備份和其他因素施加額外負荷Ceph的儲存叢集網路。

我們的快速入門(Our Quick Start configurations)提供了一個簡單的Ceph的配置檔案,它也只是設定MON的IP地址和守護程序的主機名。除非你指定叢集網路, Ceph只假定一個單一的“公用”網路。 Ceph的功能只在一個公共網路中有效,但與第二的“叢集”在大型叢集網路,您可能會看到顯著的效能改善。

我們建議執行Ceph的儲存群集有兩個網路:一個公共網路(前端)和叢集(背面)網路。為了支援兩個網路,每個Ceph的節點將需要有一個以上的網絡卡。

考慮經營兩個獨立的網路有以下幾個原因:

效能: CEPH OSD守護程序處理資料複製為Ceph的客戶。 Ceph的OSD守護不止一次地備份資料,Ceph的OSD守護程式之間的網路負載輕鬆相形見絀Ceph的客戶端和Ceph的儲存叢集之間的網路負載。這可以引入延遲,並引發一個性能問題。恢復和再平衡還可以引入顯著的延遲,在公共網路上。Ceph的備份資料的可擴充套件性和高可用性的其他細節,見MON/ OSD心跳流量的詳細資訊。
安全性:雖然大多數人一般都是合法公民,一個小部分人,確喜歡搞什麼被稱為拒絕服務(DoS)攻擊。 Ceph的OSD守護程序之間的通訊被中斷時,可能不再反映安置組一個active+clean的狀態,這可能會阻止使用者讀取和寫入資料。一個非常好的方式來防禦這種型別的攻擊是保持一個完全獨立的叢集網路沒有直接連線到網際網路。另外,考慮使用訊息簽名以擊敗欺騙攻擊。

IP TABLES

預設情況下,守護程式繫結到埠6800:7100範圍內,這個範圍內,你的自由選擇配置。在配置您的IP表,檢查預設的iptables的 6800:7100範圍內的埠。您可以配置這個範圍內的埠
        sudo iptables -L

一些Linux發行版有這樣的規則:拒絕所有入站請求,除了SSH所有的網路介面外。例如:

REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
你需要刪除你的公共和叢集網路上的最初規則,把它們替換為相應的規則,當你準備變更Ceph的節點上的埠。

MON的iptables

Ceph-MON預設情況下,監聽埠6789上。此外, Ceph-MON總是在公共網路上操作。如果您使用下面的例子新增到規則當中,確保您用公網介面(例如,為eth0, eth1的,等等)替換下面的"iface" , 用公網的IP地址和公共網路的網路埠替換{ip-address}和{netmask}
sudo iptables -A INPUT -i {iface} -p tcp -s {ip-address}/{netmask} --dport 6789 -j ACCEPT

MDS IP表

Ceph的元資料伺服器監聽在公共網路上的第一個可用埠——6800埠。確保您打開了每個執行Ceph節點的Ceph的資料伺服器的6800埠。當您使用下面的例子中新增到表中時,確保您用公網介面(例如,為eth0, eth1的,等等)替換下面的"iface" , 用公網的IP地址和公共網路的網路埠替換{ip-address}和{netmask}。例如:
sudo iptables -A INPUT -i {iface} -m multiport -p tcp -s {ip-address}/{netmask} --dports 6800:6810 -j ACCEPT

OSD IPtables


預設情況下, Ceph的OSD守護程序繫結到一個Ceph節點的第一個可用埠——6800埠。確保您開啟至少有三個埠,在埠6800開始執行在主機上的每一個OSD 。 Ceph的節點上每個Ceph的OSD守護程式最多可以使用三個埠:

一個用於客戶端和MON交談。
一個數據傳送到其它的OSD。

一個用於心態檢驗。

埠是特定埠,因此您不需要開啟任何比Ceph的節點上執行的守護程序所需的埠數還多的埠。您可能會考慮開設一些額外的埠,一個守護程序失敗的情況下,並重新啟動,而不讓去重新啟動守護程序繫結到一個新的埠。
如果您設定了獨立的公共網路和叢集網路,你必須為公共網路和叢集網路設定規則,因為客戶會利用公共網路連線,而其他Ceph的OSD守護程序將使用叢集網路連線。當您使用下面的例子中新增到表中時,確保您用公網介面(例如,為eth0, eth1的,等等)替換下面的"iface" , 用公網的IP地址和公共網路的網路埠替換{ip-address}和{netmask}。例如:

sudo iptables -A INPUT -i {iface}  -m multiport -p tcp -s {ip-address}/{netmask} --dports 6800:6810 -j ACCEPT
提示:如果您執行Ceph的元資料伺服器在同一Ceph的節點,他們為Ceph的OSD守護例項,你可以加固公共網路配置的步驟。確保您開啟每個主機的每個守護程序所需的埠數量。

CEPH NETWORKS

要設定Ceph的網路配置,您必須新增一個網路配置在配置檔案在[global ]部分。我們5分鐘的快速啟動提供了一個簡單的Ceph的配置檔案,假設一個公網客戶端和伺服器上相同的網路和子網。 Ceph的功能僅對一個公共的網路起作用。然而, Ceph可以建立更具體的標準,其中包括多個IP網路和公共網路的子網。您也可以建立單獨的叢集網路處理OSD心跳,物件備份和故障恢復。不要混淆IP您在您的配置設定面向公眾的IP地址的網路客戶端的IP地址,可以使用它來訪問您的服務。典型的內部IP網路往往是192.168.0.0 10.0.0.0 。
提示:如果您指定一個以上的IP地址和子網掩碼,無論是公共或群集網路的子網內的網路必須能夠路由到對方。此外,請確保您包括您的IP為他們必要的表和開放埠的每一個IP地址/子網。
注意:Ceph使用CIDR表示法的子網(例如, 10.0.0.0/24 ) 。
當你配置你的網路,你可能會重新啟動您的群集或重新啟動每個守護程序。 Ceph的守護程式動態繫結,所以你不必重新啟動整個叢集一次,如果你改變你的網路配置。

PUBLIC NETWORK

要配置公共網路,下面的選項新增到您的Ceph的配置檔案的[ global]部分。

[global]
        ...
        public network = {public-network/netmask}

CLUSTER NETWORK

如果你宣告一個群集網路,OSDs將在整個叢集網路中路由​​心跳、物件備份和故障恢復。這可以提高效能相比,相比於使用一個單一的網路。要配置群集網路,下面的選項新增到您的Ceph的配置檔案的[ global]部分。
[global]
        ...
        cluster network = {cluster-network/netmask}
我們寧願從公共網路或網際網路為增加安全性,叢集網路不可達。

CEPH DAEMONS


Ceph的有一個網路配置的要求,適用於所有的守護程序: Ceph的配置檔案中必須為每個守護程序指定主機。 Ceph的Ceph的配置檔案還要求指定MON的IP地址和埠。
提示:主機設定是主機的短名稱(即不是FQDN ) ,它不是一個IP地址。輸入hostname -s 在命令列中檢索的主機名。
[mon.a]

        host = {hostname}
        mon addr = {ip-address}:6789

[osd.0]
        host = {hostname}
您不必為守護程序設定主機IP地址。如果你有一個靜態IP配置以及公共和叢集網路的執行, Ceph的配置檔案可以指定為每個守護程序的主機的IP地址。一個守護程序設定一個靜態的IP地址,下面的選項(s)應出現在守護程序的ceph.conf檔案中。
[osd.0]
        public addr = {host-public-ip-address}
        cluster addr = {host-cluster-ip-address}
一個NIC OSD在兩個網路叢集
一般來說,我們不建議用一個NIC在兩個網路群集部署OSD主機。然而,你可以在公共網路上操作OSD主機,通過在Ceph配置檔案的[ osd.n ]部分新增公共ip地址,其中n是指有一個NIC的OSD ​​。此外,在公共網路和叢集網路必須能夠將流量路由到對方,這是我們出於安全原因,不推薦。

NETWORK CONFIG SETTINGS

網路配置設定不是必需的。 Ceph的假設公共網路的所有主機上執行,除非您特別配置群集網路。

公共網路配置,可以明確定義為公網的IP地址和子網。您可能專門分配靜態IP地址或重寫public network,使用 publicaddr 為特定的守護程序。

public network

說明:公眾(前端)網路的IP地址和子網掩碼(例如,192.168.0.0/24 ) 。 [global]設定。您可以指定用逗號分隔的子網。
型別: {ip-address}/{netmask}[,{ip-address}/{netmask}]
要求:無
預設:N / A

publicaddr

說明:公眾(前端)網路的IP地址。設定每個守護。
型別: IP地址
要求:無
預設:N / A

CLUSTER NETWORK  叢集網路

叢集網路配置允許你宣告一個叢集網路,並明確定義為叢集網路的IP地址和子網。您可能專門分配靜態IP地址或覆蓋叢集網路設定,使用群集地址設定為特定OSD守護的。


叢集網路

說明: IP地址和子網掩碼的叢集(背面)網路(例如, 10.0.0.0/24 ) 。 [global]設定。您可以指定用逗號分隔的子網。
型別: {ip-address}/{netmask}[,{ip-address}/{netmask}]
要求:無
預設:N / A

叢集地址
說明: IP地址為叢集(背面)網路,給每個守護程序設定。型別:地址
要求:無
預設:N / A

BIND

繫結設定Ceph的OSD和MDS守護的使用預設埠範圍。預設範圍為6800:7100 。確保您的IP表配置,您可以使用配置的埠範圍。您也可以啟用Ceph的守護程式繫結到IPv6地址。



msbindportmin
說明:最低埠號OSD或MDS守護程序將繫結。型別: 32位整數
預設值: 6800
要求:無

msbindportmax
說明:最大埠號OSD或MDS守護程序將繫結。型別: 32位整數
預設值: 7100
要求:無

msbindipv6
說明:啟用Ceph的守護程式繫結到IPv6地址。
型別:布林
預設值:false
要求:無

HOSTS
Ceph的宣告在CEPH配置檔案中至少有一個MON,在每個宣告的MON下有一個MON地址。 Ceph的期望根據a host,在MON、元資料伺服器和OSD在CEPH配置檔案中進行設定。
monaddr
說明: {主機名} : {埠}項列表,客戶端可以使用連線到Ceph的監視器。如果沒有設定, Ceph的搜尋[MON* ]部分。
型別:字串
要求:無
預設:N / A

host
說明:主機名。使用此設定特定的守護程序例項(例如, [ osd.0 ] ) 。
型別:字串
要求:是的,守護程序例項。
預設:本地
提示:不要使用localhost 。使用 hostname -s檢視你的主機名。

TCP
Ceph的預設情況下禁用TCP緩衝。
tcpnodelay

說明: Ceph的啟用TCP NODELAY的每個請求立即傳送(無緩衝) 。禁用Nagle演算法,增加網路流量,它可以引入延遲。如果遇到大量的小資料包,您可以嘗試禁用TCP NODELAY 。型別:布林
要求:無
預設:true

tcp rcvbuf
說明:在接收端上的一個網路連線的套接字緩衝區的大小。預設情況下禁用。型別: 32位整數
要求:無
預設值:0

mstcpreadtimeout
說明:如果一個客戶端或守護程式發出請求到另一個Ceph的守護程序,並沒有刪除未使用的連線, TCP讀超時定義為閒置的連線後,在指定的秒數。
型別:無符號64位整型
要求:無