クラスターの展開の概要
Dockerのインストール yum アップデート -y yum インストール -y yum-utils デバイスマッパー永続データ lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum インストール docker-ce docker-ce-cli containerd.io systemctl ドッカーを起動する docker-compose のインストール yum で epel-release をインストールします python-pip をインストールします pip インストール --upgrade pip pip で docker-compose をインストールします 各ホストマシンのhostsファイルを変更する vim /etc/hosts 172.22.12.20 データクラウド0 172.22.12.21 データクラウド1 172.22.12.22 データクラウド2 172.22.12.23 データクラウド3 172.22.12.24 データクラウド4 飼育員クラスター マシン20、21、22にzkクラスターをデプロイし、それぞれdocker-composeファイルを書き込みます。 クラスター内の 1 台のマシンのみが正常に動作している場合、クラスターは失敗します。 そのうちの 1 つを例に挙げます。 動物園: 画像: 動物園飼育係:3.4.14 再起動: 常に ホスト名: zoo1 コンテナ名: zoo1 ポート: - 2181:2181 -2888:2888 -3888:3888 ボリューム: - 「./zoo/data:/data」 - 「./zoo/datalog:/datalog」 環境: 動物園ID: 1 ZOO_SERVERS: サーバー.1=0.0.0.0:2888:3888 サーバー.2=172.22.12.21:2888:3888 サーバー.3=172.22.12.22:2888:3888 「./zoo/data:/data」はデータディレクトリのマウントであり、設定する必要があります 環境変数の設定、ZOO_MY_ID はそれぞれ 1、2、3、ZOO_SERVERS はクラスタ アドレスで構成され、現在のマシンは 0.0.0.0 です。 カクファクラスター マシン 20、21、22 に kafka クラスターをデプロイし、それぞれに docker-compose ファイルを作成します (zk docker-compose ファイルと一緒に作成することもできます)。 そのうちの 1 つを例に挙げます。 カフカ: 画像: wurstmeister/kafka:2.12-2.2.2 再起動: 常に ホスト名: kafka1 コンテナ名: kafka1 ポート: - 「9092:9092」 環境: KAFKA_ADVERTISED_LISTENERS: プレーンテキスト://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 ボリューム: - ./kafka/logs:/kafka 注目すべき点はあまりありません。KAFKA_ZOOKEEPER_CONNECT は zk クラスター アドレスで正しく構成されており、ADVERTISED 関連の構成は現在のコンテナー用です。 インフルクスDB インフルエンスDB: 画像: influxdb:1.7 再起動: 常に コンテナ名: influxdb ポート: - 「2003:2003」 - 「8086:8086」 - 「8089:8089」 - 「8091:8091」 ボリューム: - 「./influxdb:/var/lib/influxdb」 環境: - INFLUXDB_GRAPHITE_ENABLED = true 「./influxdb:/var/lib/influxdb」はデータ ディレクトリのマウントであり、設定する必要があります。 INFLUXDB_GRAPHITE_ENABLED はグラファイト機能を有効にします。 Influxdb の簡単な操作:
Docker-compose関連の操作 docker-compose [-f <ファイル名>] up -d docker-compose [-f <ファイル名>] ダウン zkui/kafdrop/grafana マシン 23 に、次の 3 つの Web インターフェースをデプロイします。 ズクイ: 画像: maauso/zkui 再起動: 常に コンテナ名: zkui ポート: -9090:9090 環境: ZKリスト: 172.22.12.20:2181,172.22.12.21:2181,172.22.12.22:2181 カフドロップ: 画像: obsidiandynamics/kafdrop:latest 再起動: 常に コンテナ名: kafdrop ポート: - 「9000:9000」 環境: KAFKA_BROKERCONNECT: 172.22.12.20:9092、172.22.12.20:9092、172.22.12.20:9092 グラファナ: 画像: grafana/grafana:master 再起動: 常に コンテナ名: grafana ポート: - 「3000:3000」 ボリューム: - 「./grafana:/var/lib/grafana」 Webページなので、該当するサービスアドレスを設定して起動するだけです。 Grafana は、主にカスタム データ ソースやパネル構成などを記録するために、ディレクトリ マウントを使用して構成する必要があります (ここでは chmod -R 777 grafana/ が必要です) ストームクラスター ストームクラスターは、ニンバス、スーパーバイザー、UIの3つの部分で構成されています。 Nimbus はマスター ノードで、supervisor はスレーブ ノードです。前者は Zookeeper にタスクを送信し、後者は Zookeeper からタスクを取得します。 ui は Web ページです。 マシン 20、21、22 にそれぞれ 3 つの Nimbus ノードとスーパーバイザー ノードをデプロイし、別の docker-compose スクリプト ファイルを作成して、Zookeeper の起動後に実行することをお勧めします。 docker-compose スクリプトはおおよそ次のようになります。 ニンバス: 画像: storm:2.2.0 コンテナ名: nimbus1 コマンド: ストームニンバス 再起動: 常に ホスト名: nimbus1 ポート: -6627:6627 ボリューム: - 「./storm.yaml:/conf/storm.yaml」 - 「./nimbus/data:/data」 - 「./nimbus/logs:/logs」 監督者: 画像: storm:2.2.0 コンテナ名: supervisor1 指揮: 嵐の監督者 ホスト名: supervisor1 依存: -ニンバス リンク: - ニンバス:ニンバス 再起動: 常に ボリューム: - 「./storm.yaml:/conf/storm.yaml」 - 「./supervisor/data:/data」 - 「./supervisor/logs:/logs」 Nimbus、supervisor、ui はすべて同じ storm イメージを使用しますが、起動時のコマンド パラメーターは異なります。 Nimbus と supervisor のホスト名をここで指定するのは、デフォルトでは、zookeeper に登録されるときのホストが docker コンテナによってランダムに生成される uuid であるためです。 Nimbus と supervisor を再起動すると、コンテナの uuid もリセットされ、zookeeper にすでに保存されている uuid と競合してエラーが発生します。 インターネット上の解決策は次のとおりです。1. ストーム クラスターを停止した後、Zookeeper 上のストーム ノードを削除し、Zookeeper + ストーム クラスターを再起動します。2. ストーム クラスター用に別のステートレス Zookeeper を構築します。 ここでの解決策は、NimbusとSupervisorが登録されているときにホストを指定することです。これは再起動しても変更されません。 起動時にいくつかの環境変数を指定する必要があります。ここでは、ローカル構成ファイル マッピングが使用されます。storm.yaml 構成は次のとおりです。 storm.zookeeper.servers: - 「172.22.12.20」 - 「172.22.12.21」 - 「172.22.12.22」 ニンバスシード: - 「ニンバス1」 - 「ニンバス2」 - 「ニンバス3」 storm.log.dir: "/logs" storm.local.dir: "/データ" storm.cluster.mode: 分散 storm.zookeeper.servers は Zookeeper アドレスであり、デフォルトのポートは 2181 です。 nimbus.seeds は nimbus クラスターのアドレスであり、docker-compose でカスタマイズされたホスト名が使用されます。 Storm-ui は単一のインスタンスを起動でき、docker-compose 構成は次のようになります。 ストームUI: 画像: storm:2.2.0 コンテナ名: storm-ui コマンド: storm ui 依存: -ニンバス リンク: - ニンバス:ニンバス 再起動: 常に ポート: - 8080:8080 ボリューム: - 「./storm.yaml:/conf/storm.yaml」 - 「./ui/data:/data」 - 「./ui/logs:/logs」 追加ホスト: - 「ニンバス1:172.22.12.20」 - 「ニンバス2:172.22.12.21」 - 「ニンバス3:172.22.12.22」 - 「スーパーバイザー1:172.22.12.20」 - 「スーパーバイザー2:172.22.12.21」 - 「スーパーバイザー3:172.22.12.22」 このうち、extra_hosts はコンテナ起動後のカスタマイズされたホスト マッピングであり、UI ページの起動後に、登録されたエイリアス ホストを実際の IP アドレスに対応させることができます。 Docker コンテナをデプロイする場合、コンテナの再起動後に構成がリセットされないように、ホストの構成ファイルをコンテナにマップする必要があることがよくあります。 たとえば、storm の構成は、次のようになります: - "./storm.yaml:/conf/storm.yaml"。ただし、マッピング後に、正しい形式の storm.yaml がローカルに存在しない場合、起動は失敗します。公式 Web サイトからインストール パッケージをダウンロードして構成ファイルを取得するだけでなく、最初に一時コンテナーを起動して、その構成ファイルをホストにコピーすることもできます。 docker run -d --name nimbus-tmp storm:2.2.0 storm nimbus docker cp nimbus-tmp:/conf/storm.yaml ローカルフォルダパス/ 運河の展開 canal をデプロイする前に、接続先の MySQL を設定する必要があります。 [mysqld] log-bin=mysql-bin # binlogを有効にする binlog-format=ROW # ROWモードを選択 server_id=1 # MySQLの置き換えを構成するには定義が必要です。チャネルのスレーブIDを繰り返さないでください canal の docker-compose 構成は次のとおりです。 運河サーバー: イメージ: canal/canal-server:v1.1.3 コンテナ名: 運河サーバー ポート: - 11111:11111 環境: - キャナルインスタンスmysql.スレーブID=12 - キャナル自動スキャン=false - 運河の目的地=データクラウド - キャナルインスタンスマスターアドレス=10.23.16.32:3307 - canal.instance.dbユーザー名=root - canal.instance.dbパスワード=chinaunicom@dengfy - canal.instance.filter.regex=river\\..* ボリューム: - ./canal-server/logs/:/admin/canal-server/logs/ slaveId は MySQL で設定されているものと異なる必要があり、destinations はカスタムインスタンス名であり、canal.instance.filter.regex は監視するデータベーステーブルフィルターです。 ポーテナーの展開 Portainer は Docker コンテナのビジュアル管理ツールです。上記マシンの Docker コンテナの管理、ログの表示、起動スクリプトの変更、コンテナの停止などを行うことができます。 まず、各マシンの docker API インターフェースを開く必要があります。 1.vim /usr/lib/systemd/system/docker.service いずれかのマシンに portainer コンテナをデプロイします。 ポーター: 画像: portainer/portainer:1.24.1 再起動: 常に コンテナ名: portainer_datacloud ポート: - 「8000:8000」 - 「9002:9000」 ボリューム: - 「./portainer/data:/data」 - "/var/run/docker.sock:/var/run/docker.sock" "/var/run/docker.sock:/var/run/docker.sock" このマッピング関係はスタンドアロン モードで使用されます。リモート API 呼び出しを使用するため、省略できます。 ip:9002 を開いた後、ユーザーとして登録してログインし、設定 > エンドポイント > エンドポイントの追加 > docker を選択します。 エンドポイント URL にターゲット IP:2375 を入力し、パブリック IP にターゲット IP を追加します。送信すると、そのコンテナーの情報がすべて表示されます。 zk+kafka+storm クラスターの docker-compose デプロイメントの実装に関するこの記事はこれで終わりです。より関連性の高い docker compose デプロイメント クラスター コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: MySqlは指定されたユーザーのデータベースビュークエリ権限を設定します
目次前提条件DNSドメイン名解決プロセス外部ネットワークマッピングnginxコア知識nginxとはア...
問題の説明Windows Server 2012 R2 または Windows Server 201...
質問LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...
1. 一般的な使用法: (1)%で使用する% は 1 つ以上の文字のワイルドカードを表します。たとえ...
原因: java.sql.SQLException: 列の文字列値が正しくありません: '\...
本から学ぶことは常に浅はかで、これがさらなるダウンタイムを引き起こすことには決して気づきません......
目次序文1. 需要と効果必要効果2. コードの実装index.vue(html)日付方法テスト結果3...
Dockerの機能1) すぐに始められるユーザーがプログラムを「Docker 化」するには、わずか数...
序文LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...
iframe を使用すると、他の Web サイトのページを簡単に呼び出すことができますが、注意して使...
この記事では、docker 経由で Jenkins+Maven+SVN+Tomcat をデプロイし、...
この記事の例では、検索ボックスでファジークエリを実装するためのNodeの具体的なコードを参考までに共...
SQL Server のバッチコメントバッチ注釈Ctrl + (K, C): Ctrlキーを押しなが...
今日、ふとリッチテキストエディタの制作原理を見直してみようと思いました。それで、彼は何も言わずにそれ...
この記事の例では、タブ効果を実現するためのjsプラグインの具体的なコードを参考までに共有しています。...