2014-01-09 135 views
6

如何在生產環境中將hazelcast服務器作爲linux服務運行?作爲linux服務的Hazelcast服務器

的java -server -cp hazelcast.jar com.hazelcast.examples.StartServer

startserver的運行服務器輸出到std終端,什麼是運行它作爲Linux的服務和日誌寫入到文件最簡單的方法 &如何指定Hazelcast的最小和最大內存分配。

我必須將其設置爲EC2實例中的服務並對其進行捆綁。當EC2自動調節啓動實例時,hazelcast服務器將啓動並加入羣集。

感謝

+0

Hazelcast通常不是作爲一個獨立的環境中運行,但嵌入在JVM中。 你好如何使用Hazelcast?你能多說一點嗎? – pveentjer

+0

我目前在路徑中有一個帶有hazelcast.xml的可運行jar。 xml文件包含啓用了Ec2自動發現選項的配置詳細信息。當EC2實例啓動時,我運行「nohup java -cp hazelcast.jar com.hazelcast.StartServer >> /opt/hazelcast.log」命令來啓動服務器。請指出我提及用jvm嵌入hazelcast。 - 謝謝 –

+0

說實話,目前沒有這樣的功能可用於Hazelcast。我想補充一點也不復雜。 我的建議是看例如Tomcat或Jetty需要哪些腳本來設置服務。從分配到分配btw也有很大差異。 – pveentjer

回答

9

要使用Hazelcast作爲一種服務,你只需要編寫一個啓動和停止Java應用程序的殼/ 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