Docker ベースの Etcd 分散デプロイメントの方法と手順

Docker ベースの Etcd 分散デプロイメントの方法と手順

1. 環境整備

1.1 基本環境

NTP設定: 省略 #時間の一貫性を確保するためにNTPサービスを設定することをお勧めします

etcd バージョン: v3.3.9

ファイアウォールとSELinux: ファイアウォールとSELinuxを無効にする

名前
住所
ホスト名
述べる
等d1
172.24.8.71
等d1.example.com
関連するIP情報を保存するために使用されます
ドッカー01
172.24.8.72
docker01.example.com
ドッカー02
172.24.8.73
docker02.example.com

# ホスト名ctl set-hostname etcd1.example.com
# ホスト名ctl set-hostname docker01.example.com
# ホスト名ctl set-hostname docker02.example.com

ヒント: ホスト名は必須ではありません。

1.2 Docker環境

上記のすべてのノードには Docker がインストールされています。詳細については、002.Docker のバージョンとインストールを参照してください。

2. etcdノードのデプロイメント

ヒント: この環境はすべて Docker 化されています。つまり、etcd サービスも Docker 形式で存在します。

2.1 etcdの基本設定

# mkdir -p /var/log/etcd/ #etcd ログを保存するためのディレクトリを作成することをお勧めします# mkdir -p /data/etcd #別の etcd データ ディレクトリを作成することをお勧めします# export HOST_1=172.24.8.71 #etcd ノードの IP アドレスを設定します
# export DATA_DIR=/data/etcd #クラスターのetcdデータノードを設定します # REGISTRY=quay.io/coreos/etcd #このウェアハウスを使用することをお勧めします # ETCD_VERSION=latest #etcdのバージョンを設定します # export NAME_1=etcd1 #etcdノードの名前を設定します
# docker ボリューム作成 --name etcd-data

ヒント: 上記のすべての操作はすべてのノードで実行する必要があります。

2.3 docker etcdクラスターを起動する

[root@etcd1 ~]# docker run \
 -p 2379:2379 \
 -p 2380:2380 \
 --volume=${DATA_DIR}:/etcd-data \
 --name etcd ${REGISTRY}:${ETCD_VERSION} \
 /usr/local/bin/etcd \
 --data-dir=/etcd-data --name ${NAME_1} \
 --initial-advertise-peer-urls http://${HOST_1}:2380 --listen-peer-urls http://0.0.0.0:2380 \
 --advertise-client-urls http://${HOST_1}:2379 --listen-client-urls http://0.0.0.0:2379 \
 --initial-cluster ${NAME_1}=http://${HOST_1}:2380

ヒント: quay.io/coreos/etcd イメージは中国ではプルできない可能性がありますが、外部ノードからプルしてクラスター ノードに scp することはできます。

2.4 確認と検証

 [root@etcd1 ~]# docker ps 

 

 [root@etcd1 ~]# docker exec -it bcb96fb0f987 /usr/local/bin/etcdctl cluster-health 

[root@etcd1 ~]# docker exec -it bcb96fb0f987 /usr/local/bin/etcdctl --endpoints=http://${HOST_1}:2379 メンバーリスト

3つのDockerホストノード構成

3.1 docker01の設定

[root@docker01 ~]# vi /etc/sysconfig/docker
オプション = '--cluster-store=etcd://172.24.8.71:2379 --cluster-advertise=172.24.8.72:2379'
[root@docker01 ~]# systemctl dockerを再起動します

3.2 docker02の設定

[root@docker02 ~]# vi /etc/sysconfig/docker
オプション = '--cluster-store=etcd://172.24.8.71:2379 --cluster-advertise=172.24.8.73:2379'
[root@docker02 ~]# systemctl dockerを再起動します

3.3 オーバーレイネットワークの作成

[root@docker01 ~]# docker ネットワーク作成 -d オーバーレイ overlaynet1
418654e0092f5d1c3e4bf2b9ee73cdd22932dd60fecf12d7a3b024818118244b
[root@docker01 ~]# docker ネットワーク検査 overlaynet1 

[root@docker02 ~]# docker ネットワーク検査 overlaynet1 

ヒント: docker01 と docker02 の両方のホストで、docker01 に作成されたオーバーレイ ネットワークを確認します。両方が存在する場合、ネットワーク データは etcd を介してローカルではなく分散されていることを意味します。

3.4 テストネットワーク

[root@docker01 ~]# docker run -d --name Container01 --network overlaynet1 training/webapp python app.py
[root@docker02 ~]# docker run -d --name Container02 --network overlaynet1 training/webapp python app.py
[root@docker01 ~]# docker exec -it 73e984a5528a /bin/bash
root@73e984a5528a:/opt/webapp# ifconfig 

root@73e984a5528a:/opt/webapp# ルート -n 


[root@docker02 ~]# docker exec -it 89eac9521743 /bin/bash
root@89eac9521743:/opt/webapp# ifconfig 

例:

  • すべてのコンテナ ペアには eth0 と eth1 の 2 つのネットワーク カードがあります。
  • eth1 のネットワークは内部ネットワークセグメント、つまり通常の NAT モードです。
  • eth0 はオーバーレイ ネットワーク セグメント (オーバーレイ ネットワーク) に割り当てられた IP アドレスであり、MTU は 1500 ではなく 1450 です。
  • 同じオーバーレイ ネットワーク内のコンテナー間の通信のみが eth0 を経由し、その他のすべての通信は eth1 を経由します。
[root@docker01 ~]# brctl show 

[root@docker01 ~]# dockerネットワークls 


その他の参考資料:

  • Docker は各ノードに 2 つの Linux ブリッジを作成します。1 つはオーバーレイ ネットワーク用、もう 1 つは非オーバーレイ NAT ネットワーク用です (docker_gwbridge)。
  • コンテナからオーバーレイ ネットワーク内の他のコンテナへのネットワーク トラフィックはコンテナのオーバーレイ ネットワーク カード (eth0) を通過し、その他のネットワーク トラフィックはコンテナの NAT ネットワーク カード (eth1) を通過します。
  • 現在、Docker によって作成される vxlan トンネルの ID 範囲は 256 から 1000 であるため、最大 745 個のネットワークを作成できます。したがって、この例の vxlan トンネルに使用される ID は 256 です。
  • Docker vxlan ドライバーは UDP ポート 4789 を使用します。
  • オーバーレイ ネットワーク モデルの基盤となるレイヤーでは、メッセージの同期のために、consul や etcd に似た KV ストレージ システムが必要です。
  • Docker オーバーレイはマルチキャストを使用しません。
  • オーバーレイ ネットワーク内のコンテナーは、仮想の大規模なレイヤー 2 ネットワーク内にあります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker で Selenium グリッド分散環境を構築する実用的な方法
  • Selenium+testng を使用して Docker で Web 自動化を実現する方法
  • DockerでのinfluxDB分散時系列データベースのインストールと関連操作について簡単に説明します。
  • Docker Swarm を使用して分散クローラー クラスターを構築する例
  • Docker を使用して分散アプリケーション機能を実装する方法のチュートリアル
  • Docker ベースの急増する分散マイクロサービス エンジンのデプロイ方法の詳細説明
  • Docker を使用して Hadoop 分散クラスターを構築する方法の詳細な説明
  • Docker ベースの Selenium 分散環境の構築

<<:  Vue3 でモバイル ログインおよび登録モジュールをエレガントに実装する方法

>>:  MySQL でグループ化した後、各グループの最大値を取得する詳細な例

推薦する

Element-UI の Select と Cascader にポップアップ下部アクション ボタンを追加する方法

下図のように、 selectポップアップレイヤーの下部に操作ボタンを配置するのが一般的な設計方法です...

nginx 設定の場所の概要の場所の通常の書き込みと書き換えルールの書き込み

1. 場所の正規表現例を見てみましょう: 場所 = / { # 完全一致 / 、ホスト名の後に文字列...

nginxカスタム変数と組み込み定義済み変数の使用

概要Nginx では変数を使用して設定を簡素化し、設定の柔軟性を向上させることができます。すべての変...

MySQLはパスワードなしでログインする例を実装しています

具体的な方法:ステップ1: mysqlサービスを停止する /etc/init.d/mysqld を停...

CSS3 で実装された画像ホバートグルボタン

結果:実装コードhtml <ul class="スライド"> <...

Tomcatソースコードをideaにインポートする方法

目次1. Tomcatコードをダウンロードする2. ダウンロード後のディレクトリ構造3. ソースコー...

Linuxネットワーク構成ツールの使用

この記事では、RHEL8 のネットワーク サービスとネットワーク構成ツール、およびネットワーク ファ...

背景属性の8つの属性値の詳細解説(面接の質問)

CSSの背景プロパティの値背景色背景画像背景繰り返し背景位置背景添付複合プロパティ: 背景: ba...

Dockerfileを使用してDockerイメージを構築する

目次Dockerfileを使用してDockerイメージを構築する1. Dockerfile とは何で...

Vue2.x における双方向バインディングの原理と実装

目次1. 実施プロセス2. オブザーバーを表示する3. ウォッチャーを実装する4. コンパイルを実装...

WeChatミニプログラムが星評価を実装

この記事では、WeChatアプレットで星評価を実装するための具体的なコードを参考までに紹介します。具...

JSにおける4つのデータ型判定方法

目次1. 型2. インスタンス3. コンストラクター4.toString() この記事では、4 つの...

IDEA を使用して Web プロジェクトを作成し、Tomcat に公開する方法

目次ウェブ開発1. Web開発の概要Tomcatのインストールと設定Tomcatをインストールする2...

css3 flexレイアウト justify-content:space-between 最後の行は左揃えになります

justify-content:space-betweenレイアウトを使用する場合、要素の最後の行に...

画像を表示したり非表示にしたりするための JavaScript

JavaScriptは画像を表示したり非表示にしたりしますが、参考までに具体的な内容は次のとおりで...