0. 背景知识
AA 集群中的各个节点,完全是分布式结构,并不存在主从关系。各个节点共享完全相同的:
- PVTypeInfo 数据库表
- PV查询权限和结果(在某一节点上查询所有 PV,也能获取到其他节点中存储的 PV)
- appliances.xml 文件(集群性质要求我们将此项设为一致)
- EPICS_CA_ADDR_LIST(集群性质要求我们将此项设为一致)
1. 防火墙未开启导致无法成功建立集群
在 ARCHAPPL_APPLIANCES 指向的 appliances.xml 文件中定义了各个集群节点的 IP 和端口号之后,启动 Archiver Appliance 出错:
[Startup executor] ERROR org.epics.archiverappliance.mgmt.MgmtPostStartup - Exception running post startup on the management app
org.epics.archiverappliance.config.exception.ConfigException: Exception adding member to cluster
at org.epics.archiverappliance.config.DefaultConfigService.postStartup(DefaultConfigService.java:532)
at org.epics.archiverappliance.mgmt.MgmtPostStartup.run(MgmtPostStartup.java:44)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: java.lang.IllegalStateException: Node failed to start!
at com.hazelcast.instance.HazelcastInstanceImpl.<init>(HazelcastInstanceImpl.java:140)
at com.hazelcast.instance.HazelcastInstanceFactory.constructHazelcastInstance(HazelcastInstanceFactory.java:196)
at com.hazelcast.instance.HazelcastInstanceFactory.newHazelcastInstance(HazelcastInstanceFactory.java:175)
at com.hazelcast.instance.HazelcastInstanceFactory.newHazelcastInstance(HazelcastInstanceFactory.java:125)
at com.hazelcast.core.Hazelcast.newHazelcastInstance(Hazelcast.java:57)
at org.epics.archiverappliance.config.DefaultConfigService.postStartup(DefaultConfigService.java:530)
... 7 more
可以查看集群中其他节点相应的 IP 和端口号是否在防火墙中开启,若未开启,将导致集群建立过程出错。
开启方法:
sudo firewall-cmd --permanent --zone=public --add-port=xxx/tcp
sudo firewall-cmd --reload
2. 集群会自动为每个PV规划所属节点(appliance)
当两个 AA 服务