我正在设置我的第一个 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
在每台服务器上,我在 /export/brick1 处挂载了一个存储卷
然后我在 192.168.0.11 上运行
gluster 卷创建 gv0 副本 2 192.168.0.11:/导出/brick1 192.168.0.12:/导出/brick1 192.168.0.13:/导出/brick1 192.168.0.14:/导出/brick1
但我收到了错误:
volume create: gv0: failed: Host 192.168.0.11 is not in 'Peer in Cluster' state
果然,如果你运行 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 是其中的一部分。即
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)
所以 192.168.0.11 肯定是集群的一部分。
问题是,为什么运行 gluster 命令时无法在第一台 gluster 服务器上创建卷。这是正常现象还是某种错误?
答案1
我看到一条关于与对等点 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 来解析名称。这对于本地机器来说根本无法正常工作。
每个节点上都有类似下面的内容。
包含以下内容的 hosts 文件
192.168.0.11 gluster1
192.168.0.12 gluster2
192.168.0.13 gluster3
192.168.0.14 gluster4
解决方法是先删除受信任的对等体
sudo gluster peer detach gluster2
sudo gluster peer detach gluster3
sudo gluster peer detach gluster4
然后将每台机器上的 hosts 文件更改为
# Gluster1
127.0.0.1 gluster1
192.168.0.12 gluster2
192.168.0.13 gluster3
192.168.0.14 gluster4
# Gluster2
192.168.0.11 gluster1
127.0.0.1 gluster2
192.168.0.13 gluster3
192.168.0.14 gluster4
ETC
然后进行对等探测,最后创建卷,就成功了。
我怀疑在这种情况下使用 IP 地址(公共 IP 地址)是否可行。如果您使用 NAT 后面的私有地址,它应该可以工作。在我的例子中,每个服务器都在 AWS 云中的 NAT 后面。
答案2
尝试使用以下格式明确定义副本数为四个节点:-
gluster volume create NEW-VOLNAME [stripe COUNT] [replica COUNT] [transport <tcp | rdma>] NEW-BRICK ...
我认为这是纯复制品并且没有条纹?
从 192.168.0.11 尝试这个:-
首先分离所有内容:
sudo gluster peer detach 192.168.0.12
sudo gluster peer detach 192.168.0.13
sudo gluster peer detach 192.168.0.14
下一步按照此格式重新添加
gluster volume create gv0 replica 4 transport tcp 192.168.0.11:/export/brick1 192.168.0.12:/export/brick1 192.168.0.13:/export/brick1 192.168.0.14:/export/brick1
笔记我已经明确定义了一个四节点副本集。我还明确定义了传输传输控制协议。
如果您希望在副本集中的两个设备之间进行条带化,则可以使用如下方法:-
gluster volume create gv0 stripe 2 replica 2 transport tcp 192.168.0.11:/export/brick1 192.168.0.12:/export/brick1 192.168.0.13:/export/brick1 192.168.0.14:/export/brick1
坚持下去,我最近发现了 gluster,并且我爱上了这个分布式文件系统的理念......一件真正的艺术品。
我使用 gluster 为 KVM 虚拟数据存储提供 HA 冗余。神奇的东西