ceph存储 ceph集群网络配置

简介

建立一个高性能的Ceph存储集群网络配置是至关重要的。 Ceph的存储集群不执行CEPH客户的路由请求或路由调度。相反, Ceph的Client直接提出请求CEPH OSD守护进程。 Ceph的OSD守护代表Ceph的客户端执行数据备份,这意味着备份和其他因素施加额外负荷Ceph的存储集群网络。

我们的快速入门(Our Quick Start configurations)提供了一个简单的Ceph的配置文件,它也只是设置MON的IP地址和守护进程的主机名。除非你指定集群网络, Ceph只假定一个单一的“公用”网络。 Ceph的功能只在一个公共网络中有效,但与第二的“集群”在大型集群网络,您可能会看到显着的性能改善。

我们建议运行Ceph的存储群集有两个网络:一个公共网络(前端)和集群(背面)网络。为了支持两个网络,每个Ceph的节点将需要有一个以上的网卡。

ceph存储 ceph集群网络配置_第1张图片

考虑经营两个独立的网络有以下几个原因:

性能: 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 ​​。此外,在公共网络和集群网络必须能够将流量路由到对方,这是我们出于安全原因,不推荐。

网络配置设置

 

网络配置设置不是必需的。Ceph的假设公共网络的所有主机上运行,除非您特别配置群集网络。

公共网络

公共网络配置,可以明确定义为公网的IP地址和子网。您可能专门分配静态IP地址或覆盖公共网络的守护进程。

公共网络

说明:公众(前端)网络(例如,192.168.0.0/24)的IP地址和网络掩码。[全局]设置。您可以指定用逗号分隔的子网。
类型:{IP地址} / {子网掩码} , {IP地址} / {子网掩码}]
要求:没有
默认:N / A

公共地址

说明:公众(前端)网络的IP地址。设置每个守护。
类型:IP地址
要求:没有
默认:N / A

群集网络

群集网络配置允许你声明一个集群网络,并明确定义为集群网络的IP地址和子网。您可能专门分配静态IP地址或覆盖集群网络的设置,使用集群地址设置为特定的OSD守护。

集群网络

 

说明:集群的IP地址和网络掩码网络(如10.0.0.0/24)。[全局]设置。您可以指定用逗号分隔的子网。
类型:{IP地址} / {子网掩码} , {IP地址} / {子网掩码}]
要求:没有
默认:N / A

集群地址

说明:集群网络的IP地址。设置每个守护。
类型:地址
要求:没有
默认:N / A

绑定

绑定设置默认的端口范围Ceph的OSD和MDS守护的使用。默认范围为6800:7100。确保您的IP表配置,您可以使用配置的端口范围。

您也可以启用Ceph的守护程序绑定到IPv6地址。

绑定最小端口号

说明:最低端口号,其中一个OSD或MDS守护的绑定。
类型:32位整数
默认:6800
要求:没有

绑定最大端口号

说明:最大端口号,其中一个OSD或MDS守护的绑定。
类型:32位整数
默认:7100
要求:No

绑定IPV6地址

说明:启用Ceph的守护进程绑定到IPv6地址。
类型:Boolean
默认:假
要求:No

主机

Ceph配置文件中,预计一个主机设置在每个宣布监控器、元数据服务器和OSD。

mon addr

说明:查看{主机名},{端口}的列表,客户端可以使用连接到Ceph的监视器。
类型:String
要求:没有
默认:N / A

host

说明:主机名。使用此设置特定的守护进程实例(例如,[osd.0] )。
类型:String
要求:是,守护实例。
默认:本地

提示:不要使用本地主机。为了让您的主机名,在命令行上执行 hostname -s 和使用您的主机的名称。

重要:使用第三方部署系统,查找你的主机名时,你不应该指定主机的任何值。

TCP

Ceph的默认情况下禁用TCP缓冲。

tcp nodelay

说明:Ceph使tcp NODELAY的每个请求立即发送(无缓冲)。禁用Nagle算法,增加网络流量,它可以引入延迟。如果遇到大量的小数据包,您可以尝试禁用TCP NODELAY。
类型:Boolean
要求:No
默认:true

tcp rcvbuf

说明:在接收端上的一个网络连接。默认情况下禁用。
类型:32位
要求:没有
默认:0

ms tcp read timeout

说明:如果一个客户端或守护程序发出请求到另一个Ceph的守护进程,并没有删除未使用的连接,TCP超时定义连接,指定的秒数后闲置。
类型:64位
要求:没有
默认:900 15分钟。

 

你可能感兴趣的:(ceph存储 ceph集群网络配置)