建立一个高性能的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的状态,这可能会阻止用户读取和写入数据。一个非常好的方式来防御这种类型的攻击是保持一个完全独立的集群网络没有直接连接到互联网。另外,考虑使用消息签名以击败欺骗攻击。
一些Linux发行版有这样的规则:拒绝所有入站请求,除了SSH所有的网络接口外。例如:
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
你需要删除你的公共和集群网络上的最初规则,把它们替换为相应的规则,当你准备变更Ceph的节点上的端口。
sudo iptables -A INPUT -i {iface} -p tcp -s {ip-address}/{netmask} --dport 6789 -j ACCEPT
sudo iptables -A INPUT -i {iface} -m multiport -p tcp -s {ip-address}/{netmask} --dports 6800:6810 -j ACCEPT
一个用于心态检验。
端口是特定端口,因此您不需要打开任何比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守护实例,你可以加固公共网络配置的步骤。确保您打开每个主机的每个守护进程所需的端口数量。
PUBLIC NETWORK
要配置公共网络,下面的选项添加到您的Ceph的配置文件的[ global]部分。
[global]
...
public network = {public-network/netmask}
[global]
...
cluster network = {cluster-network/netmask}
我们宁愿从公共网络或互联网为增加安全性,集群网络不可达。[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 和使用您的主机的名称。
重要:使用第三方部署系统,查找你的主机名时,你不应该指定主机的任何值。
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分钟。