docker etcd 环境搭建

本文介绍了如何使用 Docker 搭建 etcd 服务,包括使用 grpc 的简单 API、tls 认证的安全性、每秒10000次写入的高性能以及基于 raft 协议的可靠性。内容涵盖了 etcd 的核心特点,etcdctl 命令行工具的使用,以及通过 e3w UI 界面进行 kv 存储和节点状态的可视化管理。提供了详细的参考资料和代码示例链接。

etcd 是用 golang 编写,raft 协议实现的分布式高可靠的 kv 存储系统,常用来作为配置共享和服务注册发现,Kubernetes 就使用 etcd 来保存整个集群的状态

etcd 主要关注以下四点:

  1. 简单: 定义良好,面向用户的 api (使用 grpc)
  2. 安全: 可选的 tls 用户认证方式
  3. 快速: 支持每秒 10000 次的写入
  4. 可靠: 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 界面 e3w

e3w 是一个 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

e3w 管理的 kv 是目录格式的,且所有的 key 都带有根目录前缀,根目录可以在 config.ini 中配置

比如 root_key=root,创建目录 service/svc1,创建 key1 => val1,实际在 etcd 的存储的 key 为 root/service/svc1/key1

链接

转载请注明出处
本文链接:https://tech.hatlonely.com/article/62

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值