我可以在多个 GlusterFS EC2 实例前使用 Amazon Load Balancer 吗?

我可以在多个 GlusterFS EC2 实例前使用 Amazon Load Balancer 吗?

我在 EC2 上设置高可用性文件系统集群时遇到了一个有趣的问题。设置背后的想法很简单:2 个 GlusterFS 节点位于两个独立的可用区域中,彼此之间同步数据。我可以将这两个服务器中的任何一个安装在任何其他 EC2 实例上,没有任何问题。

但是,为了分散事情并迁移出坏节点,我想将其放在负载均衡器后面。问题似乎很简单,我打开了负载均衡器上的端口,然后将主机设置为负载均衡器而不是单个 glusterFS 节点,但是它坚持说无法建立连接。我认为这可能是防火墙问题,为了排除这种可能性,我实际上打开了端口 1024-65535。这肯定是一个糟糕的想法,但我需要排除这种可能性。

日志内容如下:

[2013-04-24 21:51:03.581564] I [glusterfsd.c:1666:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.3.1
[2013-04-24 21:51:03.608884] W [socket.c:1512:__socket_proto_state_machine] 0-glusterfs: reading from socket failed. Error (Transport endpoint is not connected), peer (1.2.3.4:24007)

奇怪的是,我可以通过同一端口上的 telnet 成功连接到该 IP。

有人曾经这样做过吗?或者有人对我如何解决这个问题有任何见解吗?

谢谢!

答案1

听起来,您正在尝试对客户端为发现 Gluster 基础设施而进行的初始轮询进行负载平衡。

mount -t glusterfs loadbalancer:Your_VOL /usr/local/specialhome

这仅适用于初始连接。一旦客户端成功获取其感兴趣的卷的拓扑,它就会直接连接到所需的砖块。此时 LB 不再参与。

正如您所了解的,Gluster 不喜欢这样。

根据 Gluster 的惯例,有几种解决此问题的方法:

  • 循环 DNS 条目
  • 不同的加载选项

循环调度不是负载平衡这句话在这里经常听到,但在这种情况下,它并没有那么糟糕。你只是在初始连接时使用它,仅此而已。

安装选项为:

mount -t glusterfs -o backupvolfile-server=rrdns-02 rrdns-01:Your_VOL /usr/local/specialhome

如果挂载选项中直接给出的名称没有响应,该backupvolfile-server选项会告诉挂载使用不同的名称。结合使用这两种方法将允许您处理暂时关闭的节点。

相关内容