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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
序文MySQL の InnoDB エンジンがインデックスの保存に B+tree を使用する理由は、デ...
以前にも紹介しました: docker (一般的なアプリケーションのデプロイ): docker dep...
LinuxにRedisをインストールしたら、Javaを使って接続します。Javaコードは次のとおりで...
序文この記事は主にubantu 16.4 Hadoop完全分散構築に関する関連コンテンツを紹介し、皆...
この記事の例では、Reactカプセル化グローバルポップアップボックスの具体的なコードを参考までに共有...
1. 設置環境1. HUAWEI mate x CPU i5 82500u、8g メモリ、独立グラフ...
Apache Tomcat は、Java Servlet および Java Server Pages...
1.fullpage.js ダウンロードアドレスhttps://github.com/alvarot...
この記事では、配列フィルタリングを実装するためのJavaScriptの具体的なコードを参考までに紹介...
この記事では、audioContextを介して3Dサウンド効果を実現するためのjsの具体的なコードを...
豊富なオプションを備えた強力なエディターとして、Vim は多くのユーザーに愛されています。この記事で...
1. インターネットで長時間検索しましたが、判定表が存在するかどうかがわからなかったので、漠然と削除...
MySQL での SQL モードの表示と設定MySQL はさまざまなモードで実行でき、さまざまなシナ...
MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...