docker-compose.ymlを書くバージョン: "3.0" ネットワーク: etcd-net: # ネットワークドライバー: bridge # ブリッジモードボリューム: etcd1_data: # ローカルデータボリューム名にマウント ドライバー: local etcd2_データ: ドライバー: ローカル etcd3_データ: ドライバー: ローカル ### ### etcd その他の環境設定については、https://doczhcn.gitbook.io/etcd/index/index-1/configuration を参照してください。 ### サービス: etcd1: image: bitnami/etcd:latest # イメージ container_name: etcd1 # コンテナ名 --name restart: always # 常にネットワークを再起動します: - etcd-net # 使用されるネットワーク --network ポート: #ポートマッピング -p - 「20000:2379」 - 「20001:2380」 環境: # 環境変数 --env : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : - etcd1_data:/bitnami/etcd # マウントされたデータボリューム etcd2: イメージ: bitnami/etcd:latest コンテナ名: etcd2 再起動: 常に ネットワーク: - etcd-net ポート: - 「20002:2379」 - 「20003:2380」 環境: - ALLOW_NONE_AUTHENTICATION=はい -ETCD_NAME=etcd2 -ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380 -ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 -ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 -ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:2379 -ETCD_INITIAL_CLUSTER_TOKEN=etcd クラスター - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380、etcd2=http://etcd2:2380、etcd3=http://etcd3:2380 -ETCD_INITIAL_CLUSTER_STATE=新規 ボリューム: - etcd2_data:/bitnami/etcd etcd3: イメージ: bitnami/etcd:latest コンテナ名: etcd3 再起動: 常に ネットワーク: - etcd-net ポート: - 「20004:2379」 - 「20005:2380」 環境: - ALLOW_NONE_AUTHENTICATION=はい -ETCD_NAME=etcd3 - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380 -ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 -ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 -ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:2379 -ETCD_INITIAL_CLUSTER_TOKEN=etcd クラスター - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380、etcd2=http://etcd2:2380、etcd3=http://etcd3:2380 -ETCD_INITIAL_CLUSTER_STATE=新規 ボリューム: - etcd3_data:/bitnami/etcd docker-composeを実行する[root@centos8 etcdtest]# ツリー 。 └── docker-compose.yml ディレクトリ 0 個、ファイル 1 個 [root@centos8 etcdtest]# docker-compose up -d [+] 4/4 実行中 ⠿ ネットワーク etcdtest_etcd-net 作成時間 0.1 秒 ⠿コンテナetcd3が0.6秒で開始されました ⠿コンテナetcd1が0.7秒で開始されました ⠿コンテナetcd2が0.7秒で開始されました [root@centos8 etcdtest]# ビルドステータスを確認するノードの起動ステータスを確認する [root@centos8 etcdtest]# docker ps コンテナID イメージ コマンド 作成ステータス ポート名 89469f98491f bitnami/etcd:latest "/opt/bitnami/script..." 54 秒前 53 秒前にアップ 0.0.0.0:20004->2379/tcp、:::20004->2379/tcp、0.0.0.0:20005->2380/tcp、:::20005->2380/tcp etcd3 5454f5a719a2 bitnami/etcd:latest "/opt/bitnami/script..." 54 秒前 53 秒前にアップ 0.0.0.0:20000->2379/tcp、:::20000->2379/tcp、0.0.0.0:20001->2380/tcp、:::20001->2380/tcp etcd1 bf989f9512b5 bitnami/etcd:latest "/opt/bitnami/script…" 54 秒前 53 秒前にアップ 0.0.0.0:20002->2379/tcp、:::20002->2379/tcp、0.0.0.0:20003->2380/tcp、:::20003->2380/tcp etcd2 マウントされたデータボリュームを表示する [root@centos8 etcdtest]# docker ボリューム ls ドライバーボリューム名 ローカル etcdtest_etcd1_data ローカル etcdtest_etcd2_data ローカル etcdtest_etcd3_data [root@centos8 etcdtest]# docker で etcd1 を検査します 「マウント」: [ { 「タイプ」:「ボリューム」、 「名前」: 「etcdtest_etcd1_data」、 「ソース」: 「/var/lib/docker/volumes/etcdtest_etcd1_data/_data」、 「宛先」: 「/bitnami/etcd」、 "ドライバー": "ローカル", "モード": "z", 「RW」:真、 「伝播」: 「」 } ] テストノードetcd1からキーを書き込む [root@centos8 etcdtest]# docker exec -it etcd1 bash 名前がありません!@5454f5a719a2:/opt/bitnami/etcd$ etcdctl put name "i am wxf" わかりました etcd2から値を読み取る [wxf@centos8 ~]$ docker exec -it etcd2 bash 名前がありません!@bf989f9512b5:/opt/bitnami/etcd$ etcdctl get name 名前 私はwxfです ビルド成功! Golangとetcd間のシンプルな相互作用パッケージメイン 輸入 ( "コンテクスト" 「fmt」 「go.etcd.io/etcd/クライアント/v3」 "時間" ) 関数main() { cli、エラー:= clientv3.New(clientv3.Config{ エンドポイント: []文字列{"http://192.168.135.10:20000", "http://192.168.135.10:20002", "http://192.168.135.10:20004"}, ダイヤルタイムアウト: 5 * 時間.秒、 }) err != nil の場合 { fmt.Printf("etcdへの接続に失敗しました、エラー:%v\n", err) 戻る } cli.Close() を延期する fmt.Println("etcdへの接続成功") cli.Close() を延期する ウォッチ(cli) 作成(cli) 読む(cli) 削除(cli) アップデート(cli) {} を選択 } ウォッチ関数(cli *clientv3.Client) { rch := cli.Watch(context.Background(), "name") // 型 WatchChan <-chan WatchResponse wresp := range rch {の場合 _ の場合、ev := 範囲 wresp.Events { fmt.Printf("タイプ: %s キー: %s 値: %s\n", ev.Type, ev.Kv.Key, ev.Kv.Value) } } fmt.Println("出力") } 関数Create(cli *clientv3.Client) { // 置く ctx、キャンセル:=context.WithTimeout(context.Background()、time.Second*5) _, err := cli.Put(ctx, "name", "wxf") キャンセル() err != nil の場合 { fmt.Printf("etcd への put に失敗しました、エラー:%v\n", err) 戻る } } read(cli *clientv3.Client)関数{ //得る ctx、キャンセル:=context.WithTimeout(context.Background()、time.Second*5) 応答、エラー:= cli.Get(ctx, "name") キャンセル() err != nil の場合 { fmt.Printf("etcd からの取得に失敗しました、エラー:%v\n", err) 戻る } _ の場合、ev := 範囲 resp.Kvs { fmt.Printf("タイプ: %s キー: %s 値: %s\n", "READ", ev.Key, ev.Value) } } 関数Update(cli *clientv3.Client) { // 置く ctx、キャンセル:=context.WithTimeout(context.Background()、time.Second*5) _, err := cli.Put(ctx, "name", "xyy") キャンセル() err != nil の場合 { fmt.Printf("etcd への put に失敗しました、エラー:%v\n", err) 戻る } } 関数Delete(cli *clientv3.Client) { //削除 ctx、キャンセル:=context.WithTimeout(context.Background()、time.Second*5) _, err := cli.Delete(ctx, "名前") キャンセル() err != nil の場合 { fmt.Printf("etcd からの削除に失敗しました、エラー:%v\n", err) 戻る } }
etcd クラスターの docker-compose デプロイメントの実装手順に関するこの記事はこれで終わりです。etcd クラスターの docker-compose デプロイメントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次1. はじめに1.1 Babel トランスコーダ1.2 ポリフィル2. let と const ...
この記事では、モグラ叩きゲームを実装するためのJavaScriptの具体的なコードを参考までに紹介し...
学習目標: parseInt() と Number() という 2 つの関数は、文字列をデータ型に変...
この記事では、MySQL group_concat を使用してグループ化されたフィールドを 1 つの...
1. 仮想マシンにLinuxシステムをインストールし、仮想マシンを起動し、rootとパスワードを入力...
実際、Apacheクラスタを構築するのは難しくありません。私もインターネットで情報を見つけて自分で設...
目次序文1. Linux は yum ソースを変更します (MYSQL のインストールが遅い場合は試...
この記事の例では、テーブルを動的に生成するjsの具体的なコードを参考までに共有しています。具体的な内...
この記事では、例を使用して MySQL 正規表現 (regexp および rlike) の検索機能を...
目次概要1. スタックとヒープ2. 変数オブジェクトと基本データ型3. 参照データ型とヒープメモリメ...
1.コンテナ内の /etc/hosts、/etc/resolv.conf、/etc/hostname...
目次1. インストール2. main.jsにインポートする3. 使用Vue3がリリースされてからしば...
目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...
「これは革命になるだろう」という記事が出たあと。業界の皆様に認知され、もちろん内外からの評価もいただ...
現在、2016サーバーは、win2008や2012よりも優れたマルチサイトhttpsサービスをサポー...