etcd 镜像下载
1 docker pull quay.io/coreos/etcd:v3.5.12
1、单节点 etcd 部署实战-基于配置文件 2.1 创建 etcd 数据目录 1 mkdir -p /data/containers/etcd/{data,config}
data 目录:建议, 存储容器持久化数据
config 目录:建议, 存储容器使用的配置文件
2.2 创建 etcd 配置文件 etcd 服务配置文件路径为:/data/containers/etcd/config/etcd.conf.yml
1 2 3 4 5 6 7 8 9 10 11 12 name: etcd-s1 data-dir: /var/etcd listen-client-urls: http://0.0.0.0:2379 advertise-client-urls: http://0.0.0.0:2379 listen-peer-urls: http://0.0.0.0:2380 initial-advertise-peer-urls: http://0.0.0.0:2380 initial-cluster: etcd-s1=http://0.0.0.0:2380 initial-cluster-token: etcd-cluster initial-cluster-state: new logger: zap log-level: info #log-outputs: stderr
特殊参数说明:
name: etcd member 名称,可根据实际情况修改
data-dir: etcd 数据目录,可根据实际情况修改
listen-client-urls: client 流量监听地址,没特殊需求按文档填写即可
advertise-client-urls: 该 member 向外部通告的客户端 url 列表,单节点部署时不需要修改,集群部署模式需修改为容器所在节点对外提供服务的 IP
listen-peer-urls: peer 流量监听地址,没特殊需求按文档填写即可
initial-advertise-peer-urls: 该 member 向同一集群内其他 member 通告的 peer url 列表,单节点部署时不需要修改,集群部署模式需修改为容器所在节点对外提供服务的 IP
initial-cluster: 初始化集群节点信息,单节点部署时不需要修改,集群部署模式需要填写集群中所有 member 的信息
initial-cluster-token: 初始化集群时使用的 token,随便写
initial-cluster-state: 初始化集群状态,可选的值为 new 或者 existing ,通常采用 new
2.3 创建 docker-compose 文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 version: '3' services: etcd: container_name: etcd-s1 image: quay.io/coreos/etcd:v3.5.12 command: /usr/local/bin/etcd --config-file=/var/lib/etcd/conf/etcd.conf.yml volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/data:/var/etcd - ${DOCKER_VOLUME_DIRECTORY:-.}/config/etcd.conf.yml:/var/lib/etcd/conf/etcd.conf.yml - "/etc/localtime:/etc/localtime:ro" ports: - 2379 :2379 - 2380 :2380 restart: always networks: default: name: etcd-tier driver: bridge
2.4 创建并启动 etcd 服务 1 2 cd /data/containers/etcd docker compose up -d
2.5 验证容器状态
1 2 3 [root@docker-node-1 etcd]# docker compose ps -a NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS etcd-s1 quay.io/coreos/etcd:v3.5.12 "/usr/local/bin/etcd…" etcd 53 seconds ago Up 53 seconds 0.0.0.0:2379-2380->2379-2380/tcp, :::2379-2380->2379-2380/tcp
3. 单节点 etcd 部署实战-基于环境变量 3.1 创建 etcd 数据目录 1 mkdir -p /data/containers/etcd/data
3.2 创建 docker-compose 文件 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 version: '3' services: etcd: container_name: etcd-s1 image: quay.io/coreos/etcd:v3.5.12 environment: - ETCD_NAME=etcd-s1 - ETCD_DATA_DIR=/var/etcd - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - ETCD_ADVERTISE_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 - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster - ETCD_INITIAL_CLUSTER=etcd-s1=http://0.0.0.0:2380 - ETCD_INITIAL_CLUSTER_STATE=new - ETCD_LOGGER=zap - ETCD_LOG_LeveL=info volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/data:/var/etcd - "/etc/localtime:/etc/localtime:ro" ports: - 2379 :2379 - 2380 :2380 restart: always networks: default: name: etcd-tier driver: bridge
3.3 创建并启动 etcd 服务 1 2 cd /data/containers/etcd docker compose up -d
3.4 验证容器状态
1 2 3 [root@docker-node-1 etcd]# docker compose ps -a NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS etcd-s1 quay.io/coreos/etcd:v3.5.12 "/usr/local/bin/etcd" etcd 17 seconds ago Up 16 seconds 0.0.0.0:2379-2380->2379-2380/tcp, :::2379-2380->2379-2380/tcp
4. etcd 服务可用性测试 为了测试 etcd 服务的可用性,额外再找一台机器安装 etcd 客户端工具用于验证测试。
1 2 3 4 cd /srv wget https://github.com/etcd-io/etcd/releases/download/v3.5.12/etcd-v3.5.12-linux-amd64.tar.gz tar xvf etcd-v3.5.12-linux-amd64.tar.gz cd etcd-v3.5.12-linux-amd64