Übersicht über die Clusterbereitstellung
Docker-Installation yum aktualisieren -y yum install -y yum-utils Gerätemapper-Persistent-Data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum installiere docker-ce docker-ce-cli containerd.io systemctl starte Docker Docker-Compose-Installation yum installiere Epel-Release yum install -y python-pip pip installieren --upgrade pip pip installieren docker-compose Ändern Sie die Hosts-Datei jedes Host-Rechners vim /etc/hosts 172.22.12.20 Datencloud0 172.22.12.21 Datencloud1 172.22.12.22 Datencloud2 172.22.12.23 Datencloud3 172.22.12.24 Datencloud4 Zookeeper-Cluster Stellen Sie den zk-Cluster auf den Maschinen 20, 21 und 22 bereit und schreiben Sie jeweils Docker-Compose-Dateien Wenn nur eine Maschine im Cluster normal funktioniert, fällt der Cluster aus. Nehmen wir eines davon als Beispiel: Zoo: Bild: zookeeper:3.4.14 Neustart: immer Hostname: zoo1 Containername: zoo1 Häfen: - 2181:2181 -2888:2888 -3888:3888 Bände: – „./zoo/data:/data“ – „./zoo/datalog:/datalog“ Umfeld: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=172.22.12.21:2888:3888 server.3=172.22.12.22:2888:3888 "./zoo/data:/data" ist das Mount-Verzeichnis für die Daten, muss konfiguriert werden Konfiguration der Umgebungsvariablen, ZOO_MY_ID ist 1, 2 bzw. 3, ZOO_SERVERS ist mit der Clusteradresse konfiguriert und die aktuelle Maschine ist 0.0.0.0 Kakfa-Cluster Stellen Sie den Kafka-Cluster auf den Maschinen 20, 21 und 22 bereit und schreiben Sie für jede davon Docker-Compose-Dateien (sie können zusammen mit der ZK-Docker-Compose-Datei geschrieben werden). Nehmen wir eines davon als Beispiel: Kafka: Bild: wurstmeister/kafka:2.12-2.2.2 Neustart: immer Hostname: kafka1 Containername: kafka1 Häfen: - „9092:9092“ Umfeld: KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.22.12.20:9092 KAFKA_ADVERTISED_HOST_NAME: 172.22.12.20 KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: 172.22.12.20:2181,172.22.12.21:2181,172.22.12.22:2181 Bände: - ./kafka/logs:/kafka Es gibt nicht viel zu beachten. KAFKA_ZOOKEEPER_CONNECT ist korrekt mit der zk-Clusteradresse konfiguriert und die ADVERTISED-bezogene Konfiguration ist für den aktuellen Container. influxdb Zuflussdb: Bild: influxdb:1.7 Neustart: immer Containername: Influxdb Häfen: - „2003:2003“ - „8086:8086“ - „8089:8089“ - „8091:8091“ Bände: – „./influxdb:/var/lib/influxdb“ Umfeld: – INFLUXDB_GRAPHITE_ENABLED=true „./influxdb:/var/lib/influxdb“ ist die Datenverzeichnis-Einbindung und muss konfiguriert werden. INFLUXDB_GRAPHITE_ENABLED aktiviert die Graphitfunktion. Einfache Bedienung von Influxdb:
Mit Docker-Compose verbundene Vorgänge docker-compose [-f <Dateiname>] up -d docker-compose [-f <dateiname>] down zkui/kafdrop/grafana Stellen Sie auf Maschine 23 diese drei Webschnittstellen bereit: zkui: Bild: maauso/zkui Neustart: immer Containername: zkui Häfen: -9090:9090 Umfeld: ZKLIST: 172.22.12.20:2181,172.22.12.21:2181,172.22.12.22:2181 kafdrop: Bild: obsidiandynamics/kafdrop:latest Neustart: immer Containername: Kafdrop Häfen: - "9000:9000" Umfeld: KAFKA_BROKERCONNECT: 172.22.12.20:9092,172.22.12.20:9092,172.22.12.20:9092 grafana: Bild: grafana/grafana:master Neustart: immer Containername: Grafana Häfen: - "3000:3000" Bände: – „./grafana:/var/lib/grafana“ Da es sich um eine Webseite handelt, konfigurieren Sie einfach die entsprechende Serviceadresse und starten Sie sie. Grafana muss mit einer Verzeichniseinbindung konfiguriert werden, hauptsächlich um benutzerdefinierte Datenquellen und Panelkonfigurationen usw. aufzuzeichnen. (chmod -R 777 grafana/ ist hier erforderlich) Sturmcluster Der Storm-Cluster besteht aus drei Teilen: Nimbus, Supervisor und UI Nimbus ist der Masterknoten und Supervisor ist der Slaveknoten. Ersterer sendet Aufgaben an Zookeeper und letzterer erhält Aufgaben von Zookeeper. ui ist eine Webseite. Stellen Sie drei Nimbus- und Supervisor-Knoten auf den Maschinen 20, 21 und 22 bereit. Es wird empfohlen, eine separate Docker-Compose-Skriptdatei zu erstellen und diese nach dem Start von Zookeeper auszuführen. Das Docker-Compose-Skript sieht ungefähr so aus: Nimbus: Bild: Sturm:2.2.0 Containername: nimbus1 Befehl: Sturmnimbus Neustart: immer Hostname: nimbus1 Häfen: -6627:6627 Bände: – „./storm.yaml:/conf/storm.yaml“ – „./nimbus/data:/data“ – „./nimbus/logs:/logs“ Aufsicht: Bild: Sturm:2.2.0 Containername: Supervisor1 Kommando: Sturmaufseher Hostname: Supervisor1 hängt ab von: -Nimbus Links: - Heiligenschein: Heiligenschein Neustart: immer Bände: – „./storm.yaml:/conf/storm.yaml“ – „./supervisor/data:/data“ - „./supervisor/logs:/logs“ Nimbus, Supervisor und UI verwenden alle dasselbe Storm-Image, aber die Befehlsparameter sind beim Start unterschiedlich. Der Hostname von Nimbus und Supervisor wird hier angegeben, da der Host bei der Registrierung bei Zookeeper standardmäßig die vom Docker-Container zufällig generierte UUID ist. Wenn Nimbus und Supervisor neu gestartet werden, werden auch ihre Container-UUIDs zurückgesetzt, was zu Konflikten mit den bereits in Zookeeper gespeicherten UUIDs führt und einen Fehler verursacht. Die Lösung im Internet lautet: 1. Löschen Sie nach dem Stoppen des Storm-Clusters den Storm-Knoten auf dem Zookeeper und starten Sie den Zookeeper + Storm-Cluster neu. 2. Erstellen Sie einen separaten zustandslosen Zookeeper für den Storm-Cluster Die Lösung besteht hier darin, den Host anzugeben, wenn Nimbus und Supervisor registriert werden. Dieser ändert sich beim Neustart nicht Beim Start müssen einige Umgebungsvariablen angegeben werden. Hier wird die Zuordnung der lokalen Konfigurationsdatei verwendet. Die storm.yaml-Konfiguration lautet wie folgt: storm.zookeeper.servers: - "172.22.12.20" - "172.22.12.21" - "172.22.12.22" nimbus.seeds: - "nimbus1" - "nimbus2" - "nimbus3" storm.log.dir: "/logs" storm.local.dir: "/data" storm.cluster.mode: verteilt storm.zookeeper.servers ist die Zookeeper-Adresse und der Standardport ist 2181. nimbus.seeds ist die Adresse des Nimbus-Clusters, wo der in Docker-Compose angepasste Hostname verwendet wird. Storm-ui kann die einzelne Instanz starten und die Docker-Compose-Konfiguration ist wie folgt: Sturm-Benutzeroberfläche: Bild: Sturm:2.2.0 Containername: Storm-UI Befehl: Sturm-UI hängt ab von: -Nimbus Links: - Heiligenschein: Heiligenschein Neustart: immer Häfen: 8080: 8080 Bände: – „./storm.yaml:/conf/storm.yaml“ – „./ui/data:/data“ – „./ui/logs:/logs“ zusätzliche_hosts: - "nimbus1:172.22.12.20" - "nimbus2:172.22.12.21" - "nimbus3:172.22.12.22" - "Supervisor1:172.22.12.20" - "Supervisor2:172.22.12.21" - "Supervisor3:172.22.12.22" Unter diesen ist extra_hosts die angepasste Hostzuordnung nach dem Start des Containers, sodass nach dem Start der UI-Seite der registrierte Alias-Host der tatsächlichen IP-Adresse entsprechen kann. Beim Bereitstellen von Docker-Containern müssen Sie häufig die Konfigurationsdateien des Hosts dem Container zuordnen, damit die Konfiguration nach dem Neustart des Containers nicht zurückgesetzt wird. Beispielsweise lautet die Storm-Konfiguration: - „./storm.yaml:/conf/storm.yaml“. Wenn jedoch nach der Zuordnung lokal keine storm.yaml im richtigen Format vorhanden ist, schlägt der Start fehl. Zusätzlich zum Herunterladen des Installationspakets von der offiziellen Website, um dessen Konfigurationsdatei abzurufen, können Sie zunächst einen temporären Container starten und dessen Konfigurationsdatei auf den Host kopieren. docker run -d --name nimbus-tmp storm:2.2.0 storm nimbus docker cp nimbus-tmp:/conf/storm.yaml lokaler Ordnerpfad/ Kanaleinsatz Bevor Sie den Kanal bereitstellen, müssen Sie das MySQL konfigurieren, mit dem er verbunden ist: [mysqld] log-bin=mysql-bin # Binlog aktivieren binlog-format=ROW # ROW-Modus auswählen server_id=1 # Die Konfiguration der MySQL-Replikation erfordert eine Definition. Wiederholen Sie die Slave-ID des Kanals nicht. Die Docker-Compose-Konfiguration des Kanals ist wie folgt: Kanal-Server: Bild: Kanal/Kanal-Server:v1.1.3 Containername: Kanal-Server Häfen: - 11111:11111 Umfeld: - canal.instance.mysql.slaveId=12 - canal.auto.scan=false - canal.destinations=Datencloud - canal.instance.master.address=10.23.16.32:3307 - canal.instance.dbBenutzername=root - canal.instance.dbPassword=chinaunicom@dengfy - canal.instance.filter.regex=river\\..* Bände: - ./canal-server/logs/:/admin/canal-server/logs/ Die Slave-ID muss sich von der in MySQL konfigurierten unterscheiden, „Destinations“ ist der benutzerdefinierte Instanzname und „canal.instance.filter.regex“ ist der zu überwachende Datenbanktabellenfilter. Portainer-Bereitstellung Portainer ist ein visuelles Verwaltungstool für Docker-Container. Es kann die Docker-Container der oben genannten Maschinen verwalten, Protokolle anzeigen, Startskripte ändern, Container stoppen usw. Zuerst müssen Sie die Docker-API-Schnittstelle für jede Maschine öffnen: 1.vim /usr/lib/systemd/system/docker.service Stellen Sie den Portainer-Container auf einer der Maschinen bereit: Träger: Bild: portainer/portainer:1.24.1 Neustart: immer Containername: portainer_datacloud Häfen: - "8000:8000" - "9002:9000" Bände: – „./portainer/data:/data“ – „/var/run/docker.sock:/var/run/docker.sock“ "/var/run/docker.sock:/var/run/docker.sock" Diese Zuordnungsbeziehung wird im Standalone-Modus verwendet. Wir verwenden Remote-API-Aufrufe, daher kann sie weggelassen werden. Nachdem Sie IP:9002 geöffnet haben, registrieren Sie sich als Benutzer und melden Sie sich an. Gehen Sie zu Einstellungen > Endpunkte > Endpunkt hinzufügen > Docker auswählen. Geben Sie die Ziel-IP:2375 in die Endpunkt-URL ein und fügen Sie die Ziel-IP in die öffentliche IP ein. Nach dem Absenden können Sie alle Containerinformationen sehen. Dies ist das Ende dieses Artikels über die Implementierung der Docker-Compose-Bereitstellung des ZK+Kafka+Storm-Clusters. Weitere relevante Inhalte zum Docker-Compose-Bereitstellungscluster finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Vue + Element realisiert Paging-Effekt
>>: MySql legt die angegebenen Benutzerdatenbankansichtsabfrageberechtigungen fest
Einführung in IPSec IPSec (Internet Protocol Secu...
Das in diesem Artikel verwendete PHP-Basisimage i...
Vorwort Jeder weiß, dass viele Websites mittlerwe...
Vor Kurzem musste ich das Projekt für die Mitglie...
Eine der am häufigsten verwendeten und diskutiert...
Vorwort Glauben Sie mir, solange Sie sich an die ...
Führen Sie den Befehl aus, um das Plugin postcss-...
Benutzer- und Gruppenverwaltung 1. Grundlegende K...
Inhaltsverzeichnis Installationsfreie Version von...
Inhaltsverzeichnis 1. Was für eine Art von Backup...
Hexo bindet einen benutzerdefinierten Domänenname...
Dieser Artikel veranschaulicht anhand von Beispie...
Vor Kurzem mussten wir eine geplante Migration de...
Vorwort gdb ist ein sehr nützliches Debugging-Too...
Zum Beispiel: <u> Dies hat kein Endzeichen u...