1.部署流程
1.1下载安装包
https://github.com/hazelcast/hazelcast/releases
下载的时候注意版本号,hazelcast是使用jdk部署的,需要和jdk版本的对应
- 5.3.5需要jdk11+
- 5.5.0 需要jdk17+,其他版本自行测试,演示使用5.3.5
1.2解压并复制两个配置文件
unzip hazelcast-5.3.5.zip
cd hazelcast-5.3.5/
cp config/hazelcast.xml config/hazelcast-1.xml
cp config/hazelcast.xml config/hazelcast-2.xml
1.3修改配置文件
hazelcast-1.xml
<network>
<port auto-increment="true" port-count="100">5703</port>
<interfaces enabled="false">
<interface>127.0.0.1</interface>
<!-- 可以添加更多本地 IP -->
</interfaces>
<outbound-ports>
<ports>0</ports>
</outbound-ports>
<join>
<auto-detection enabled="false"/>
<multicast enabled="false"/>
<tcp-ip enabled="true">
<member-list>
<member>172.22.2.109:5703</member>
<member>172.22.2.109:5704</member>
</member-list>
</tcp-ip>
<!-- 其他发现机制 -->
</join>
<ssl enabled="false"/>
<failure-detector>
<icmp enabled="false"/>
</failure-detector>
<rest-api enabled="true">
<endpoint-group name="HEALTH_CHECK" enabled="true"/>
<endpoint-group name="CLUSTER_READ" enabled="false"/>
</rest-api>
</network>
hazelcast-2.xml
<network>
<port auto-increment="true" port-count="100">5703</port>
<interfaces enabled="false">
<interface>127.0.0.1</interface>
<!-- 可以添加更多本地 IP -->
</interfaces>
<outbound-ports>
<ports>0</ports>
</outbound-ports>
<join>
<auto-detection enabled="false"/>
<multicast enabled="false"/>
<tcp-ip enabled="true">
<member-list>
<member>172.22.2.109:5703</member>
<member>172.22.2.109:5704</member>
</member-list>
</tcp-ip>
<!-- 其他发现机制 -->
</join>
<ssl enabled="false"/>
<failure-detector>
<icmp enabled="false"/>
</failure-detector>
<rest-api enabled="true">
<endpoint-group name="HEALTH_CHECK" enabled="true"/>
<endpoint-group name="CLUSTER_READ" enabled="false"/>
</rest-api>
</network>
1.4启动脚本
一定要通过-Dhazelcast.config=xxx来制定配置文件,–config 的方式不生效
#!/bin/bash
# 定义 Hazelcast 配置文件和日志文件的路径
CONFIG_FILE_1="config/hazelcast-1.xml"
CONFIG_FILE_2="config/hazelcast-2.xml"
LOG_FILE_1="logs/hazelcast-1.log"
LOG_FILE_2="logs/hazelcast-2.log"
# 定义类路径,假设所有依赖都在 lib 目录下
CLASSPATH="lib/hazelcast-5.3.5.jar:lib/*"
# 定义要运行的 Java 主类
MAIN_CLASS="com.hazelcast.core.server.HazelcastMemberStarter"
# 启动第一个 Hazelcast 实例
echo "Starting Hazelcast instance 1..."
nohup java -Dhazelcast.config=$CONFIG_FILE_1 -cp "$CLASSPATH" "$MAIN_CLASS" --config "$CONFIG_FILE_1" > "$LOG_FILE_1" 2>&1 &
if [ $? -eq 0 ]; then
echo "Hazelcast instance 1 started successfully. Logs: $LOG_FILE_1"
else
echo "Failed to start Hazelcast instance 1. Check logs: $LOG_FILE_1"
fi
# 启动第二个 Hazelcast 实例
echo "Starting Hazelcast instance 2..."
nohup java -Dhazelcast.config=$CONFIG_FILE_2 -cp "$CLASSPATH" "$MAIN_CLASS" --config "$CONFIG_FILE_2" > "$LOG_FILE_2" 2>&1 &
if [ $? -eq 0 ]; then
echo "Hazelcast instance 2 started successfully. Logs: $LOG_FILE_2"
else
echo "Failed to start Hazelcast instance 2. Check logs: $LOG_FILE_2"
fi
2.防火墙设置
2.1查看防火墙状态:
sudo firewall-cmd --state
检查防火墙服务状态:
sudo systemctl status firewalld
检查端口开放情况
列出所有开放的端口:
使用以下命令列出当前开放的所有端口:
sudo firewall-cmd --list-ports
2.2检查特定端口是否开放:
使用以下命令检查特定端口是否已开放,例如端口 5703 和 5704:
sudo firewall-cmd --query-port=5703/tcp
sudo firewall-cmd --query-port=5704/tcp
如果端口已开放,输出将是 yes;否则,输出将是 no。
开放端口
如果某些端口尚未开放,可以使用以下命令开放这些端口:
2.3开放端口:
sudo firewall-cmd --add-port=5703/tcp --permanent
sudo firewall-cmd --add-port=5704/tcp --permanent
重新加载防火墙配置,使新配置生效:
sudo firewall-cmd --reload
验证端口是否已开放:
再次检查端口是否已开放:
sudo firewall-cmd --query-port=5703/tcp
sudo firewall-cmd --query-port=5704/tcp