美文网首页
使用docker创建etcd集群

使用docker创建etcd集群

作者: 洛杉矶银河 | 来源:发表于2020-04-25 23:09 被阅读0次

    etcd是一个高可用的键值存储系统,场景主要是
    1、主要用于共享配置
    2、服务注册与发现
    3、分布式锁等
    etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 等。它使用Go语言编写,下面介绍如何使用docker创建etcd集群

    找个go镜像 (这是官方镜像)
    https://hub.docker.com/_/golang
    
    # docker pull golang:1.12-alpine
    
    下载3.x版本etcd 
    https://github.com/etcd-io/etcd/releases
    解压到本地重命名为etcd33
    

    第一步:创建一个专门的docker网络

    docker network  create etcdnet  --subnet 172.25.0.0/16    (使用的是bridge,指定了子网)
    
    因此我们设定一个 IP规则
    
    etcd1:172.25.0.101
    etcd2:172.25.0.102
      
    等下我们启动容器时 会固化这些IP
    

    第二步:创建两个文件夹

    # mkdir -p etcd1/conf etcd1/data
    # mkdir -p etcd2/conf etcd2/data
    

    第三步:配置文件

    节点1:etcd.yml

    name: etcd1
    data-dir: /etcd/data
    listen-client-urls: http://172.25.0.101:2379, http://127.0.0.1:2379
    advertise-client-urls: http://172.25.0.101:2379
    listen-peer-urls: http://172.25.0.101:2380
    initial-advertise-peer-urls: http://172.25.0.101:2380
    initial-cluster: etcd1=http://172.25.0.101:2380,etcd2=http://172.25.0.102:2380
    initial-cluster-token: etcd-cluster-token
    initial-cluster-state: new
    

    节点2:etcd.yml

    name: etcd2
    data-dir: /etcd/data
    listen-client-urls: http://172.25.0.102:2379, http://127.0.0.1:2379
    advertise-client-urls: http://172.25.0.102:2379
    listen-peer-urls: http://172.25.0.102:2380
    initial-advertise-peer-urls: http://172.25.0.102:2380
    initial-cluster: etcd1=http://172.25.0.101:2380,etcd2=http://172.25.0.102:2380
    initial-cluster-token: etcd-cluster-token
    initial-cluster-state: new
    

    第四步:配置文件固化镜像

    首先 随便创建一个容器(使用之前下载的golang镜像)
    # docker run -d --name testgo -it \
    golang:1.12-alpine 
    
    来到解压好的etcd文件夹
    #cd etcd33
    
    拷贝etcd,etcdctl到容器
    # docker cp etcd testgo:/usr/bin && docker cp etcdctl testgo:/usr/bin 
    
    # docker exec -it testgo sh 
    # sudo chmod +x /usr/bin/etcd  /usr/bin/etcdctl 
    
    重新构建镜像
    # docker commit testgo etcd:my
    停止容器
    # docker stop testgo
    

    第五步:启动容器1

    docker run -d  --name etcd1  \
     --network etcdnet \
     --ip 172.25.0.101 \
     -p 23791:2379 \
     -e ETCDCTL_API=3 \
     -v pathto/etcd1:/etcd \
     etcd:my  etcd --config-file  /etcd/conf/etcd.yml
    

    第六步:启动容器2

    docker run -d  --name etcd2  \
     --network etcdnet \
     --ip 172.25.0.102 \
     -p 23792:2379 \
     -e ETCDCTL_API=3 \
     -v pathto/etcd2:/etcd \
     etcd:my  etcd --config-file  /etcd/conf/etcd.yml
    

    查看集群

    进入容器
     # docker exec -it etcd1 sh
     
     /go # etcdctl member list
     查看有两个节点说明正常
    97f72e8299c69562, started, etcd1, http://172.25.0.101:2380, http://172.25.0.101:2379
    aea8ea6030d288e8, started, etcd2, http://172.25.0.102:2380, http://172.25.0.102:2379
    
    //节点1存入用户信息
    etcdctl put /user/101/name xiaoma
    etcdctl put /user/101/age  19
    //两个节点均可获取用户信息
    docker exec -it etcd2 sh
    /go # etcdctl get /user/101 --prefix
    /user/101/age
    19
    /user/101/name
    xiaoma
    

    相关文章

      网友评论

          本文标题:使用docker创建etcd集群

          本文链接:https://www.haomeiwen.com/subject/zpzlwhtx.html