2017-07-20 1 views
1

Ich habe 5 VMs mit CentOS 7, jede mit Kafka und dem eingebetteten Tierpfleger läuft.CentOS 7 systemd Benötigt und After-Werte für Kafka abhängig von lokalen Zookeeper?

In meinen Systemdatendateien habe ich versucht, zookee.service als Benötigt die Abhängigkeit von kafka.service zu verwenden, aber es scheint nicht zu funktionieren, und die Dokumente nicht explizit klären, ob nur .target-Dateien gültige Werte sind Requires (und ich nehme auch After/Before an) oder .service-Dateien selbst sind ebenfalls erlaubt.

Muss ich einen zoekeeper.target für Requires verwenden?

Soll ich auch Wants anstelle von Requires verwenden, falls Kafka gut starten kann, aber der lokale Zookeeper nicht? Auf diese Weise würde ich davon ausgehen, dass Kafka sich mit einem der anderen Zoowärter verbinden würde, da er alle fünf kennt, während der örtliche Tierpfleger repariert werden könnte und später wieder in das Ensemble zurückkehren würde. Aber der Tierpfleger würde zumindest versuchen, jederzeit mit Kafka zu beginnen.

Hier sind meine .service Dateien:

kafka.service

# Kafka server (broker) management 

[Unit] 
Description=Apache Kafka server (broker) 
Documentation=http://kafka.apache.org/documentation.html 
Requires=network.target remote-fs.target zookeeper.service 
After=network.target remote-fs.target zookeeper.service 

[Service] 
Type=simple 
User=root 
Group=root 
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties 
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh 
Restart=on-abnormal 

[Install] 
WantedBy=multi-user.target 

zookeeper.service

# Zookeeper server management (Kafka-embedded) 

[Unit] 
Description=Apache Zookeeper server (Kafka-embedded) 
Documentation=http://zookeeper.apache.org 
Requires=network.target remote-fs.target 
After=network.target remote-fs.target 

[Service] 
Type=simple 
User=root 
Group=root 
ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties 
ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh 
Restart=on-abnormal 

[Install] 
WantedBy=multi-user.target 

edit: Ich erwartete eine Abhängigkeitshierarchie zeigt zookeeper unter kafka eingekerbt, um zu sehen, aber sie erscheinen nur als Geschwister:

# systemctl --all list-dependencies | egrep '(kafka|zookeeper)' 
● ├─kafka.service 
● ├─zookeeper.service 

Antwort

0

Entweder .target- oder .service-Dateien können Abhängigkeiten sein (.tarting wird als Gruppierungseinheit anstelle von .service-Dateien für Blätter bevorzugt). Entweder funktioniert gut in einer Voraussetzung, will, After, zB:

Requires=network.target remote-fs.target zookeeper.service 
After=network.target remote-fs.target zookeeper.service 

Ich weiß noch nicht, warum es nicht zookeeper als Abhängigkeit von kafka angezeigt werden, aber es wirkt, wie es ist, wenn ich tue:

sudo systemctl start kafka