Services - Windows Systeme

Im Folgenden wird beschrieben, wie OpenSearch und Karaf als Windows Dienst eingerichtet werden.

OpenSearch

Um OpenSearch als Windows-Dienst einzurichten, wird shawl [1] als Service Wrapper verwendet. Dies stellt sicher, dass Anpassungen in der zentralen Konfigurationsdatei aktiv sind. Die shawl-Binary befindet sich unter <BPC-INSTALL-DIR>\bin\shawl.exe, wenn BPC über die Bundle-Datei installiert wurde.

Windows-Dienst installieren

Der folgende Befehl installiert OpenSearch als Dienst mit dem Namen OpenSearchBpc.

<BPC-INSTALL-DIR>\bin\shawl.exe add --name OpenSearchBpc --restart-delay 5000 --stop-timeout 300000 --pass 0,130 --path "<BPC-INSTALL-DIR>\opensearch" -- cmd.exe /c "<BPC-INSTALL-DIR>\opensearch\bin\opensearch.bat < NUL"

Der Befehl konfiguriert den Dienst so, dass OpenSearch bei Dienststopp 5 Minuten erhält zum Stoppen. Sollte eine längere Zeit notwendig sein, kann dies mit --stop-timeout in Millisekunden konfiguriert werden.

Windows-Dienst starten

Nach der Installation kann der Dienst über die Windows-Dienstverwaltung oder mit folgendem Befehl gestartet werden:

sc.exe start OpenSearchBpc

Windows-Dienst konfigurieren

Nun sollte man noch den Dienst auf Automatisch stellen, damit er beim Neustart des Servers automatisch gestartet wird. Außerdem kann das Benutzerkonto konfiguriert werden, welches den OpenSearch-Dienst ausführen soll.

opensearch service windows config

Karaf

Im Karaf Directory <BPC-INSTALL-DIR>\karaf\bin\contrib befinden sich die Dateien karaf-service-win.exe und karaf-service-win.xml.

Über die Datei karaf-service-win.exe können Sie den Service installieren, deinstallieren, starten und stoppen.

In karaf-service-win.xml müssen Sie die Platzhalter für den Service anpassen. Ersetzen Sie folgende Platzhalter:

  • %KARAF_SERVICE_NAME% - Name des Dienstes unter Windows. Beispiel: "Karaf"

  • %KARAF_SERVICE_PATH% - Basispfad der Karaf Installation. Beispiel: "C:\BPC\karaf"

  • %KARAF_SERVICE_EXECUTABLE% - Name der Datei, im Verzeichnis bin, mit der Karaf gestartet wird. Beispiel: "karaf.bat"

Alternativ können Sie die Platzhalter beibehalten. In dem Fall setzen Sie für das System oder den Betriebssystem-Nutzer, der den Karaf-Service starten soll, diese Umgebungsvariablen:

KARAF_SERVICE_NAME=Karaf
KARAF_SERVICE_PATH=C:\BPC\karaf
KARAF_SERVICE_EXECUTABLE=karaf.bat
Beispiel karaf-service-win.xml mit Platzhaltern für Umgebungsvariablen
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<service>
  <!--
    This script is provided as a template you can quickly customize by replacing
    the following variables:

      KARAF_SERVICE_NAME
      KARAF_SERVICE_PATH
      KARAF_SERVICE_EXECUTABLE

    For a detailed overview of the configuration options, please visit winsw home
    page (https://github.com/kohsuke/winsw)
  -->

  <!-- Required. Has to be unique among all the services installed in a system. Should consist entirely out of alpha-numeric characters. -->
  <id>%KARAF_SERVICE_NAME%</id>
  <!-- Optional. Has to be unique among all the services installed in a system. Short display name of the service, which can contain spaces and other characters. -->
  <name>%KARAF_SERVICE_NAME%</name>
  <!-- Optional. Long human-readable description of the service. -->
  <description>Apache Karaf Service mit ID "%KARAF_SERVICE_NAME%" für BPC</description>

  <!-- start -->
  <executable>%KARAF_SERVICE_PATH%\bin\contrib\%KARAF_SERVICE_EXECUTABLE%</executable>
  <startargument>daemon</startargument>

  <!-- stop -->
  <stopexecutable>%KARAF_SERVICE_PATH%\bin\contrib\%KARAF_SERVICE_EXECUTABLE%</stopexecutable>
  <stopargument>stop</stopargument>
  <stoptimeout>10sec</stoptimeout>

  <!-- log into the same directory as karaf. Size is in kbyte. -->
  <logpath>%KARAF_SERVICE_PATH%\data\log</logpath>
  <log mode="roll-by-size">
    <sizeThreshold>2048</sizeThreshold>
    <keepFiles>3</keepFiles>
  </log>

</service>

Windows-Dienst installieren

Mit folgendem Befehl wird der Service in Windows installiert. Anschließend kann er über die Windows-Dienste-Oberfläche gestartet und gestoppt werden.

Dieses Kommando erfordert üblicherweise ein Administrationskonto. Danach sollte für den Dienst-Start ein Dienst-User mit eingeschränkten Rechten angelegt werden.

<BPC-INSTALL-DIR>\karaf\bin\contrib\karaf-service-win.exe install

Weitere mögliche Operationen sind:

  • uninstall

  • stop

  • start

  • status

  • restart

Falls im Abschnitt Karaf die Umgebungsvariablen für den Betriebssystem-User und nicht systemweit gesetzt wurden, muss hier mit dem Betriebssystem-User ausgeführt werden. Da diesem wahrscheinlich die nötigen Rechte fehlen, müssen im jeweiligen Eingabeaufforderungs-Fenster die oben genannten Umgebungsvariablen temporär auch noch einmal gesetzt werden.

Beispiel zum Starten des Services per Befehl
<BPC-INSTALL-DIR>\karaf\bin\contrib\karaf-service-win.exe start

Für mehr Informationen siehe Apache Karaf Container Documentation - Windows.


Keywords: