Docker下ETCD集群搭建
2018-01-15 14:24
260 查看
搭建集群之前首先准备两台安装了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/
2. 开放ETCD通信使用的接口,two:
最后那行代码显示已经打开的所有端口。
3. 创建数据挂载目录,two:
4. 在Master机执行:
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=2379/tcp --permanent sudo firewall-cmd --zone=public --add-port=2380/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 2379:2379 \ -p 2380:2380 \ -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[/code]
注意,第8行我们给etcd节点起的名字要跟13行的name相同,配置node节点时类似。此外,这里的配置仅仅跟master节点自身有关,此时它还不知道有node的存在。
5. 测试master节点:
分别在master节点和node节点执行下面的语句以测试master节点的有效性:curl http://10.100.97.46:2379/v2/members[/code]
该语句应该返回包含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节点上的etcddocker run \ -it \ -p 2379:2379 \ -p 2380:2380 \ -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[/code]
注意,initial-cluster要包含所有节点,initial-cluster-state必须是existing。
相关文章推荐
- Docker 搭建 etcd 集群
- Docker 搭建 etcd 集群及管理
- quay.io/coreos/etcd 基于Docker镜像的集群搭建
- Docker + Swarm + etcd 集群搭建
- etcd 集群搭建及常用场景分析
- 从docker入门到使用docker搭建redis哨兵集群
- Kubernetes管理Docker集群之路(3.搭建私有仓库)
- etcd集群搭建,/etc/etcd/etcd.conf配置
- 使用docker快速搭建Spark集群的方法教程
- 基于docker搭建跨主机的spark集群并配置notebook(二)
- 在Docker上使用Weave搭建Hadoop和Spark跨主机容器集群
- mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)
- 使用Docker在本地搭建Hadoop分布式集群
- 用docker搭建elasticsearch集群
- 求解:基于docker搭建跨主机hadoop集群遇到的问题
- docker应用-6(mysql+mycat 搭建数据库集群)
- Linux_基于Docker搭建Redis集群
- 搭建rabbitmq的docker集群
- ubuntu虚拟机搭建docker内的redis集群
- docker探索-swarm搭建docker集群(七)