Hazelcast服务器作为Linux服务

9
如何在生产环境中将Hazelcast服务器作为Linux服务运行?
使用以下命令运行Hazelcast服务器:
java -server -cp hazelcast.jar com.hazelcast.examples.StartServer
StartServer将在标准终端输出运行服务器,最简单的方法是将其作为Linux服务运行并将日志写入文件。您应该如何指定Hazelcast的最小和最大内存分配。
我需要在EC2实例中设置它,并进行打包以作为服务运行。当EC2自动扩展启动一个实例时,Hazelcast服务器会启动并加入集群。
谢谢

Hazelcast通常不作为独立环境运行,而是嵌入到JVM中。你是如何使用Hazelcast的?能否多说一些? - pveentjer
我目前有一个可运行的jar包,路径中包含一个hazelcast.xml文件。该xml文件包含启用Ec2自动发现选项的配置细节。当EC2实例启动时,我运行“nohup java -cp hazelcast.jar com.hazelcast.StartServer >> /opt/hazelcast.log”命令来启动服务器。请指引我嵌入hazelcast到jvm的参考资料。-谢谢 - Santhosh S
说实话,目前Hazelcast没有这样的功能可用。我认为添加这个功能并不复杂。我的建议是看看例如Tomcat或Jetty,需要哪些脚本来设置服务。顺便提一下,这也因发行版而异。 - pveentjer
1个回答

9
要将Hazelcast用作服务,您只需要编写一个启动和停止Java应用程序的shell/bash脚本。然后,对于控制Hazelcast配置,您需要传递系统属性"hazelcast.config",并提供包含hazelcast.xml配置的文件的路径。此外,如果您想要自定义日志记录,可以包括JAR文件(例如log4j2),并设置系统属性"log4j.configurationFile"和包含日志记录配置的XML/JSON文件的路径。不要忘记在您的Hazelcast配置中将属性"hazelcast.logging.type"设置为相应的类型。以下是一个示例代码,这里有一个非常简单的bash脚本来完成您想要的事情。我没有测试它,它只是指导您使用的一些东西:
#!/bin/bash

function start {
   cd /opt/hazelcast
   rm -f /opt/hazelcast/hazelcast.pid
   javaCmd = "/my/java/home/bin/java -server -cp hazelcast.jar:apache-log4j-2.0-beta9.jar -Dhazelcast.config=/opt/hazelcast/hazelcast.xml -Dlog4j.configurationFile=/opt/hazelcast/log4j2.xml com.hazelcast.examples.StartServer"
   cmd="nohup $javaCmd >> /opt/hazelcast/service.log 2>&1 & echo \$! >/opt/hazelcast/hazelcast.pid"
   su -c "$cmd"
   return 0; }


function stop {
   pid="$(</opt/hazelcast/hazelcast.pid)"
   kill -s KILL $pid || return 1
   return 0; }


function main {
   RETVAL=0
   case "$1" in
      start)                                               
         start
         ;;
      stop)                                                
         stop
         ;;
      *)
         echo "Usage: $0 {start|stop}"
         exit 1
         ;;
      esac
   exit $RETVAL
}


main $1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接