最近 環境の準備 インターネット接続と CentOS7 仮想マシンを備えたコンピューター 仮想マシンを使用する理由ノートパソコンを使用しているため、ネットワークに接続するたびに IP が変更され、構成ファイルを常に変更する必要があり、テストするには面倒で不便です。 (この問題はDocker仮想ネットワークを使用することで回避できますが、実験中にそれを知りませんでした) Dockerのインストール すでに Docker をインストールしている場合は、この手順を無視してください。
yumインストール Docker を使用するには、CentOS カーネル バージョンが 3.10 以降である必要があります。上記の前提条件をチェックして、CentOS バージョンが Docker をサポートしているかどうかを確認してください。 # カーネルのバージョンを確認する $ uname -a #Dockerをインストールする $ yum -y dockerをインストール #Dockerバックグラウンドサービスを開始します$ service docker start # ローカルに hello-world イメージがないため、hello-world イメージがダウンロードされ、コンテナー内で実行されます。 $ docker run hello-world スクリプトのインストール sudo または root 権限を使用して CentOS にログインします。 yum パッケージが最新バージョンに更新されていることを確認してください。 $ sudo yum アップデート Docker インストール スクリプトを取得して実行します。 $ curl -fsSL https://get.docker.com -o get-docker.sh # このスクリプトを実行すると、docker.repo リポジトリが追加され、Docker がインストールされます。 $ sudo sh get-docker.sh Dockerを起動する $ sudo systemctl dockerを起動します # Docker が正常にインストールされていることを確認し、コンテナ内でテストイメージを実行します。 $ sudo docker run hello-world $ docker ps ミラー加速 最初、国内のミラーソースの設定を求められたときは断りましたが、使ってみるとダウンロード速度が { "レジストリミラー": ["http://hub-mirror.c.163.com"] } 飼育員クラスターの構築 飼育係イメージ: zookeeper:3.4 画像の準備 $ docker pull zookeeper:3.4 イメージを見つけるには、https://hub.docker.com/ にアクセスしてください。 docker pull images:TAG // 別のZookeeperコンテナを作成する まず、最も簡単な方法で別の $ docker run --name zookeeper -p 2181:2181 -d zookeeper:3.4 デフォルトでは、コンテナ内の設定ファイルは パラメータの説明 --name: コンテナ名を指定します クラスター構築 他のノードの 新しいDockerネットワークを作成する $ dockerネットワークでzoo_kafkaを作成します $ dockerネットワークls 飼育係コンテナ 1 $ docker run -d \ --restart=常に\ -v /opt/docker/zookeeper/zoo1/data:/data \ -v /opt/docker/zookeeper/zoo1/datalog:/datalog \ -e ZOO_MY_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 \ --特権 \ 飼育係:3.4 飼育係コンテナ2 $ docker run -d \ --restart=常に\ -v /opt/docker/zookeeper/zoo2/data:/data \ -v /opt/docker/zookeeper/zoo2/datalog:/datalog \ -e ZOO_MY_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 \ --特権 \ 飼育係:3.4 飼育係コンテナ3 $ docker run -d \ --restart=常に\ -v /opt/docker/zookeeper/zoo3/data:/data \ -v /opt/docker/zookeeper/zoo3/datalog:/datalog \ -e ZOO_MY_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 \ --特権 \ 飼育係:3.4 この方法でも目的を達成できますが、手順が面倒すぎて保守が困難 (怠惰の末期段階) なので、 Docker-compose は Zookeeper クラスターを構築します 新しいDockerネットワークを作成する $ docker ネットワーク作成 viemall-zookeeper $ dockerネットワークls docker-compose.ymlスクリプトを書く 方向: # スクリプトを取得します$ 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 # 実行権限を付与する $chmod +x /usr/local/bin/docker-compose 任意のディレクトリに新しい コマンド コマンド比較 バージョン: '2' サービス: 動物園1: image: zookeeper:3.4 # イメージ名 restart: always # エラー発生時に自動的に再起動 hostname: zoo1 コンテナ名: zoo1 特権: true ポート: #ポート - 2181:2181 volumes: #データボリュームをマウント - ./zoo1/data:/data - ./zoo1/データログ:/データログ 環境: TZ: アジア/上海 ZOO_MY_ID: 1 # ノードID ZOO_PORT: 2181 # zookeeper ポート番号 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 # zookeeper ノード リスト ネットワーク: デフォルト: ipv4_アドレス: 172.23.0.11 動物園2: 画像: 動物園飼育係:3.4 再起動: 常に ホスト名: zoo2 コンテナ名: zoo2 特権: true ポート: - 2182:2181 ボリューム: - ./zoo2/データ:/データ - ./zoo2/データログ:/データログ 環境: TZ: アジア/上海 動物園_マイ_ID: 2 動物園ポート: 2181 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 ネットワーク: デフォルト: ipv4_アドレス: 172.23.0.12 動物園3: 画像: 動物園飼育係:3.4 再起動: 常に ホスト名: zoo3 コンテナ名: zoo3 特権: true ポート: - 2183:2181 ボリューム: - ./zoo3/データ:/データ - ./zoo3/データログ:/データログ 環境: TZ: アジア/上海 動物園ID: 3 動物園ポート: 2181 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 ネットワーク: デフォルト: ipv4_アドレス: 172.23.0.13 ネットワーク: デフォルト: 外部の: 名前: zoo_kafka 確認する 図から、 Kafka クラスターの構築 上記の基盤があれば、 上記の例では、単一ノードの 環境の準備 カフカ画像: wurstmeister/kafka # バージョンが指定されていない場合は、デフォルトでイメージの最新バージョンがプルされます。 docker pull wurstmeister/kafka docker pull sheepkiller/kafka-manager docker-compose.ymlスクリプトを書く 方向: # スクリプトを取得します$ 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 # 実行権限を付与する $chmod +x /usr/local/bin/docker-compose 任意のディレクトリに新しい コマンド コマンド比較 バージョン: '2' サービス: ブローカー1: 画像: wurstmeister/kafka 再起動: 常に ホスト名: broker1 コンテナ名: ブローカー1 特権: true ポート: - 「9091:9092」 環境: KAFKA_ブローカーID: 1 KAFKA_LISTENERS: プレーンテキスト://ブローカー1:9092 KAFKA_ADVERTISED_LISTENERS: プレーンテキスト://ブローカー1:9092 KAFKA_ADVERTISED_HOST_NAME: ブローカー1 KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zoo1:2181/kafka1、zoo2:2181/kafka1、zoo3:2181/kafka1 ポート: 9988 ボリューム: - /var/run/docker.sock:/var/run/docker.sock - ./broker1:/kafka/kafka\-logs\-broker1 外部リンク: - 動物園1 - 動物園2 - 動物園3 ネットワーク: デフォルト: ipv4_アドレス: 172.23.0.14 ブローカー2: 画像: wurstmeister/kafka 再起動: 常に ホスト名: broker2 コンテナ名: ブローカー2 特権: true ポート: - 「9092:9092」 環境: KAFKA_ブローカーID: 2 KAFKA_LISTENERS: プレーンテキスト://broker2:9092 KAFKA_ADVERTISED_LISTENERS: プレーンテキスト://broker2:9092 KAFKA_ADVERTISED_HOST_NAME: ブローカー2 KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zoo1:2181/kafka1、zoo2:2181/kafka1、zoo3:2181/kafka1 ポート: 9988 ボリューム: - /var/run/docker.sock:/var/run/docker.sock - ./broker2:/kafka/kafka\-logs\-broker2 external_links: #この Compose ファイル外のコンテナに接続します - 動物園1 - 動物園2 - 動物園3 ネットワーク: デフォルト: ipv4_アドレス: 172.23.0.15 ブローカー3: 画像: wurstmeister/kafka 再起動: 常に ホスト名: broker3 コンテナ名: ブローカー3 特権: true ポート: - 「9093:9092」 環境: KAFKA_ブローカーID: 3 KAFKA_LISTENERS: プレーンテキスト://broker3:9092 KAFKA_ADVERTISED_LISTENERS: プレーンテキスト://broker3:9092 KAFKA_ADVERTISED_HOST_NAME: ブローカー3 KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zoo1:2181/kafka1、zoo2:2181/kafka1、zoo3:2181/kafka1 ポート: 9988 ボリューム: - /var/run/docker.sock:/var/run/docker.sock - ./broker3:/kafka/kafka\-logs\-broker3 external_links: #この Compose ファイル外のコンテナに接続します - 動物園1 - 動物園2 - 動物園3 ネットワーク: デフォルト: ipv4_アドレス: 172.23.0.16 kafka マネージャー: イメージ: sheepkiller/kafka-manager:latest 再起動: 常に コンテナ名: kafka-manager ホスト名: kafka-manager ポート: - 「9000:9000」 links: # このComposeファイルによって作成されたコンテナに接続します - ブローカー1 - ブローカー2 - ブローカー3 external_links: #この Compose ファイル外のコンテナに接続します - 動物園1 - 動物園2 - 動物園3 環境: ZK_HOSTS: zoo1:2181/kafka1、zoo2:2181/kafka1、zoo3:2181/kafka1 KAFKA_BROKERS: ブローカー1:9092、ブローカー2:9092、ブローカー3:9092 アプリケーションシークレット: letmein KM_ARGS: -Djava.net.preferIPv4Stack=true ネットワーク: デフォルト: ipv4_アドレス: 172.23.0.10 ネットワーク: デフォルト: external: # 作成されたネットワーク名を使用する: zoo_kafka 確認する
表示されている場合、 追加したクラスターをクリックすると、クラスター内に 3 つのノードがあることがわかります。 建設プロセス中に発生した問題 データ ボリュームをマウントすると、無限に再起動します。 解決:
kafka-managerはjmx関連のエラーを報告します。 解決:
コンテナ内の $ bin/kafka-topics.sh --list --zookeeper zoo1:2181/kafka1、zoo2:2181/kafka1、zoo3:2181/kafka1 # 以下はエラーです。エラー: エージェントによってスローされた例外: java.rmi.server.ExportException: ポートは既に使用中です: 7203; ネストされた例外: java.net.BindException: アドレスはすでに使用されています 解決: コマンドの前に $ JMX_PORT を設定解除します。bin/kafka-topics.sh --list --zookeeper zoo1:2181/kafka1、zoo2:2181/kafka1、zoo3:2181/kafka1 付録: 一般的な Docker の手順 # すべての Docker イメージを表示 # 実行中のコンテナをすべて表示 docker ps # すべてのコンテナを表示 docker ps -a # すべてのコンテナの IP を取得する $ docker examine --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) # コンテナの内部ログを表示します $ docker logs -f <コンテナID> # コンテナに入る $ docker exec -it <コンテナID> /bin/basj # コンテナを作成します -d はバックグラウンド起動を表します docker run --name <コンテナ名> -e <パラメータ> -v <マウントデータボリューム> <コンテナID> # コンテナを再起動します docker restart <コンテナID> #コンテナをシャットダウンする docker stop <コンテナID> # コンテナを実行します docker start <コンテナID> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: JDBC および MySQL 一時テーブルスペースの詳細な分析
目次依存関係をインストールするブーストをインストールMySQLをコンパイルしてインストールする構成依...
この記事の例では、ふるい抽選を実装するためのミニプログラムの具体的なコードを参考までに共有しています...
ブランクのブログ: http://www.planabc.net/ innerHTML プロパティは...
more は、最もよく使用されるツールの 1 つです。最も一般的な使用方法は、出力コンテンツを表示し...
元のテキスト: https://dev.mysql.com/doc/refman/8.0/en/gr...
もうナンセンスじゃない、郵便番号HTML部分 <div class="positio...
効果環境が必要ビュー要素UIドラッグアンドドロッププラグインSortable.js必要な構成プロパテ...
目次Vue2 レスポンシブ原則のレビューVue3 レスポンシブ原則の分析ネストされたオブジェクトの応...
序文: MySQL では、システムが多くの文字セットをサポートしており、異なる文字セット間にはわずか...
目次1. CentOS 7.9 20にDockerをインストールする2. MySQL クラスターをデ...
目次1. シナリオの説明2. 解決策オプションが多すぎる el-select コンポーネントの解決策...
最近のビジネスでは、オンライン トレーニング システムが特定のオンライン プレビュー ページに対する...
システムが遅いと感じてソースを変更したい場合は、別の記事で整理しました https://blog.c...
MySQL 8.0.13 のインストールと設定方法を皆さんと共有したいと思います。お役に立てれば幸...
この記事の例では、チャットインターフェースの表示を実現するためのVueの具体的なコードを参考までに共...