docker etcd 问题

踩过的坑,终将成为你的财富……

1-Linux环境权限问题

举例:
某年,某月,某天,你突发奇想,想使用etcd作为微服务注册中心,此时可能你想用现成的框架,例如golang的go-micro/kratos/go-zero……等等,当然也可能有像我这样想徒手搓一套微服务框架的人,此时你满怀信心的搭建起了项目,一切的很顺利,此时来到安装etcd环节;

这时,你想到了方便快捷的docker,就想着用docker-compose快速搭建一个etcd三节点集群;

当你满怀信心的编写完docker-compose.yml, 敲下sudo docker-compose up -d, 然后成功运行,此时你满怀信心准备尝试使用etcd,当你使用etcd sdk操作时,爆出一个错误来:

{"level":"warn","ts":"2023-11-04T21:27:46.896566+0800","logger":"etcd-client","caller":"v3@v3.5.10/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"etcd-endpoints://0xc00015ca80/127.0.0.1:2379","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = latest balancer error: last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:2379: connect: connection refused\""}
Error: context deadline exceeded

此时,你去sudo docker logs etcd_node1查看日志发现没有什么问题:
请添加图片描述
然而,你不知道的是,其实略微细心往上翻会发现这句日志:

{"level":"warn","ts":"2023-11-04T21:42:05.350828+0800","caller":"etcdmain/etcd.go:146","msg":"failed to start etcd","error":"open /opt/bitnami/etcd/conf/peer-key.pem: permission denied"}

如果此时,你看到这句大概就明白缺什么东西了,缺少权限,缺少什么权限?
此时我直接一个sudo chmod -R 765 /opt/docker/etcd, 然后重新运行项目,完美解决,然后,完结撒花;

这只是其中一个问题,但是,篇幅不允许再往下讲了(其实我也忘了还遇到什么问题了,最重要的应该就是这个),下面附赠etcd单节点tlsdocker-compose.yml

version: "3.7"

services:
  etcd_node1:
    image: "bitnami/etcd:latest"
    container_name: "etcd_node1"
    restart: "always"
    ports:
      - 10103:2379
      - 10104:2380
    environment:
      - TZ=Asia/Shanghai
      - ETCD_NAME=etcd_node1
      - ETCD_ROOT_PASSWORD=hillstone
      - ETCD_CLIENT_CERT_AUTH=true
      - ETCD_PEER_CLIENT_CERT_AUTH=true
      - ETCD_ADVERTISE_CLIENT_URLS=https://192.168.1.100:10103
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=https://192.168.1.100:10104
      - ETCD_LISTEN_CLIENT_URLS=https://0.0.0.0:2379
      - ETCD_LISTEN_PEER_URLS=https://0.0.0.0:2380
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd_cluster
      - ETCD_INITIAL_CLUSTER=etcd_node1=https://192.168.1.100:10104
      - ETCD_INITIAL_CLUSTER_STATE=new
      - ETCD_DATA_DIR=/opt/bitnami/etcd/data
      - ETCD_TRUSTED_CA_FILE=/opt/bitnami/etcd/conf/ca.pem
      - ETCD_KEY_FILE=/opt/bitnami/etcd/conf/server-key.pem
      - ETCD_CERT_FILE=/opt/bitnami/etcd/conf/server.pem
      - ETCD_PEER_TRUSTED_CA_FILE=/opt/bitnami/etcd/conf/ca.pem
      - ETCD_PEER_KEY_FILE=/opt/bitnami/etcd/conf/peer-key.pem
      - ETCD_PEER_CERT_FILE=/opt/bitnami/etcd/conf/peer.pem
    volumes:
      # 将数据映射到宿主机
      - ./data:/opt/bitnami/etcd/data
      - ./cert/ca.pem:/opt/bitnami/etcd/conf/ca.pem
      - ./cert/peer.pem:/opt/bitnami/etcd/conf/peer.pem
      - ./cert/peer-key.pem:/opt/bitnami/etcd/conf/peer-key.pem
      - ./cert/server.pem:/opt/bitnami/etcd/conf/server.pem
      - ./cert/server-key.pem:/opt/bitnami/etcd/conf/server-key.pem
      - ./cert/client-key.pem:/opt/bitnami/etcd/client-key.pem
      - ./cert/client.pem:/opt/bitnami/etcd/client.pem
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当你想要在Docker中部署etcd时,可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Docker,并且Docker守护进程正在运行。 2. 下载etcdDocker镜像。你可以使用以下命令从Docker Hub上获取官方的etcd镜像: ``` docker pull quay.io/coreos/etcd ``` 3. 创建一个etcd容器。使用以下命令创建一个新的etcd容器: ``` docker run -d --name my-etcd -p 2379:2379 -p 2380:2380 \ --volume=/path/to/data:/etcd-data \ quay.io/coreos/etcd:latest \ /usr/local/bin/etcd \ --name my-etcd \ --data-dir /etcd-data \ --advertise-client-urls http://0.0.0.0:2379 \ --listen-client-urls http://0.0.0.0:2379 \ --initial-advertise-peer-urls http://0.0.0.0:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --initial-cluster my-etcd=http://0.0.0.0:2380 \ --initial-cluster-token my-etcd-token \ --initial-cluster-state new ``` 这个命令会创建一个名为my-etcd的容器,并将容器的2379端口映射到主机的2379端口,以及将容器的2380端口映射到主机的2380端口。你可以根据需要修改这些端口映射。 4. 现在,你的etcd容器已经在Docker中运行起来了。你可以使用etcd客户端工具连接到容器并进行操作。例如,你可以使用以下命令连接到etcd容器: ``` docker exec -it my-etcd /bin/sh ``` 这将在容器内部启动一个shell会话,你可以在其中运行etcd客户端命令。 以上是在Docker中部署etcd的基本步骤。你可以根据自己的需求进行进一步的配置和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梨花炖海棠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值