Ich habe vor Kurzem Umgebungsvorbereitung Ein Computer mit Internetzugang und einer virtuellen CentOS7-Maschine Warum virtuelle Maschinen verwenden? Da ich einen Laptop verwende, ändert sich die IP bei jeder Verbindung mit dem Netzwerk und ich muss die Konfigurationsdatei ständig ändern, was zum Testen zu umständlich und unpraktisch ist. (Dieses Problem kann durch die Verwendung eines virtuellen Docker-Netzwerks vermieden werden, aber das wusste ich während des Experiments nicht.) Docker-Installation Wenn Sie Docker bereits installiert haben, ignorieren Sie diesen Schritt bitte.
Yum-Installation Docker erfordert eine CentOS-Kernelversion höher als 3.10. Überprüfen Sie die oben genannten Voraussetzungen, um festzustellen, ob Ihre CentOS-Version Docker unterstützt. # Überprüfen Sie die Kernelversion $ uname -a #Docker installieren $ yum -y Docker installieren #Starten Sie den Docker-Hintergrunddienst$ service docker start # Da lokal kein „Hallo-Welt“-Image vorhanden ist, wird ein „Hallo-Welt“-Image heruntergeladen und im Container ausgeführt. $ Docker-Ausführung Hallo-Welt Skriptinstallation Melden Sie sich mit Sudo- oder Root-Berechtigungen bei CentOS an. Stellen Sie sicher, dass das Yum-Paket auf die neueste Version aktualisiert ist. $ sudo yum aktualisieren Holen Sie sich das Docker-Installationsskript und führen Sie es aus. $ curl -fsSL https://get.docker.com -o get-docker.sh # Durch Ausführen dieses Skripts wird das Repository docker.repo hinzugefügt und Docker installiert. $ sudo sh get-docker.sh Starten Sie Docker $ sudo systemctl Docker starten # Überprüfen Sie, ob Docker erfolgreich installiert wurde, und führen Sie ein Testimage im Container aus. $ sudo docker run hallo-welt $ Docker ps Spiegelbeschleunigung Als ich zum ersten Mal aufgefordert wurde, eine inländische Spiegelquelle zu konfigurieren, lehnte ich ab. Nachdem ich sie jedoch verwendet hatte, stellte ich fest, dass die Downloadgeschwindigkeit Öffnen/erstellen Sie die Datei { "Registrierungsspiegel": ["http://hub-mirror.c.163.com"] } Zookeeper-Clusteraufbau Zookeeper-Bild: zookeeper:3.4 Bildvorbereitung $ docker pull zookeeper:3.4 Um Bilder zu finden, gehen Sie zu https://hub.docker.com/ docker pull images:TAG // stellt das Abrufen des Erstellen Sie einen separaten Zookeeper-Container Wir erstellen zunächst auf einfachste Weise einen separaten $ docker run --name zookeeper -p 2181:2181 -d zookeeper:3.4 Standardmäßig ist die Konfigurationsdatei im Container Parameter Erklärung --name: Geben Sie den Containernamen an Clusteraufbau Die Erstellungsmethode von Erstellen Sie ein neues Docker-Netzwerk $ Docker-Netzwerk erstellen zoo_kafka $ Docker-Netzwerk ls Tierpfleger-Container 1 $ docker run -d \ --restart=immer \ -v /opt/docker/zookeeper/zoo1/data:/data \ -v /opt/docker/zookeeper/zoo1/datalog:/datalog \ -e ZOO_MEINE_ID=1 \ -p 2181:2181 \ -e ZOO_SERVERS="server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888" \ --name=zoo1 \ --net=viemall-zookeeper \ --privilegiert \ tierpfleger:3.4 Zoowärter-Container 2 $ docker run -d \ --restart=immer \ -v /opt/docker/zookeeper/zoo2/data:/data \ -v /opt/docker/zookeeper/zoo2/datalog:/datalog \ -e ZOO_MEINE_ID=2 \ -p 2182:2181 \ -e ZOO_SERVERS="server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888" \ --name=zoo2 \ --net=viemall-zookeeper \ --privilegiert \ tierpfleger:3.4 Tierpfleger-Container 3 $ docker run -d \ --restart=immer \ -v /opt/docker/zookeeper/zoo3/data:/data \ -v /opt/docker/zookeeper/zoo3/datalog:/datalog \ -e ZOO_MEINE_ID=3 \ -p 2183:2181 \ -e ZOO_SERVERS="server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888" \ --name=zoo3 \ --net=viemall-zookeeper \ --privilegiert \ tierpfleger:3.4 Obwohl diese Methode auch das gewünschte Ergebnis liefert, sind die Schritte zu umständlich und schwierig zu warten (spätes Stadium der Faulheit), sodass wir Docker-Compose erstellt einen Zookeeper-Cluster Erstellen Sie ein neues Docker-Netzwerk $ Docker-Netzwerk erstellen viemall-zookeeper $ Docker-Netzwerk ls Schreiben Sie das Skript docker-compose.yml Anwendung: Installieren Sie # Holen Sie sich das Skript$ curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose # Ausführungsberechtigungen erteilen $chmod +x /usr/local/bin/docker-compose Erstellen Sie eine neue Datei Führen Sie den Befehl Befehlsvergleich Downloadadresse für Version: '2' Leistungen: zoo1: Bild: zookeeper:3.4 # Bildname Neustart: immer # Automatischer Neustart, wenn ein Fehler auftritt Hostname: zoo1 Containername: zoo1 privilegiert: wahr Ports: #Port - 2181:2181 Volumes: #Datenvolume mounten - ./zoo1/data:/data - ./zoo1/datalog:/datalog Umfeld: TZ: Asien/Shanghai ZOO_MY_ID: 1 # Knoten-ID ZOO_PORT: 2181 # Zookeeper-Portnummer ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 # Zookeeper-Knotenliste Netzwerke: Standard: IPv4-Adresse: 172.23.0.11 zoo2: Bild: zookeeper:3.4 Neustart: immer Hostname: zoo2 Containername: zoo2 privilegiert: wahr Häfen: - 2182:2181 Bände: - ./zoo2/data:/data - ./zoo2/datalog:/datalog Umfeld: TZ: Asien/Shanghai ZOO_MY_ID: 2 ZOO_PORT: 2181 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 Netzwerke: Standard: IPv4-Adresse: 172.23.0.12 zoo3: Bild: zookeeper:3.4 Neustart: immer Hostname: zoo3 Containername: zoo3 privilegiert: wahr Häfen: - 2183:2181 Bände: - ./zoo3/data:/data - ./zoo3/datalog:/datalog Umfeld: TZ: Asien/Shanghai ZOO_MY_ID: 3 ZOO_PORT: 2181 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 Netzwerke: Standard: IPv4-Adresse: 172.23.0.13 Netzwerke: Standard: extern: Name: zoo_kafka verifizieren Aus der Abbildung können wir erkennen, dass es einen Aufbau eines Kafka-Clusters Ist es mit der oben genannten Grundlage immer noch ein Problem, einen Im obigen Beispiel müssen Sie sich nicht mit einem Umgebungsvorbereitung Kafka-Bild: wurstmeister/kafka # Wenn keine Version angegeben ist, wird standardmäßig die neueste Version des Images heruntergeladen. docker pull wurstmeister/kafka Docker zieht Sheepkiller/Kafka-Manager Schreiben Sie das Skript docker-compose.yml Anwendung: Installieren Sie # Holen Sie sich das Skript$ curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose # Ausführungsberechtigungen erteilen $chmod +x /usr/local/bin/docker-compose Erstellen Sie eine neue Datei Führen Sie den Befehl Befehlsvergleich Downloadadresse für Version: '2' Leistungen: Makler1: Bild: Wurstmeister/Kafka Neustart: immer Hostname: broker1 Containername: Broker1 privilegiert: wahr Häfen: - „9091:9092“ Umfeld: KAFKA_BROKER_ID: 1 KAFKA_LISTENERS: PLAINTEXT://broker1:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker1:9092 KAFKA_ADVERTISED_HOST_NAME: broker1 KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zoo1:2181/kafka1,zoo2:2181/kafka1,zoo3:2181/kafka1 JMX_PORT: 9988 Bände: – /var/run/docker.sock:/var/run/docker.sock - ./broker1:/kafka/kafka\-logs\-broker1 externe_links: - zoo1 - zoo2 - zoo3 Netzwerke: Standard: IPv4-Adresse: 172.23.0.14 Makler2: Bild: Wurstmeister/Kafka Neustart: immer Hostname: broker2 Containername: broker2 privilegiert: wahr Häfen: - „9092:9092“ Umfeld: KAFKA_BROKER_ID: 2 KAFKA_LISTENERS: PLAINTEXT://broker2:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker2:9092 KAFKA_ADVERTISED_HOST_NAME: broker2 KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zoo1:2181/kafka1,zoo2:2181/kafka1,zoo3:2181/kafka1 JMX_PORT: 9988 Bände: – /var/run/docker.sock:/var/run/docker.sock - ./broker2:/kafka/kafka\-logs\-broker2 external_links: #Verbindung zu Containern außerhalb dieser Compose-Datei herstellen - zoo1 - zoo2 - zoo3 Netzwerke: Standard: IPv4-Adresse: 172.23.0.15 Makler3: Bild: Wurstmeister/Kafka Neustart: immer Hostname: broker3 Containername: Broker3 privilegiert: wahr Häfen: - „9093:9092“ Umfeld: KAFKA_BROKER_ID: 3 KAFKA_LISTENERS: PLAINTEXT://broker3:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker3:9092 KAFKA_ADVERTISED_HOST_NAME: broker3 KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zoo1:2181/kafka1,zoo2:2181/kafka1,zoo3:2181/kafka1 JMX_PORT: 9988 Bände: – /var/run/docker.sock:/var/run/docker.sock - ./broker3:/kafka/kafka\-logs\-broker3 external_links: #Verbindung zu Containern außerhalb dieser Compose-Datei herstellen - zoo1 - zoo2 - zoo3 Netzwerke: Standard: IPv4-Adresse: 172.23.0.16 Kafka-Manager: Bild: Sheepkiller/Kafka-Manager:latest Neustart: immer Containername: Kafka-Manager Hostname: Kafka-Manager Häfen: - "9000:9000" links: # Verbindung zum Container herstellen, der durch diese Compose-Datei erstellt wurde - Makler1 - Makler2 - Makler3 external_links: #Verbindung zu Containern außerhalb dieser Compose-Datei herstellen - zoo1 - zoo2 - zoo3 Umfeld: ZK_HOSTS: zoo1:2181/kafka1,zoo2:2181/kafka1,zoo3:2181/kafka1 KAFKA_BROKERS: Broker1:9092, Broker2:9092, Broker3:9092 APPLICATION_SECRET: letmein KM_ARGS: -Djava.net.preferIPv4Stack=true Netzwerke: Standard: IPv4-Adresse: 172.23.0.10 Netzwerke: Standard: extern: # Verwenden Sie den erstellten Netzwerknamen: zoo_kafka verifizieren Wir öffnen die Verwaltungsseite von Geben Sie, falls angezeigt, die Adresse des Klicken Sie auf den Cluster, den Sie gerade hinzugefügt haben. Sie sehen, dass der Cluster drei Knoten enthält. Während des Bauprozesses aufgetretene Probleme Das Mounten des Datenvolumens führt zu einem unendlichen Neustart. Beim Überprüfen Lösung:
kafka-manager meldet JMX-bezogene Fehler, Lösung:
Beim Anzeigen $ bin/kafka-topics.sh --list --zookeeper zoo1:2181/kafka1,zoo2:2181/kafka1,zoo3:2181/kafka1 # Das Folgende ist ein Fehler: Vom Agenten ausgelöste Ausnahme: java.rmi.server.ExportException: Port wird bereits verwendet: 7203; verschachtelte Ausnahme ist: java.net.BindException: Adresse wird bereits verwendet Lösung: Fügen Sie vor dem Befehl den Befehl $ unset JMX_PORT;bin/kafka-topics.sh --list --zookeeper zoo1:2181/kafka1,zoo2:2181/kafka1,zoo3:2181/kafka1 Anhang: Allgemeine Docker-Anweisungen # Alle Docker-Images anzeigen # Alle laufenden Container anzeigen docker ps # Alle Container anzeigen docker ps -a # Alle Container-IPs abrufen $ docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) # Die internen Protokolle des Containers anzeigen $ docker logs -f <Container-ID> # Geben Sie den Container ein $ docker exec -it <Container-ID> /bin/basj # Einen Container erstellen -d steht für den Start im Hintergrund docker run --name <Containername> -e <Parameter> -v <Datenvolume einbinden> <Container-ID> # Starten Sie den Container neu docker restart <Container-ID> #Container herunterfahren docker stop <Container-ID> # Führen Sie den Container docker start <Container-ID> aus Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So komprimieren Sie Bilder effektiv mit JS
>>: Detaillierte Analyse des temporären JDBC- und MySQL-Tablespace
Geschäftsszenario: Verwenden Sie den EL-Dialog vo...
01. Befehlsübersicht Der Befehl „locate“ ist eige...
Inhaltsverzeichnis 1. Nutzung 1. Grundlegende Ver...
Inhaltsverzeichnis 1. Grundlegende Verwendung von...
Das Div-Element wird verwendet, um Struktur und Hi...
Inhaltsverzeichnis 1. Wo ist die Langsamkeit? 2. ...
Manchmal möchten wir nicht, dass der Inhalt unser...
Popup-Fenster werden in der tatsächlichen Entwick...
Wir alle wissen, dass Apache in der Konfiguration...
Vorwort In diesem Artikel untersuchen wir die Ent...
Nehmen Sie als Beispiel die Bereitstellung von ht...
1 Einleitung Beim Gestalten einer Datenbank ist e...
Inhaltsverzeichnis Problembeschreibung: Lösung 1 ...
Bei der täglichen Wartung werden Threads häufig b...
Inhaltsverzeichnis Die wichtigsten gelösten Probl...