在公共互联网上运行Ceph Pacific ?



我对在Internet上运行的ceph集群的正确设置有点困惑。我的目标是从不同的Kubernetes集群访问ceph集群。

我的ceph节点有公共Internet ip和一个私有网络10.0.0.0/16

/etc/hosts看起来像这样:

127.0.1.1 node1.foo.com node1
127.0.0.1 localhost
#10.0.0.2        node1 
10.0.0.3        node2
10.0.0.4        node3
#23.aa.bb.cc    node1.foo.com
23.dd.ee.ff node2.foo.com
23.gg.hh.ii node3.foo.com

在启动Ceph集群后,我设置了集群网络:

$ sudo ceph config set mon cluster_network 10.0.0.0/16

我没有设置公共网络,所以默认值是0.0.0.0(我猜)

添加一个新的监视节点,我像这样提供节点的公共IP:

$ sudo ceph orch host add node2
$ sudo ceph orch daemon add mon node2:23.dd.ee.ff

这种网络设置有意义吗?我的集群工作,我可以通过我的Kubernetes网络访问它。当然,我还设置了防火墙规则,以避免来自未知主机的流量。

我的Ceph太平洋集群只记录一些奇怪的INFO日志消息,像这样:

[INF]Filtered out host node3: does not belong to mon public_network ()
[INF]Filtered out host node2: does not belong to mon public_network ()
[INF]Filtered out host node1: does not belong to mon public_network ()

这条信息告诉我什么?我如何(如果有的话)纠正我的网络设置?

也许你错过了public network的设置,从你的日志中猜测:does not belong to mon public_network

尝试设置public network,我不知道默认设置是什么。但是如果您只设置public network,它将设置由public network分配的cluster network

查看ceph网络配置参考:

除非您指定一个集群网络,否则Ceph假定一个单一的"公共"网络。Ceph仅在公共网络中运行良好,但在大型集群中使用第二个"集群"网络可能会看到显著的性能改进。

还有一件事,在我们的集群中,我们通常注释包含127.0.1.1的行,以防止一些未知的网络问题。您应该注释掉这行#10.0.0.2 node1以解析node1主机名。

关于我相信你在标题和第一行所问的问题的未来更新:

标题:在公共互联网上运行Ceph Pacific ?
上下文我对在互联网上运行的ceph集群的正确设置有点困惑。我的目标是从不同的Kubernetes集群访问ceph集群。

我的假设是,你希望这是一个安全的设置,因为它是在互联网上。其中一条评论提到了VPN的使用,另一条评论说存储网络上的CEPH msgr协议是未加密的。让我们来看看这两点:

vpn-虚拟专用网在高cpu和现代算法的驱动下可以工作。问题是它增加了另一个封装网络,最终将增加延迟并限制吞吐量。这更适合于K8s应用程序和最终用户之间的客户机-服务器模型,而不是基础设施。

CEPH Messenger V2-正如RedHat发布的RedHat Ceph Storage 4所述:

可以为网络上的所有Ceph流量启用加密信使版本2协议的引入。安全模式设置信使v2加密Ceph守护进程之间的通信和Ceph客户端,提供端到端加密。1

这意味着,如果您使用具有安全模式的Messenger V2,您可以通过允许列表在互联网上发送流量,并且您将免受中间人攻击和其他分析。这可能比来自另一个系统的封装更快、更好,后者会增加延迟并花费您的运行费用。

最后一句话- Ceph信使V2自2019年以来一直在Ceph鹦鹉螺上可用,所以太平洋即使在询问时也会有它。:(

最新更新