docker-compose搭建etcd集群的实现(三节点)

docker-compose搭建etcd集群的实现(三节点)

目录

1. 环境说明

2. 部署

etcd1

etcd2

etcd3

3. 验证

3.1 查看集群状态

3.2 读写测试

1. 环境说明 节点IP
etcd110.10.239.31
etcd210.10.239.32
etcd310.10.239.33
2. 部署 etcd1

ymal文件

version: "3.0" services: etcd1: image: bitnami/etcd:latest container_name: etcd1 restart: always ports: - "2379:2379" - "2380:2380" environment: - ALLOW_NONE_AUTHENTICATION=yes #示例中我们不设置密码 - ETCD_NAME=etcd1 #节点自己的名字 - ETCD_ADVERTISE_CLIENT_URLS=http://10.10.239.31:2379 #告知集群自己的客户端地址 - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 #设置监听客户端通讯的URL列表 - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://10.10.239.31:2380 #告知集群自己集群通讯地址 - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 #用于监听伙伴通讯的URL列表 - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster #etcd 集群的初始化集群记号 - ETCD_INITIAL_CLUSTER=etcd1=http://10.10.239.31:2380,etcd2=http://10.10.239.32:2380,etcd3=http://10.10.239.33:2380 #集群成员 - ETCD_INITIAL_CLUSTER_STATE=new #初始化集群状态 volumes: - ./data:/bitnami/etcd

持久化

如果此时启动,会在当前目录下创建 ./data 目录,挂载到容器的 /bitnami/etcd ,但我们要注意的是,容器中启动etcd的用户并不是root用户,很可能没有在目录下创建文件的权限。我们有两个方案:

【方法一】给777权限(不建议)

【方法二】所属主改成对应宿主机用户(建议)

方法二操作:

先给./data目录777权限

查看新生成的文件属主是宿主机哪个用户,就将./data目录属主改为哪个用户

再将权限改回755或750,重启容器

启动服务

[root@liubei-01 etcd1]# docker-compose up -d

查看结果

[root@liubei-01 etcd1]# docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------------------- etcd1 /opt/bitnami/scripts/etcd/ ... Up 0.0.0.0:2379->2379/tcp, 0.0.0.0:2380->2380/tcp etcd2

ymal文件

version: "3.0" services: etcd1: image: bitnami/etcd:latest container_name: etcd2 restart: always ports: - "2379:2379" - "2380:2380" environment: - ALLOW_NONE_AUTHENTICATION=yes - ETCD_NAME=etcd2 - ETCD_ADVERTISE_CLIENT_URLS=http://10.10.239.32:2379 - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://10.10.239.32:2380 - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster - ETCD_INITIAL_CLUSTER=etcd1=http://10.10.239.31:2380,etcd2=http://10.10.239.32:2380,etcd3=http://10.10.239.33:2380 - ETCD_INITIAL_CLUSTER_STATE=new volumes: - ./data:/bitnami/etcd

持久化(同上)

启动服务(同上)

etcd3

ymal文件

version: "3.0" services: etcd1: image: bitnami/etcd:latest container_name: etcd3 restart: always ports: - "2379:2379" - "2380:2380" environment: - ALLOW_NONE_AUTHENTICATION=yes - ETCD_NAME=etcd3 - ETCD_ADVERTISE_CLIENT_URLS=http://10.10.239.33:2379 - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://10.10.239.33:2380 - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster - ETCD_INITIAL_CLUSTER=etcd1=http://10.10.239.31:2380,etcd2=http://10.10.239.32:2380,etcd3=http://10.10.239.33:2380 - ETCD_INITIAL_CLUSTER_STATE=new volumes: - ./data:/bitnami/etcd

持久化(同上)

启动服务(同上)

3. 验证 3.1 查看集群状态

查看集群成员

I have no name!@555187fb758c:/opt/bitnami/etcd$ etcdctl --write-out=table member list +------------------+---------+-------+--------------------------+--------------------------+------------+ | ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER | +------------------+---------+-------+--------------------------+--------------------------+------------+ | 57d6f74aaa8d5d3e | started | etcd1 | http://10.10.239.31:2380 | http://10.10.239.31:2379 | false | | 9107e491ab549324 | started | etcd3 | http://10.10.239.33:2380 | http://10.10.239.33:2379 | false | | e7b147006e212ca5 | started | etcd2 | http://10.10.239.32:2380 | http://10.10.239.32:2379 | false | +------------------+---------+-------+--------------------------+--------------------------+------------+

查看本节点状态

I have no name!@555187fb758c:/opt/bitnami/etcd$ etcdctl --write-out=table endpoint status +----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | +----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | 127.0.0.1:2379 | 57d6f74aaa8d5d3e | 3.5.4 | 20 kB | true | false | 2 | 10 | 10 | | +----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

查看本节点健康状态

I have no name!@555187fb758c:/opt/bitnami/etcd$ etcdctl --write-out=table endpoint health +----------------+--------+------------+-------+ | ENDPOINT | HEALTH | TOOK | ERROR | +----------------+--------+------------+-------+ | 127.0.0.1:2379 | true | 3.736825ms | | +----------------+--------+------------+-------+ 3.2 读写测试

登录其中一个节点,进入容器,写一条数据
zai

[root@liubei-01 etcd3]# docker exec -it 788 bash I have no name!@788dd01aaa79:/opt/bitnami/etcd$ etcd etcd etcdctl I have no name!@788dd01aaa79:/opt/bitnami/etcd$ etcdctl put name "liubei" OK

登录另一个节点,进入容器,读取数据

[root@liubei-02 ~]# docker exec -it 555 bash I have no name!@555187fb758c:/opt/bitnami/etcd$ etcdctl get name name liubei

到此这篇关于docker-compose搭建etcd集群的实现(三节点)的文章就介绍到这了,更多相关docker-compose搭建etcd集群内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    聊聊docker下怎么启动容器

    聊聊docker下怎么启动容器,镜像,应用程序,下载,启动,名称,命令,Docker是一种轻量级的虚拟化解决方案,可以将应用和其所有的依赖性封装到一个独立

    如何在linux上安装docker

    如何在linux上安装docker,安装,运行,命令,步骤,用户,版本,随着容器技术的兴起,Docker 已经成为了最为流行的容器引擎。它可以快速构建、部署、运

    如何彻底卸载docker

    如何彻底卸载docker,删除,命令,软件包,文件,卸载,步骤,随着云计算和容器技术的快速发展,Docker已成为现今最流行的容器化应用平台之一。然而,对于

    如何启动docker中的容器

    如何启动docker中的容器,启动,命令,服务,镜像,文件,方法,Docker是一种流行的容器化平台,容器是一种轻量级、可移植的软件包,包含软件应用程序及其

    docker安装的详细步骤

    docker安装的详细步骤,安装,步骤,命令,软件包,系统,应用程序,Docker是一款开源的容器化应用程序,它可以将应用程序及其依赖项打包到一个容器中,从

    怎么给docker换镜像源

    怎么给docker换镜像源,镜像源,镜像,加速器,加速,步骤,命令,随着Docker的普及,越来越多的人开始使用它来构建和部署应用程序。不过,当我们使用Dock

    怎么启动docker

    怎么启动docker,启动,命令,安装,执行,删除,名称,Docker 是一个由 Linux 内核提供的容器化引擎,可以在同一台主机上运行多个容器,这些容器彼此隔离

    docker怎么删除镜像

    docker怎么删除镜像,镜像,删除,命令,系统,执行,名称,Docker是一个用于开发、运行和部署应用程序的开放平台,可以轻松地将应用程序与所依赖的库打

    docker是啥意思

    docker是啥意思,虚拟化,核心,镜像,应用程序,服务器,虚拟机,docker有两种意思:1、指英文单词docker,其中文翻译是“码头工人”;2、指Docker容器,是一

    docker如何正确删除指定容器

    docker如何正确删除指定容器,删除,命令,备份,镜像,数据,运行,随着云计算和虚拟化技术的不断发展,Docker 容器已经成为了应用程序开发和部署的重

    docker怎么在windows上安装

    docker怎么在windows上安装,安装,运行,应用程序,启用,命令,镜像,Docker是一个非常流行的容器化技术,可以在不同的平台上实现应用程序的封装、分

    docker环境怎么进

    docker环境怎么进,镜像,命令,名称,用于,操作,运行,Docker是一种容器化技术,方便开发者进行应用程序的部署和管理。Docker环境是在操作系统上的一

    docker是一个软件吗

    docker是一个软件吗,虚拟化,虚拟机,运行,平台,开发者,用于,docker是一个软件,是一个运行与linux和windows上的软件,用于创建、管理和编排容器;dock