• docker-compose部署etcd集群


    1. docker-compose.yml

    cat > docker-compose.yml << EOF
    version: "3.0"
    
    networks:
      etcd-net:           # 网络
        driver: bridge    # 桥接模式
    
    volumes:
      etcd1_data:         # 挂载到本地的数据卷名
        driver: local
      etcd2_data:
        driver: local
      etcd3_data:
        driver: local
    ###
    ### etcd 其他环境配置见:https://doczhcn.gitbook.io/etcd/index/index-1/configuration
    ###
    services:
      etcd1:
        image: bitnami/etcd:latest  # 镜像
        container_name: etcd1       # 容器名 --name
        restart: always             # 总是重启
        networks:
          - etcd-net                # 使用的网络 --network
        ports:                      # 端口映射 -p
          - "20000:2379"
          - "20001:2380"
        environment:                # 环境变量 --env
          - ALLOW_NONE_AUTHENTICATION=yes                       # 允许不用密码登录
          - ETCD_NAME=etcd1                                     # etcd 的名字
          - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd1:2380  # 列出这个成员的伙伴 URL 以便通告给集群的其他成员
          - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380           # 用于监听伙伴通讯的URL列表
          - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379         # 用于监听客户端通讯的URL列表
          - ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:2379        # 列出这个成员的客户端URL,通告给集群中的其他成员
          - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster             # 在启动期间用于 etcd 集群的初始化集群记号
          - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 # 为启动初始化集群配置
          - ETCD_INITIAL_CLUSTER_STATE=new                      # 初始化集群状态
        volumes:
          - etcd1_data:/bitnami/etcd                            # 挂载的数据卷
    
      etcd2:
        image: bitnami/etcd:latest
        container_name: etcd2
        restart: always
        networks:
          - etcd-net
        ports:
          - "20002:2379"
          - "20003:2380"
        environment:
          - ALLOW_NONE_AUTHENTICATION=yes
          - 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-cluster
          - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
          - ETCD_INITIAL_CLUSTER_STATE=new
        volumes:
          - etcd2_data:/bitnami/etcd
    
      etcd3:
        image: bitnami/etcd:latest
        container_name: etcd3
        restart: always
        networks:
          - etcd-net
        ports:
          - "20004:2379"
          - "20005:2380"
        environment:
          - ALLOW_NONE_AUTHENTICATION=yes
          - 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-cluster
          - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
          - ETCD_INITIAL_CLUSTER_STATE=new
        volumes:
          - etcd3_data:/bitnami/etcd
    EOF
    
    docker-compose up -d #运行
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    root@k8s-master:~#  docker ps
    CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                                                                      NAMES
    db11e79ee1c1   bitnami/etcd:latest   "/opt/bitnami/script…"   8 minutes ago   Up 8 minutes   0.0.0.0:20004->2379/tcp, :::20004->2379/tcp, 0.0.0.0:20005->2380/tcp, :::20005->2380/tcp   etcd3
    249d8c83b745   bitnami/etcd:latest   "/opt/bitnami/script…"   8 minutes ago   Up 8 minutes   0.0.0.0:20002->2379/tcp, :::20002->2379/tcp, 0.0.0.0:20003->2380/tcp, :::20003->2380/tcp   etcd2
    7d0a06d1d3c9   bitnami/etcd:latest   "/opt/bitnami/script…"   8 minutes ago   Up 8 minutes   0.0.0.0:20000->2379/tcp, :::20000->2379/tcp, 0.0.0.0:20001->2380/tcp, :::20001->2380/tcp   etcd1
    root@k8s-master:~# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    root@k8s-master:~#  docker volume ls  #查看挂载的数据卷
    DRIVER    VOLUME NAME
    local     root_etcd1_data
    local     root_etcd2_data
    local     root_etcd3_data
    root@k8s-master:~# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    root@k8s-master:~# docker inspect etcd1 |grep Source
                    "Source": "/var/lib/docker/volumes/root_etcd1_data/_data",
    root@k8s-master:~# 
    
    • 1
    • 2
    • 3

    2. 测试节点

    从etcd1写一个key

    root@k8s-master:~# docker exec -it etcd1 bash
    I have no name!@7d0a06d1d3c9:/opt/bitnami/etcd$ etcdctl put name "i am mqq"
    OK
    I have no name!@7d0a06d1d3c9:/opt/bitnami/etcd$ exit
    
    • 1
    • 2
    • 3
    • 4

    从etcd2读一个value

    root@k8s-master:~# docker exec -it etcd2 bash
    I have no name!@249d8c83b745:/opt/bitnami/etcd$ etcdctl get name
    name
    i am mqq
    I have no name!@249d8c83b745:/opt/bitnami/etcd$ exit
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    从etcd3读一个value

    root@k8s-master:~# docker exec -it etcd3  bash
    I have no name!@db11e79ee1c1:/opt/bitnami/etcd$ etcdctl get name
    name
    i am mqq
    I have no name!@db11e79ee1c1:/opt/bitnami/etcd$ 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    搭建成功!

  • 相关阅读:
    MongoDB 正则表达式
    【LeetCode】53. 最大子数组和
    shell实现部署ftp提供共享yum仓库
    spark:页面单跳转换率统计(案例)
    mixup--学习笔记
    如何基于Java解析国密数字证书
    Vue-1.8生命周期
    Linux常用命令解析
    STL vector
    python requests请求接口返回304问题解决
  • 原文地址:https://blog.csdn.net/qq_14910065/article/details/132864041