我对在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鹦鹉螺上可用,所以太平洋即使在询问时也会有它。:(