Aerospike Community Edition:我应该如何对 `aerospike.conf` 设置集群?
Aerospike Community Edition: what should I do to `aerospike.conf` to setup a cluster?
我正在尝试在 Ubuntu 14.04 上设置一个三节点 Aerospike 集群。除了 IP address/name,每台机器都是相同的。根据 documentation,我在每台机器上安装了 Aerospike 和管理控制台。
然后我编辑了 /etc/aerospike/aerospike.conf
中的 network/service 和 network/heartbeat 部分:
network {
service {
address any
port 3000
access-address 10.0.1.11 # 10.0.1.12 and 10.0.1.13 on the other two nodes
}
heartbeat {
mode mesh
port 3002
mesh-seed-address-port 10.0.1.11 3002
mesh-seed-address-port 10.0.1.12 3002
mesh-seed-address-port 10.0.1.13 3002
interval 150
timeout 10
}
[...]
}
当我在每个节点上 sudo service aerospike start
时,服务运行但未集群。如果我尝试在管理控制台中添加另一个节点,它会通知我:"Node 10.0.1.12:3000 cannot be monitored here as it belongs to a different cluster."
你能看出我做错了什么吗?为了设置一个 Aerospike 集群而不是三个孤立的实例,我应该在每个节点上对 aerospike.conf
进行哪些更改?
您的配置似乎正确。
检查您是否能够通过端口 3001 和 3002 打开从每台主机到其余主机的 TCP 连接。
nc -z -w5 <host> 3001; echo $?
nc -z -w5 <host> 3002; echo $?
如果不是,我会首先怀疑防火墙配置。
更新 1:
netcat 命令返回 0,所以让我们尝试获取更多信息。
运行 并在每个节点上提供以下输出:
asinfo -v service
asinfo -v services
asadm -e info
更新 2:
检查要点中的输出后,asadm -e "info net"
表明所有节点都具有相同的节点 ID。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Node Node Fqdn Ip Client Current HB HB
. Id . . Conns Time Self Foreign
h *BB9000000000094 hadoop01.woolford.io:3000 10.0.1.11:3000 15 174464730 37129 0
Number of rows: 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Node Node Fqdn Ip Client Current HB HB
. Id . . Conns Time Self Foreign
h *BB9000000000094 hadoop03.woolford.io:3000 10.0.1.13:3000 5 174464730 37218 0
Number of rows: 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Node Node Fqdn Ip Client Current HB HB
. Id . . Conns Time Self Foreign
h *BB9000000000094 hadoop02.woolford.io:3000 10.0.1.12:3000 5 174464731 37203 0
Number of rows: 1
节点 ID 由结构端口(十六进制端口 3001)后跟 MAC 地址(字节顺序相反)构成。另一个标志是 "HB Self" 是非零的,并且在网状配置中预计为零(在多播配置中这也将是非零的,因为节点将接收自己的心跳消息)。
因为所有节点 ID 都相同,这表明所有 MAC 地址都相同(尽管可以使用机架感知更改节点 ID)。似乎源自本地节点(由具有相同节点 ID 的 hb 确定)的心跳将被忽略。
更新 3:
MAC个地址都是唯一的,这与之前的结论相矛盾。回复提供了正在使用的接口名称,em1,这不是 Aerospike 寻找的接口名称。 Aerospike 查找名为 eth#、bond# 或 wlan# 的接口。我假设由于该名称不是预期的三个名称之一,因此导致 MAC 地址出现问题;如果是这样,我会怀疑日志中存在以下警告?
Tried eth,bond,wlan and list of all available interfaces on device.Failed to retrieve physical address with errno %d %s
对于这种情况,network-interface-name 参数可用于指示 Aerospike 使用哪个接口生成节点 ID。此参数还确定应将哪个接口的 IP 地址通告给客户端应用程序。
network {
service {
address any
port 3000
access-address 10.0.1.11 # 10.0.1.12 and 10.0.1.13 on the other two nodes
network-interface-name em1 # Needed for Node ID
}
更新 4:
随着 3.6.0 版本的发布,这些设备名称将被自动发现。请参阅发行说明中的 AER-4026。
我正在尝试在 Ubuntu 14.04 上设置一个三节点 Aerospike 集群。除了 IP address/name,每台机器都是相同的。根据 documentation,我在每台机器上安装了 Aerospike 和管理控制台。
然后我编辑了 /etc/aerospike/aerospike.conf
中的 network/service 和 network/heartbeat 部分:
network {
service {
address any
port 3000
access-address 10.0.1.11 # 10.0.1.12 and 10.0.1.13 on the other two nodes
}
heartbeat {
mode mesh
port 3002
mesh-seed-address-port 10.0.1.11 3002
mesh-seed-address-port 10.0.1.12 3002
mesh-seed-address-port 10.0.1.13 3002
interval 150
timeout 10
}
[...]
}
当我在每个节点上 sudo service aerospike start
时,服务运行但未集群。如果我尝试在管理控制台中添加另一个节点,它会通知我:"Node 10.0.1.12:3000 cannot be monitored here as it belongs to a different cluster."
你能看出我做错了什么吗?为了设置一个 Aerospike 集群而不是三个孤立的实例,我应该在每个节点上对 aerospike.conf
进行哪些更改?
您的配置似乎正确。
检查您是否能够通过端口 3001 和 3002 打开从每台主机到其余主机的 TCP 连接。
nc -z -w5 <host> 3001; echo $?
nc -z -w5 <host> 3002; echo $?
如果不是,我会首先怀疑防火墙配置。
更新 1:
netcat 命令返回 0,所以让我们尝试获取更多信息。
运行 并在每个节点上提供以下输出:
asinfo -v service
asinfo -v services
asadm -e info
更新 2:
检查要点中的输出后,asadm -e "info net"
表明所有节点都具有相同的节点 ID。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Node Node Fqdn Ip Client Current HB HB
. Id . . Conns Time Self Foreign
h *BB9000000000094 hadoop01.woolford.io:3000 10.0.1.11:3000 15 174464730 37129 0
Number of rows: 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Node Node Fqdn Ip Client Current HB HB
. Id . . Conns Time Self Foreign
h *BB9000000000094 hadoop03.woolford.io:3000 10.0.1.13:3000 5 174464730 37218 0
Number of rows: 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Node Node Fqdn Ip Client Current HB HB
. Id . . Conns Time Self Foreign
h *BB9000000000094 hadoop02.woolford.io:3000 10.0.1.12:3000 5 174464731 37203 0
Number of rows: 1
节点 ID 由结构端口(十六进制端口 3001)后跟 MAC 地址(字节顺序相反)构成。另一个标志是 "HB Self" 是非零的,并且在网状配置中预计为零(在多播配置中这也将是非零的,因为节点将接收自己的心跳消息)。
因为所有节点 ID 都相同,这表明所有 MAC 地址都相同(尽管可以使用机架感知更改节点 ID)。似乎源自本地节点(由具有相同节点 ID 的 hb 确定)的心跳将被忽略。
更新 3:
MAC个地址都是唯一的,这与之前的结论相矛盾。回复提供了正在使用的接口名称,em1,这不是 Aerospike 寻找的接口名称。 Aerospike 查找名为 eth#、bond# 或 wlan# 的接口。我假设由于该名称不是预期的三个名称之一,因此导致 MAC 地址出现问题;如果是这样,我会怀疑日志中存在以下警告?
Tried eth,bond,wlan and list of all available interfaces on device.Failed to retrieve physical address with errno %d %s
对于这种情况,network-interface-name 参数可用于指示 Aerospike 使用哪个接口生成节点 ID。此参数还确定应将哪个接口的 IP 地址通告给客户端应用程序。
network {
service {
address any
port 3000
access-address 10.0.1.11 # 10.0.1.12 and 10.0.1.13 on the other two nodes
network-interface-name em1 # Needed for Node ID
}
更新 4:
随着 3.6.0 版本的发布,这些设备名称将被自动发现。请参阅发行说明中的 AER-4026。