docker etcd環境構築

7126 ワード

etcdはgolangで記述され,raftプロトコルで実現される分散型で信頼性の高いkvストレージシステムであり,共有とサービス登録の構成としてよく用いられることが分かった.Kubernetesはetcdを用いてクラスタ全体の状態を保存する
etcdは主に以下の4点に注目している.
  • 簡単:定義が良好で、ユーザー向けapi(grpcを使用)
  • セキュリティ:オプションのtlsユーザ認証方式
  • 快速:毎秒10000回の書き込みをサポートする
  • 信頼性:raftプロトコルによる分散
  • etcdサービスの構築
    version: "3.5"
    services:
      etcd:
        hostname: etcd
        image: bitnami/etcd:3
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
        # ports:
        #   - "2379:2379"
        #   - "2380:2380"
        #   - "4001:4001"
        #   - "7001:7001"
        user: root
        volumes:
          - "/var/docker/etcd/data:/opt/bitnami/etcd/data"
        environment:
          - "ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379"
          - "ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379"
          - "ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380"
          - "ETCD_INITIAL_ADVERTISE_PEER_URLS=http://0.0.0.0:2380"
          - "ALLOW_NONE_AUTHENTICATION=yes"
          - "ETCD_INITIAL_CLUSTER=node1=http://0.0.0.0:2380"
          - "ETCD_NAME=node1"
          - "ETCD_DATA_DIR=/opt/bitnami/etcd/data"
        networks:
          - etcdnet
    
    networks:
      etcdnet:
        name: etcdnet
    

    クライアントはETCD_ADVERTISE_CLIENT_URLSというアドレスを介してetcdと接続を確立する
    etcdコマンドラインインタフェースetcdctl
    etcdctlはetcdが提供するコマンドラインインタフェースであり、etcdサービスを容易に管理できる
    docker exec $(docker ps -a --filter name=etcd -q) etcdctl put root/service/svc1/key1 val1
    docker exec $(docker ps -a --filter name=etcd -q) etcdctl get root/service/svc1/key1
    

    etcd uiインタフェースe 3 w
    e 3 wはetcdのuiインタフェースであり,現在のkvと各ノードの状態を容易に表示・管理できる.
    version: "3.5"
    services:
      e3w:
        hostname: e3w
        image: soyking/e3w:latest
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
        # ports:
        #   - "8080:8080"
        volumes:
          - "/var/docker/e3w/conf/config.ini:/app/conf/config.default.ini"
        networks:
          - e3wnet
          - etcdnet
    
    networks:
      e3wnet:
        name: e3wnet
      etcdnet:
        external: true
        name: etcdnet
    

    e 3 w管理のkvはディレクトリフォーマットであり、すべてのkeyはルートディレクトリ接頭辞を有し、ルートディレクトリはconfig.iniで構成することができる.
    例えばroot_key=root、ディレクトリservice/svc1key1 => val1を作成し、実際にetcdに格納されているkeyはroot/service/svc1/key1である.
    リンク
  • etcd概要+使用:https://blog.csdn.net/bbwangj/article/details/82584988
  • github etcd: https://github.com/etcd-io/etcd
  • github uiインタフェースe 3 w:https://github.com/soyking/e3w
  • etcd構成:https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md
  • etcdコマンドラインインタフェース:https://github.com/etcd-io/etcd/tree/master/etcdctl
  • etcd環境完全コードリファレンス:https://github.com/hpifu/docker-etcd
  • e 3 w環境完全コードリファレンス:https://github.com/hpifu/docker-e3w
  • docker etcdミラー:https://hub.docker.com/r/bitnami/etcd
  • docker e 3 wミラー:https://hub.docker.com/r/soyking/e3w

  • 転載は出典を明記してください.https://tech.hatlonely.com/article/62