Skip to content
This repository has been archived by the owner on Jul 17, 2024. It is now read-only.

Commit

Permalink
Put every Kafka mirror in a systemd unit for better management.
Browse files Browse the repository at this point in the history
  • Loading branch information
TheWall89 committed Aug 31, 2021
1 parent 85d94a3 commit 9077f86
Show file tree
Hide file tree
Showing 12 changed files with 111 additions and 18 deletions.
21 changes: 14 additions & 7 deletions roles/dcm_service/files/create_dcm_service.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
#!/bin/bash

echo [Unit] | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo Description=DCM REST Client | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
# TODO we should change this so it reflects latest changes

echo "[Unit]" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "Description=DCM REST Client" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "Requires=kafka-mirror-french-site.service kafka-mirror-greek-site.service kafka-mirror-italian-site.service kafka-mirror-spanish-site.service" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "After=kafka-mirror-french-site.service kafka-mirror-greek-site.service kafka-mirror-italian-site.service kafka-mirror-spanish-site.service" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo [Service] | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo User=$1 | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo ExecStart=/usr/bin/sudo /usr/bin/python3 /usr/bin/dcm/dcm-python/dcm_rest_client.py --dcm_ip_address $2 --spanish_site_plugin_ip_port $3 --italian_site_plugin_ip_port $4 --french_site_plugin_ip_port $5 --greek_site_plugin_ip_port $6 --port 8090 --log info | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "[Service]" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "User=$1" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "ExecStart=/usr/bin/sudo /usr/bin/python3 /usr/bin/dcm/dcm-python/dcm_rest_client.py --dcm_ip_address $2 --spanish_site_plugin_ip_port $3 --italian_site_plugin_ip_port $4 --french_site_plugin_ip_port $5 --greek_site_plugin_ip_port $6 --port 8090 --log info" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "TimeoutSec=10" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "Restart=on-failure" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "RestartSec=1" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo [Install] | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo WantedBy=default.target | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "[Install]" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null
echo "WantedBy=default.target" | sudo tee -a /etc/systemd/system/dcm.service > /dev/null

sudo chmod 664 /etc/systemd/system/dcm.service
sudo systemctl daemon-reload
Expand Down
14 changes: 8 additions & 6 deletions roles/preparation/files/create_kafka_mirror.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
#!/bin/bash
# Arguments:
# 1-site
# 2-topic name
#!/usr/bin/env bash

SITE=$1
TOPIC=$2

/opt/kafka/bin/kafka-run-class.sh kafka.tools.MirrorMaker --consumer.config /usr/bin/dcm/${SITE}_consumer.config --num.streams 1 --producer.config /usr/bin/dcm/producer.config --whitelist \'${TOPIC}\' &
/opt/kafka/bin/kafka-run-class.sh \
kafka.tools.MirrorMaker \
--abort.on.send.failure "true" \
--consumer.config "/usr/bin/dcm/${SITE}_consumer.config" \
--num.streams 4 \
--producer.config /usr/bin/dcm/producer.config \
--whitelist '^.*\.application_metric\..*$,^.*\.infrastructure_metric\..*$'
6 changes: 6 additions & 0 deletions roles/preparation/files/french_consumer.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
bootstrap.servers=BROKER_IP:9092
group.id=dp-MirrorMaker-group
exclude.internal.topics=true
#mirror.topics.whitelist=.*
client.id=mirror_maker_consumer
enable.auto.commit=false
6 changes: 6 additions & 0 deletions roles/preparation/files/greek_consumer.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
bootstrap.servers=BROKER_IP:9092
group.id=dp-MirrorMaker-group
exclude.internal.topics=true
#mirror.topics.whitelist=.*
client.id=mirror_maker_consumer
enable.auto.commit=false
6 changes: 6 additions & 0 deletions roles/preparation/files/italian_consumer.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
bootstrap.servers=BROKER_IP:9092
group.id=dp-MirrorMaker-group
exclude.internal.topics=true
#mirror.topics.whitelist=.*
client.id=mirror_maker_consumer
enable.auto.commit=false
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[Unit]
Description=Kafka MirrorMaker for French Site
PartOf=dcm.service

[Service]
ExecStart=/usr/bin/dcm/create_kafka_mirror.sh french
TimeoutSec=10
Restart=on-failure
RestartSec=1

[Install]
WantedBy=default.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[Unit]
Description=Kafka MirrorMaker for Greek Site
PartOf=dcm.service

[Service]
ExecStart=/usr/bin/dcm/create_kafka_mirror.sh greek
TimeoutSec=10
Restart=on-failure
RestartSec=1

[Install]
WantedBy=default.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[Unit]
Description=Kafka MirrorMaker for Italian Site
PartOf=dcm.service

[Service]
ExecStart=/usr/bin/dcm/create_kafka_mirror.sh italian
TimeoutSec=10
Restart=on-failure
RestartSec=1

[Install]
WantedBy=default.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[Unit]
Description=Kafka MirrorMaker for Spanish Site
PartOf=dcm.service

[Service]
ExecStart=/usr/bin/dcm/create_kafka_mirror.sh spanish
TimeoutSec=10
Restart=on-failure
RestartSec=1

[Install]
WantedBy=default.target
5 changes: 4 additions & 1 deletion roles/preparation/files/producer.config
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
bootstrap.servers=BROKER_IP:9092
acks=1
acks=-1
batch.size=100
client.id=mirror_maker_producer

max.in.flight.requests.per.connection=1
retries=1000
6 changes: 6 additions & 0 deletions roles/preparation/files/spanish_consumer.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
bootstrap.servers=BROKER_IP:9092
group.id=dp-MirrorMaker-group
exclude.internal.topics=true
#mirror.topics.whitelist=.*
client.id=mirror_maker_consumer
enable.auto.commit=false
17 changes: 13 additions & 4 deletions roles/preparation/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@

- name: Copy Spanish consumer config
copy:
src: consumer.config
src: spanish_consumer.config
dest: /usr/bin/dcm/spanish_consumer.config
owner: root
group: root
Expand All @@ -59,7 +59,7 @@

- name: Copy Italian consumer config
copy:
src: consumer.config
src: italian_consumer.config
dest: /usr/bin/dcm/italian_consumer.config
owner: root
group: root
Expand All @@ -75,7 +75,7 @@

- name: Copy French consumer config
copy:
src: consumer.config
src: french_consumer.config
dest: /usr/bin/dcm/french_consumer.config
owner: root
group: root
Expand All @@ -91,7 +91,7 @@

- name: Copy Greek consumer config
copy:
src: consumer.config
src: greek_consumer.config
dest: /usr/bin/dcm/greek_consumer.config
owner: root
group: root
Expand Down Expand Up @@ -121,6 +121,15 @@
line: "bootstrap.servers={{ansible_host}}:9092"
when: site == "iwl"

- name: Copy Kafka Mirror services
copy:
src: kafka-mirror-services/
dest: /etc/systemd/system/
owner: root
group: root
mode: 0644
when: site == "iwl"

- name: Check if dcm.service file exists
stat:
path: /etc/systemd/system/dcm.service
Expand Down

0 comments on commit 9077f86

Please sign in to comment.