部署多Corda节点遇CAPSULE EXCEPTION,求正确systemd配置
问题解决与正确systemd配置
问题根源
你遇到的CAPSULE EXCEPTION: Could not initialize cache directory ./capsule报错,实际原因是Corda节点进程对自身运行目录没有写入权限,和多节点并行运行无关。
多节点systemd正确配置模板
每个Corda节点需要单独创建systemd服务文件,确保进程以拥有目录权限的用户身份运行,且每个节点使用独立工作目录。
节点1服务文件(/etc/systemd/system/corda-node1.service)
[Unit] Description=Corda Node 1 After=network.target [Service] # 指定运行节点的用户(需提前创建,且拥有节点目录权限) User=corda Group=corda # 节点的工作目录,必须是节点jar包所在目录 WorkingDirectory=/opt/corda/node1 # 启动命令,指定java路径和节点jar包路径 ExecStart=/usr/bin/java -jar /opt/corda/node1/corda.jar # 异常退出自动重启策略 Restart=always RestartSec=5 # 日志输出配置 StandardOutput=journal+console StandardError=journal+console [Install] WantedBy=multi-user.target
节点2服务文件(/etc/systemd/system/corda-node2.service)
[Unit] Description=Corda Node 2 After=network.target [Service] User=corda Group=corda WorkingDirectory=/opt/corda/node2 ExecStart=/usr/bin/java -jar /opt/corda/node2/corda.jar Restart=always RestartSec=5 StandardOutput=journal+console StandardError=journal+console [Install] WantedBy=multi-user.target
关键配置与权限检查
- 目录权限设置:确保每个节点的工作目录所有者为指定运行用户,执行命令:
chown -R corda:corda /opt/corda/node1 chown -R corda:corda /opt/corda/node2 - 服务生效操作:配置完成后重新加载systemd并启动服务:
sudo systemctl daemon-reload sudo systemctl start corda-node1 corda-node2 # 可选:设置开机自启 sudo systemctl enable corda-node1 corda-node2 - 日志排查:若仍有问题,通过journal查看详细错误日志:
journalctl -u corda-node2 -f
内容的提问来源于stack exchange,提问作者McXD
相关产品推荐
相关产品推荐

