2014-01-09 3 views
6

Wie hazelcast server als Linux-Dienst in Produktionsumgebungen ausgeführt wird?Hazelcast-Server als Linux-Dienst

java -Server -cp hazelcast.jar com.hazelcast.examples.StartServer

Startserver den Server mit Ausgängen läuft Terminal std, was ist der einfachste Weg, es als Linux-Service und schreiben Protokolle in eine Datei ausführen & Wie gebe ich die minimale und maximale Speicherzuweisung für Hazelcast an.

Ich muss es als Service in einer EC2-Instanz einrichten und bündeln. Wenn die EC2-Autoskalierung eine Instanz startet, startet der hazelcast-Server und tritt dem Cluster bei.

Dank

+0

Hazelcast wird normalerweise nicht als eigenständige Umgebung ausgeführt, sondern in einer JVM eingebettet. Wie verwenden Sie Hazelcast? Kannst du ein bisschen mehr darüber erzählen? – pveentjer

+0

Ich habe derzeit ein lauffähiges Glas mit einer haselnuss.xml im Pfad. Die XML-Datei enthält Konfigurationsdetails für die automatische Erkennung von Ec2-Optionen. Wenn die EC2-Instanz gestartet wird, führe ich den Befehl "nohup java -cp hazelpix.jar com.hazelcast.StartServer >> /opt/hazelcast.log" aus, um den Server zu starten. Bitte zeigen Sie mir Referenzen zum Einbetten von Haselnuss mit einem jvm. - Danke –

+0

Um ehrlich zu sein, gibt es zur Zeit keine solche Funktionalität für Hazelcast. Es wäre nicht so kompliziert hinzuzufügen, denke ich. Mein Vorschlag wäre, z.B. Tomcat oder Jetty, welche Skripte benötigt werden, um einen Dienst einzurichten. Es variiert auch viel von Distribution zu Distribution BTW. – pveentjer

Antwort

9

Um Hazelcast als Service benötigen Sie nur einen Shell/Bash-Skript zu schreiben, das die Java-Anwendung startet und stoppt. Um Ihre Hazelcast-Konfiguration zu steuern, müssen Sie die Systemeigenschaft hazelcast.config mit dem Pfad zu der Datei übergeben, die die hazelcast.xml-Konfiguration enthält.

Wenn Sie eine benutzerdefinierte Protokollierung wünschen, können Sie die JAR-Dateien (z. B. für log4j2) hinzufügen und die Systemeigenschaft log4j.configurationFile und den Pfad zur XML/JSON-Datei mit der Protokollierungskonfiguration festlegen. Vergiss nicht, die Eigenschaft hazelcast.logging.type auf den entsprechenden Typ in deiner hazelcast-Konfiguration zu setzen.

Als Beispielcode, hier haben Sie ein wirklich einfaches Bash-Skript für das, was Sie wollen. Ich habe es nicht getestet und es ist nur etwas, um Sie zu führen:

#!/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