为什么我不能创建这个 gluster 卷?

hoo*_*enz 10 glusterfs ubuntu-12.04

我正在设置我的第一个 Gluster 3.4 安装,一切都很好,直到我想创建分布式复制卷。

我有 4 个服务器 192.168.0.11、192.168.0.12、192.168.0.13 和 192.168.0.14。

从 192.168.0.11 我跑了:

gluster peer probe 192.168.0.12
gluster peer probe 192.168.0.13
gluster peer probe 192.168.0.14
Run Code Online (Sandbox Code Playgroud)

在每台服务器上,我在 /export/brick1 处都有一个已安装的存储卷

然后我跑了 192.168.0.11

gluster 卷创建 gv0 replica2 192.168.0.11:/export/brick1 192.168.0.12:/export/brick1 192.168.0.13:/export/brick1 192.168.0.14:/export/brick1

但我收到错误:

volume create: gv0: failed: Host 192.168.0.11 is not in 'Peer in Cluster' state
Run Code Online (Sandbox Code Playgroud)

果然,如果您运行 gluster peer status,它会显示与其他连接主机的 3 个对等点。即对等点数:3

主机名:192.168.0.12 端口:24007 Uuid:bcea6044-f841-4465-88e4-f76a0c8d5198 状态:集群中的对等点(已连接)

主机名:192.168.0.13 端口:24007 Uuid:3b5c188e-9be8-4d0f-a7bd-b738a88f2199 状态:集群中的对等点(已连接)

主机名:192.168.0.14 端口:24007 Uuid:f6f326eb-0181-4f99-8072-f27652dab064 状态:集群中的对等点(已连接)

但是,从 192.168.0.12 开始,相同的命令还显示了 3 个主机,而 192.168.0.11 是其中的一部分。IE

Number of Peers: 3

Hostname: 192.168.0.11
Port: 24007
Uuid: 09a3bacb-558d-4257-8a85-ca8b56e219f2
State: Peer in Cluster (Connected)

Hostname: 192.168.0.13
Uuid: 3b5c188e-9be8-4d0f-a7bd-b738a88f2199
State: Peer in Cluster (Connected)

Hostname: 192.168.0.14
Uuid: f6f326eb-0181-4f99-8072-f27652dab064
State: Peer in Cluster (Connected)
Run Code Online (Sandbox Code Playgroud)

所以 192.168.0.11 绝对是集群的一部分。

问题是,为什么我在运行 gluster 命令时无法在第一个 gluster 服务器上创建卷。这是正常行为还是某种错误?

hoo*_*enz 16

我看到一条关于未连接的套接字与对等 127.0.0.1 的模糊错误消息。

[2013-08-16 00:36:56.765755] W [socket.c:1494:__socket_proto_state_machine] 0-socket.management:从套接字读取失败。错误(传输端点未连接),对等 (127.0.0.1:1022)

事实证明,我遇到的问题是由于 NAT。我试图创建位于 NAT 设备后面的 gluster 服务器并使用公共 IP 来解析名称。这对于本地机器将无法正常工作。

我在每个节点上都有类似以下内容。

一个主机文件包含

192.168.0.11  gluster1
192.168.0.12  gluster2
192.168.0.13  gluster3
192.168.0.14  gluster4
Run Code Online (Sandbox Code Playgroud)

修复方法是首先删除受信任的对等点

sudo gluster peer detach gluster2
sudo gluster peer detach gluster3
sudo gluster peer detach gluster4
Run Code Online (Sandbox Code Playgroud)

然后把每台机器上的hosts文件改成

# Gluster1
127.0.0.1     gluster1
192.168.0.12  gluster2
192.168.0.13  gluster3
192.168.0.14  gluster4
Run Code Online (Sandbox Code Playgroud)


# Gluster2
192.168.0.11  gluster1
127.0.0.1     gluster2
192.168.0.13  gluster3
192.168.0.14  gluster4
Run Code Online (Sandbox Code Playgroud)

等等

然后peer probe,最后创建成功的volume。

我怀疑在这种情况下使用 IP 地址(公共地址)是否有效。如果您使用 NAT 后面的私有地址,它应该可以工作。就我而言,每个服务器都位于 AWS 云中的 NAT 后面。

  • 就我而言,我不必触及 127.0.0.1,使用内部 IP 地址就足够了 (2认同)