搭建集群之前首先准备两台安装了CentOS 7的主机,并在其上安装好Docker。

Master 10.100.97.46
Node 10.100.97.64
ETCD集群搭建有三种方式,分别是Static(静态方式),Discovery(服务发现方式),DNS discovery (DNS发现),官方文档https://coreos.com/etcd/docs/latest/op-guide/clustering.html。
比较三种方式,Static方式最方便简单。我们在这里使用添加主机的方式搭建集群,先假装Master机器不知道Node机器的存在,然后再把Node节点添加进来。

1. 首先获取ETCD镜像,两台主机都有(以下简称two)。

该镜像的版本信息:https://hub.docker.com/r/eagle6688/etcd/

docker pull eagle6688/etcd

2. 开放ETCD通信使用的接口,two:

sudo firewall-cmd --zone=public --add-port=/tcp --permanent
sudo firewall-cmd --zone=public --add-port=/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

最后那行代码显示已经打开的所有端口。

3. 创建数据挂载目录,two:

sudo mkdir -p  /var/data/etcd

4. 在Master机执行:

docker run \
-it \
-p : \
-p : \
-v /var/data/etcd:/data \
--name etcd-master \
eagle6688/etcd \
--name etcd-master \
--data-dir /data \
--listen-peer-urls http://0.0.0.0:2380 \
--listen-client-urls http://0.0.0.0:2379 \
--initial-advertise-peer-urls http://10.100.97.46:2380 \
--initial-cluster etcd-master=http://10.100.97.46:2380 \
--initial-cluster-state new \
--initial-cluster-token eagle-cluster \
--advertise-client-urls http://10.100.97.46:2379

注意,第8行我们给etcd节点起的名字要跟13行的name相同,配置node节点时类似。此外,这里的配置仅仅跟master节点自身有关,此时它还不知道有node的存在。

5. 测试master节点:

分别在master节点和node节点执行下面的语句以测试master节点的有效性:

curl http://10.100.97.46:2379/v2/members

该语句应该返回包含master节点信息的json字符串。

6. 添加node节点

在node机调用master的api添加自己

curl http://10.100.97.46:2379/v2/members -XPOST -H "Content-Type: application/json" -d '{"peerURLs":["http://10.100.97.64:2380"]}'

此时,master节点会暂停下来等待node节点的加入。

7. 启动node节点上的etcd

docker run \
-it \
-p : \
-p : \
-v /var/data/etcd:/data \
--name etcd-G510 \
eagle6688/etcd \
--name etcd-node \
--data-dir /data \
--listen-peer-urls http://0.0.0.0:2380 \
--listen-client-urls http://0.0.0.0:2379 \
--initial-advertise-peer-urls http://10.100.97.64:2380 \
--initial-cluster etcd-master=http://10.100.97.46:2380,etcd-node=http://10.100.97.64:2380 \
--initial-cluster-state existing \
--initial-cluster-token eagle-cluster \
--advertise-client-urls http://10.100.97.64:2379

注意,initial-cluster要包含所有节点,initial-cluster-state必须是existing。

Docker下ETCD集群搭建的更多相关文章

  1. [Kubernetes]CentOS7下Etcd集群搭建

    Etcd简要介绍 Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息 Etcd构建自身高可用集群主要有三种形式: ①静态发现: 预先已知 Etcd 集 ...

  2. Centos7下Etcd集群搭建

    一.简介 "A highly-available key value store for shared configuration and service discovery." ...

  3. Centos7环境下etcd集群的搭建

    Centos7环境下etcd集群的搭建 一.简介 "A highly-available key value store for shared configuration and servi ...

  4. Docker Swarm redis 集群搭建

    Docker Swarm redis 集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docke ...

  5. Kubernetes-3.3:ETCD集群搭建及使用(https认证+数据备份恢复)

    etcd集群搭建 环境介绍 基于CentOS Linux release 7.9.2009 (Core) ip hostname role 172.17.0.4 cd782d0a790b etcd1 ...

  6. Linux环境下Hadoop集群搭建

    Linux环境下Hadoop集群搭建 前言: 最近来到了武汉大学,在这里开始了我的研究生生涯.昨天通过学长们的耐心培训,了解了Hadoop,Hdfs,Hive,Hbase,MangoDB等等相关的知识 ...

  7. 使用docker配置etcd集群

    docker配置etcd集群与直接部署etcd集群在配置上并没有什么太大差别. 我这里直接使用docker-compose来实现容器化的etcd部署 环境如下: HostName IP etcd1 1 ...

  8. 基于Docker部署ETCD集群

    基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...

  9. Linux下zookeeper集群搭建

    Linux下zookeeper集群搭建 部署前准备 下载zookeeper的安装包 http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper ...

随机推荐

  1. Nginx+Tomcat动静分离及Nginx优化

    目的:nginx处理用户请求的静态页面,tomcat处理用户请求jsp页面,来实现动态分离,nginx处理静态页面效率远高于tomcat,这样一来就能更好的提高并发,处理性能. 准备软件: 下载jdk ...

  2. 设计模式 --> (10)享元模式

    享元模式 运用共享技术有效地支持大量细粒度的对象. 享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State). 内蕴状态是存储在享元对象内部并且 ...

  3. c++ --> cin和cout输入输出格式

    cin和cout输入输出格式 Cout 输出 1>. bool型输出 cout << true <<" or " << false < ...

  4. present(模态)实现出push的效果

    在present加上这个转场动画,取消掉原来的转场动画  CATransition *animation = [CATransitionanimation];     animation.durati ...

  5. 以太坊开发DApp实战教程——用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台(一)

    第一节 简介 欢迎和我们一起来用以太坊开发构建一个去中心化电商DApp!我们将用区块链.星际文件系统(IPFS).Node.js和MongoDB来构建电商平台类似淘宝的在线电商应用,卖家可以自由地出售 ...

  6. 浅谈element-ui中的BEM范式实践

    日常的工作中,我们无时无刻不在和样式打交道.没有样式的页面就如同一部电影,被人随意地在不同地方做了截取. BEM规范应该是对于我们现在前端组件开发中我觉得是最合适的一套范式了.所以,我在自己的日常工作 ...

  7. Python 科学计算-介绍

    Python 科学计算 作者 J.R. Johansson (robert@riken.jp) http://dml.riken.jp/~rob/ 最新版本的 IPython notebook 课程文 ...

  8. 利用yield 实现Xrange功能

    def xrange(n): start = 0 while True: if start>n: return yield start start+=1 obj = xrange(5) n1 = ...

  9. 【iOS】swift-Binary operator '|' cannot be applied to two UIViewAutoresizing operands

    let view = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 568)) addSubview(view) view.autoresi ...

  10. JAVA_SE基础——51.内部类

    在Java中,允许在一个类的内部定义类,这样的类称作内部类,这个内部类所在的类称作外部类.根据内部类的位置.修饰符和定义的方式可分为成员内部类.静态内部类.方法(局部内部类)内部类. 内部类:一个类定 ...