我可以通过ignite.sh启动一个节点并在后台运行吗?具体操作方法是什么?
如果是后台启动,如何正确关闭这个节点?
如果是前台启动,ctrl+c结束,能保证缓存中的数据持久化到数据库吗?如果是的话,后台启动可以做到这一点吗?
系统:Centos 7
后台数据库:mongodb
./ignite.sh ../config/default-config.xml &
fg%<process_ID>
将应用程序带到前台,其中可以使用 jobs
以编程方式调用 Ignite.close()
以编程方式调用 System.exit()
发送用户中断信号。 Ignite 使用 JVM 关闭挂钩在 JVM 停止之前执行自定义逻辑。如果您通过运行 ignite.sh 启动节点并且不将其与终端分离,则可以通过按 Ctrl+C
来停止节点通过发送kill -9 sig 来终止进程不会触发关闭挂钩,并且在某些极端情况下可能会导致数据损坏等问题。
配置
J-DIGNITE_WAIT_FOR_BACKUPS_ON_SHUTDOWN=true
或ShutdownPolicy.Graceful(相同)显式强制进行额外的备份一致性检查,以确保节点不会离开集群,如果这会导致分区丢失,即如果主节点和备份节点(如果有) )分区离开了网格,请查看此文档以获取更详细的说明。在大多数情况下,您不会关闭此功能,我建议您保留此设置。
但是,如果您不需要备份验证,您可以删除
J-DIGNITE_WAIT_FOR_BACKUPS_ON_SHUTDOWN=true
并将 SIGINT 发送到 Java 进程。
为了检查节点是否正常停止,您应该在日志中看到以下消息:
[INFO][shutdown-hook] Invoking shutdown hook...
./control.sh --set-state INACTIVE