我遇到了一些关于 Eucalyptus 私有云构建的问题。这个问题有两个版本,一个简单版本,一个较长版本。
简单的:
熟悉私有云的人能给我画一张图来说明云的“IP 方案”吗?我很难决定每个组件应该放在哪里。如果我想在不同的物理机器上安装 CLC、Walrus、CC、SC、NC,网络拓扑应该是什么?
更多信息:我现在有 12 台物理机器在运行云,但无法将卷附加到实例。我想知道我应该把存储控制器放在哪里,公共网络?在 CLC 下?在 CC 下?与 CC 同一级别?没有图片,根本找不到解释。我尽了一切努力,实例正在运行,可以访问它们,只是该死的卷问题困扰了我整整一周。
长版本:
- 我已经在 4 台物理服务器上成功配置了 Eucalyptus,并且运行良好。
- 这四个服务器分别是:CLC、SC、CC、NC
- 问题是我不太确定应该把 SC 放在哪里,因为我的云的拓扑是这样的:
- 现在 CC 已连接到两个交换机:ENTSWitch 和 PrivateSwitch。并且有两个 IP:公网 IP->10.11.25.115,私网 IP->10.11.20.1。节点控制器仅连接到私网交换机,并且具有私网 IP 10.11.20.2
- 现在一切正常,使用 managed-novlan 模式,节点控制器可以部署实例并为其获取公共 IP 地址。一切都很顺利。
- 问题来了,我可以在存储控制器上创建卷。但是卷无法附加到实例。
- 想知道是否因为节点控制器与存储控制器位于不同的网络下。
尝试通过以下方式解决问题:
- A. 也许我不应该将存储控制器连接到 ENTSwitch?将 SC 从公共网络更改为专用网络
- B. 尝试再次注册存储控制器但失败。原因:云无法访问私有网络。
- C. 尝试在 CC 上注册 sc,不可以,必须在 CLC 上注册
- D.添加路由到CLC,现在CLC与SC可以互相连接了。
- E. 注册成功,仍然无法附加卷。
- F:错误日志:
[root@HeroNodeServer1 图片]# cat /var/log/eucalyptus/nc.log | grep Volume [2010 年 8 月 20 日星期五 16:36:12][015662][EUCAINFO] doAttachVolume() 已调用(id=i-33BD0649 vol=vol-59C90629 remote=/dev/etherd/e0.1 local=/dev/sdb) [2010 年 8 月 20 日星期五 16:37:53][015662][EUCAERROR] AttachVolume() 失败 (err=-1) XML= [2010 年 8 月 20 日星期五 16:37:53][015662][EUCAERROR] 错误:doAttachVolume() 失败,错误 = 1 [2010 年 8 月 20 日星期五 16:37:53][015662][EUCAINFO] doAttachVolume() 已调用(id=i-33BD0649 vol=vol-59C90629 remote=/dev/etherd/e0.1 local=/dev/sdb) [2010 年 8 月 20 日星期五 16:37:53][015662][EUCAERROR] AttachVolume() 失败 (err=-1) XML= [2010 年 8 月 20 日星期五 16:37:53][015662][EUCAERROR] 错误:doAttachVolume() 失败,错误 = 1 [2010 年 8 月 20 日星期五 16:37:53][015662][EUCAINFO] doAttachVolume() 已调用(id=i-33BD0649 vol=vol-59C90629 remote=/dev/etherd/e0.1 local=/dev/sda5) [2010 年 8 月 20 日星期五 16:37:53][015662][EUCAERROR] AttachVolume() 失败 (err=-1) XML= [2010 年 8 月 20 日星期五 16:37:53][015662][EUCAERROR] 错误:doAttachVolume() 失败,错误 = 1 [2010 年 8 月 20 日星期五 16:37:58][015662][EUCAINFO] doAttachVolume() 已调用(id=i-33BD0649 vol=vol-59C90629 remote=/dev/etherd/e0.1 local=/dev/sda4) [2010 年 8 月 20 日星期五 16:39:38][015662][EUCAERROR] AttachVolume() 失败 (err=-1) XML= [2010 年 8 月 20 日星期五 16:39:38][015662][EUCAERROR] 错误:doAttachVolume() 失败,错误 = 1 [2010 年 8 月 20 日星期五 16:39:38][015662][EUCAINFO] doAttachVolume() 已调用(id=i-33BD0649 vol=vol-59C90629 remote=/dev/etherd/e0.1 local=/ev/sdp) [2010 年 8 月 20 日星期五 16:39:38][015662][EUCAERROR] 错误:doAttachVolume() 失败,错误 = 1 [2010 年 8 月 20 日星期五 16:39:38][015662][EUCAINFO] doAttachVolume() 已调用(id=i-33BD0649 vol=vol-59C90629 remote=/dev/etherd/e0.1 local=/dev/sdp) [2010 年 8 月 20 日星期五 16:39:38][015662][EUCAERROR] AttachVolume() 失败 (err=-1) XML= [2010 年 8 月 20 日星期五 16:39:38][015662][EUCAERROR] 错误:doAttachVolume() 失败,错误 = 1 [2010 年 8 月 20 日星期五 16:41:15][015662][EUCAINFO] doAttachVolume() 已调用(id=i-33BD0649 vol=vol-5A030630 remote=/dev/etherd/e0.2 local=/dev/sdp) [2010 年 8 月 20 日星期五 16:42:55][015662][EUCAERROR] AttachVolume() 失败 (err=-1) XML= [2010 年 8 月 20 日星期五 16:42:55][015662][EUCAERROR] 错误:doAttachVolume() 失败,错误 = 1 [2010 年 8 月 20 日星期五 16:43:12][015662][EUCAINFO] doAttachVolume() 已调用(id=i-33BD0649 vol=vol-5A030630 remote=/dev/etherd/e0.2 local=/dev/sdc) [2010 年 8 月 20 日星期五 16:44:52][015662][EUCAERROR] AttachVolume() 失败 (err=-1) XML= [2010 年 8 月 20 日星期五 16:44:52][015662][EUCAERROR] 错误:doAttachVolume() 失败,错误 = 1 [2010 年 8 月 20 日星期五 16:50:02][015662][EUCAINFO] doAttachVolume() 已调用(id=i-33BD0649 vol=vol-59C90629 remote=/dev/etherd/e0.1 local=/dev/sdd) [2010 年 8 月 20 日星期五 16:51:42][015662][EUCAERROR] AttachVolume() 失败 (err=-1) XML= [2010 年 8 月 20 日星期五 16:51:42][015662][EUCAERROR] 错误:doAttachVolume() 失败,错误 = 1
问题:
- 我到底应该将 SC 连接到哪里?公共网络还是私有网络?
- 如果需要连接到专用网络,如果 CLC 无法访问专用网络,如何注册 SC
- 为什么两个解决方案都无法将卷附加到实例?
================================================================
这是第二个:
- 我目前正尝试对其进行更多测试。
- 我想将4物理架构扩展为16物理架构。
- 不管我想使用多少台机器,有一个问题困扰了我很久,读了很多文献却没能解决。
- 我设计的新架构如下图所示
- 在新的拓扑中,我假设存储控制器应该连接到专用网络
- 在此模型中,在节点控制器上运行的实例应分配两个 IP 地址,一个是私有的,一个是“公共的”
- 公网IP地址应该和CC在同一个网络中,对吗?
- 也就是说实例可以通过CC所在的网络访问。
- 并且 CLC 应该运行网关服务,以便实例可以访问外部网络
问题:
- 设计上有什么问题吗?
- 如果实例只能获得与集群控制器位于同一网络下的“公共 IP”,那么客户端如何从外部网络访问它们?
- 意思是,云外的客户端如何通过 CLC 访问实例?
- CLC 是否具有与 CC 相同的机制,为实例分配“公共 IP”以便可以访问?
================================
我要问的就这些。
非常感谢您阅读这篇混乱的帖子,并且非常感谢任何形式的回复!
答案1
以下答案均假设网络模式为 MANAGED-NOVLAN(这可能也适用于 MANAGED 模式)。
第 1 部分:
-1) 除非您有特殊需求,否则我建议将 SC 与 CC 结合在一起。
-2) 在托管模式下,CC 位于公共网络和云集群(其中一个)的私有网络之间。如果 SC 位于 CC 机器上,则可以与两个网络通信。如果您决定将 SC 放在私有网络上的单独服务器上,则需要在 CC 上创建 NAT 规则(使用 iptables)以启用 SC 和 CLC 通过 CC 防火墙之间的通信。CLC 将需要该规则才能与 SC 通信。
-3) 在解决方案 1 中,您的 SC 未连接到私有交换机(这是必须的)。在解决方案 2 中,您可能没有在 CC 上创建该 iptables 规则,因此 SC 被隔离在 CC 后面。
第 2 部分:
-1) 一个更正:合并交换机 CTI 和 switch1,它应该是与公共网络连接的同一交换机。我还建议(除非绝对需要)将 CLC 和 WC 合并到一台机器中,并将 SC 合并到各自的 CC 上。此图(http://cssoss.files.wordpress.com/2010/05/eucalyptus_cloud.png?w=600&h=467) 的 UEC 云可以帮助您。
-2) 当您创建新实例 (euca-run-instance) 时,Eucalyptus 将在管理运行实例的节点的 CC 服务器上创建新的 iptable 规则。该规则允许通过 CC 进行通信。此 NAT 遍历路由公共 IP 与其对应的私有 IP 之间的通信。
-3) 客户端通过相应的 CC 访问实例。CLC 仅用于管理云,但一旦实例启动,CC 就会处理通信。
-4)简而言之,不是。
答案2
好吧,让我们试着开始回应这个问题
- SC 问题
SC 需要始终可以从实例访问,因此它需要与节点控制器位于同一网络中,实例无法看到存储,因为它位于不同的网络上。
- 网络拓扑结构
拥有独立的网络固然很好,但我认为最好将安全性建立在防火墙和流量控制的基础上,而不是让事情变得太复杂,Eucalyptus 喜欢简单的网络,从一个网络开始,不要将其一分为二,直到您有非常好的安全感。集中精力打造安全的 CLC 和 CC,因为其他组件的安全性将由专用网络和 Eucalyptus 提供的协议提供。此外,NC 在任何情况下都不需要外部 IP。
- 网络设计
在我看来,这种设计很可靠,所有公共地址都将由 CC 提供,因此 CC 实际上将成为您的网关,可以将其视为 Amazon EC2 中的“可用区域”,通过拥有多个 CC,您可以创建您的区域。
总之,密切关注 CLC、CC 和 Walrus,确保您了解它们的安全和通信的来龙去脉,其余组件应该一切正常,并在内部网络中顺利运行。