Write the Code. Change the World.

9月 24

副本镜像地址:https://quay.io/repository/coreos/etcd

这里会列出 etcd 的最新版本。当前最新版本 3.7.2

注意:放弃使用 bitnami/etcd 镜像。

基于环境变量的单节点 etcd 部署

services:
  etcd:
    image: quay.io/coreos/etcd:v3.7.2
    container_name: etcd-server
    environment:
      - TZ=${TZ:-Asia/Shanghai}
      - ETCD_NAME=etcd-server
      - ETCD_DATA_DIR=/var/etcd
      # listen:容器内部监听全部网卡,不要改0.0.0.0
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      # 对外客户端广播地址,同docker网络业务容器使用 etcd‑server:2379
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379
      # peer广播地址,单节点这里就用域名
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd-server:2380
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
      # initial‑cluster 和 advertise peer保持一致,全部域名
      - ETCD_INITIAL_CLUSTER=etcd-server=http://etcd-server:2380
      # 单节点docker环境,全新初始化打开 force‑new‑cluster,规避启动瞬间DNS时序问题
      - ETCD_FORCE_NEW_CLUSTER=${ETCD_FORCE_NEW_CLUSTER:-false}
      # 生产常态使用 existing;清空数据首次初始化改成 new
      - ETCD_INITIAL_CLUSTER_STATE=${ETCD_INITIAL_CLUSTER_STATE:-existing}
      - ETCD_LOGGER=zap
      - ETCD_LOG_LEVEL=${ETCD_LOG_LEVEL:-info}
      # 调优参数
      - ETCD_HEARTBEAT_INTERVAL=250
      - ETCD_ELECTION_TIMEOUT=2000
      - ETCD_MAX_REQUEST_BYTES=104857600
      - ETCD_SNAPSHOT_COUNT=50000
      # 设置 root 账号密码
      # - ETCD_ROOT_PASSWORD=xxxxxx
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-./etcd-data}:/var/etcd
    ports:
      - "127.0.0.1:2379:2379"
      - "127.0.0.1:2380:2380"
    restart: always
    networks:
      - xr-net

networks:
  xr-net:
    name: xr-net
    driver: bridge

下边是 .env 文件

TZ=Asia/Shanghai

# 数据卷
DOCKER_VOLUME_DIRECTORY=./etcd-data

# 全新初始化:new;日常运行:existing
ETCD_INITIAL_CLUSTER_STATE=new
ETCD_LOG_LEVEL=info

运行起来: docker compose up -d

查看:docker compose ps

# docker compose ps
NAME          IMAGE                        COMMAND                 SERVICE   CREATED          STATUS          PORTS
etcd-server   quay.io/coreos/etcd:v3.7.2   "/usr/local/bin/etcd"   etcd      10 minutes ago   Up 10 minutes   127.0.0.1:2379-2380->2379-2380/tcp

在浏览器中打开:http://127.0.0.1:2379/version

会看到输出: {"etcdserver":"3.7.2","etcdcluster":"3.7.0","storage":"3.7.0"}

相关参考

https://oldme.net/article/32
https://cloud.tencent.com/developer/article/2392231

9月 18

https://golang.google.cn/

安装 gRPC

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

安装 protobuf 编译器

官网下载链接: https://protobuf.dev/downloads/

Github 下载链接: https://github.com/protocolbuffers/protobuf/releases

  1. 下载 ProtoBuf 编译器

解压后,有下边这些目录。

# 只需把 bin 目录下的 exe 文件放在环境变量目录下就可以用了。
├─bin
└─include
    └─google
        └─protobuf
            └─compiler
  1. 当前用户使用,模拟 Linux 新建 ~/.local/bin 目录。

    New-Item -ItemType Directory -Force "$env:USERPROFILE\.local\bin"
  2. 将这个目录添加到环境变量中。

    # 获取现有用户PATH
    $userPath = [Environment]::GetEnvironmentVariable("PATH","User")
    if(-not $userPath.Contains("$env:USERPROFILE\.local\bin")){ [Environment]::SetEnvironmentVariable("PATH","$userPath;$env:USERPROFILE\.local\bin","User")
    }
  3. 将下载解压后的 bin 目录下的 protoc.exe 放到 ~/.local/bin 目录下。(如果 2,3步曾经做过,直接从第一步到这步)

  4. 重新打开终端测试。

protoc --version

where.exe protoc

安装 protoc‑gen‑go 和 protoc-gen-go-grpc

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

安装 etcd

系统中,安装了 docker。服务端也会是 docker 部署,就用 docker 来构建 etcd 服务。

https://blog.vini123.com/1429