搭建ETCD集群

查看NODE1机器IP,并启动ETCD

ubuntu@docker-node1:~$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450
inet 172.16.1.15 netmask 255.255.255.0 broadcast 172.16.1.255
inet6 fe80::f816:3eff:fe33:11a8 prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:33:11:a8 txqueuelen 1000 (Ethernet)
RX packets 11765471 bytes 10784121723 (10.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10697881 bytes 7319647448 (6.8 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ubuntu@docker-node1:~$ wget http://192.168.9.251:9000/software/etcd-v3.0.12-linux-amd64.tar.gz
ubuntu@docker-node1:~$ tar zxvf etcd-v3.0.12-linux-amd64.tar.gz
ubuntu@docker-node1:~$ cd etcd-v3.0.12-linux-amd64
ubuntu@docker-node1:~$ nohup ./etcd --name docker-node1 --initial-advertise-peer-urls http://172.16.1.15:2380 \
--listen-peer-urls http://172.16.1.15:2380 \
--listen-client-urls http://172.16.1.15:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://172.16.1.15:2379 \
--initial-cluster-token etcd-cluster \
--initial-cluster docker-node1=http://172.16.1.15:2380,docker-node2=http://172.16.1.36:2380 \
--initial-cluster-state new&

查看NODE2机器IP、启动ETCD,并ETCD健康检查

ubuntu@docker-node2:~$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr fa:16:3e:ec:fc:12
inet addr:172.16.1.36 Bcast:172.16.1.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:feec:fc12/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:18479729 errors:0 dropped:0 overruns:0 frame:0
TX packets:16843586 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7717777368 (7.7 GB) TX bytes:6506041953 (6.5 GB) ubuntu@docker-node2:~$ wget http://192.168.9.251:9000/software/etcd-v3.0.12-linux-amd64.tar.gz
ubuntu@docker-node2:~$ tar zxvf etcd-v3.0.12-linux-amd64.tar.gz
ubuntu@docker-node2:~$ cd etcd-v3.0.12-linux-amd64
ubuntu@docker-node2:~$ nohup ./etcd --name docker-node2 --initial-advertise-peer-urls http://172.16.1.36:2380 \
--listen-peer-urls http://172.16.1.36:2380 \
--listen-client-urls http://172.16.1.36:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://172.16.1.36:2379 \
--initial-cluster-token etcd-cluster \
--initial-cluster docker-node1=http://172.16.1.15:2380,docker-node2=http://172.16.1.36:2380 \
--initial-cluster-state new& ubuntu@docker-node2:~/etcd-v3.0.12-linux-amd64$ ./etcdctl cluster-health
member cd18d4410e46bbd1 is healthy: got healthy result from http://172.16.1.36:2379
member d05d0bbb1534c7ee is healthy: got healthy result from http://172.16.1.15:2379
cluster is healthy

修改docker配置文件支持etcd,重启docker

查看配置文件位于哪里

systemctl show --property=FragmentPath docker

编辑配置文件内容,接收所有IP请求

sudo vim /usr/lib/systemd/system/docker.service

修改配置ExecStart ,在后面追加 --cluster-store=etcd://172.16.1.36:2379 --cluster-advertise=172.16.1.36:2375

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://172.16.1.36:2379 --cluster-advertise=172.16.1.36:2375

重新加载配置文件,重启DOCKER DAEMON

sudo systemctl daemon-reload
sudo systemctl restart docker

两台服务器都需要上述操作

创建全局网络,并在网络中添加容器

创建全局网络

ubuntu@docker-node1:~$ sudo docker network ls
NETWORK ID NAME DRIVER SCOPE
0e7bef3f143a bridge bridge local
a5c7daf62325 host host local
3198cae88ab4 none null local
ubuntu@docker-node1:~$ sudo docker network create -d overlay demo
3d430f3338a2c3496e9edeccc880f0a7affa06522b4249497ef6c4cd6571eaa9
ubuntu@docker-node1:~$ sudo docker network ls
NETWORK ID NAME DRIVER SCOPE
0e7bef3f143a bridge bridge local
3d430f3338a2 demo overlay global
a5c7daf62325 host host local
3198cae88ab4 none null local
ubuntu@docker-node1:~$ sudo docker network inspect demo
[
{
"Name": "demo",
"Id": "3d430f3338a2c3496e9edeccc880f0a7affa06522b4249497ef6c4cd6571eaa9",
"Scope": "global",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "10.0.0.0/24",
"Gateway": "10.0.0.1/24"
}
]
},
"Internal": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]

添加容器

在node1上添加cli1.yaml,内容如下,网络指定为上面创建的全局网络

version: '2'
services:
cli:
container_name: cli
image: hyperledger/fabric-tools:raft
tty: true
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer networks:
default:
external:
name: demo

在node2上添加cli2.yaml,内容如下,网络指定为上面创建的全局网络

version: '2'
services:
cli2:
container_name: cli2
image: hyperledger/fabric-tools:raft
tty: true
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer networks:
default:
external:
name: demo

利用docker-compose分别启动两个节点。

docker-compose -f cli1.yaml up -d

docker-compose -f cli2.yaml up -d

查看demo网络详情,可以看到两个容器已经加入同一网络。

ubuntu@docker-node1:~$ sudo docker network inspect demo
[
{
"Name": "demo",
"Id": "9dc055222c85e1ca09db6d66910c1dba27d342e070f1ca6f976533071344e939",
"Created": "2018-05-23T10:44:36.454709725+08:00",
"Scope": "global",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "10.0.0.0/24",
"Gateway": "10.0.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Containers": {
"21da2d4d9b55e60b4636d7d0a9e7513b47784be55990ba46288a29a527ba470e": {
"Name": "cli",
"EndpointID": "411418d95a303f0452415e0481fc11ac41d6755e9680e042042f2afd93f62cca",
"MacAddress": "02:42:0a:00:00:03",
"IPv4Address": "10.0.0.3/24",
"IPv6Address": ""
},
"ep-6725169b38e657bd6cef4d1b1cdf530575b7caf78f78a037d21c65eb2c90e6ab": {
"Name": "cli2",
"EndpointID": "6725169b38e657bd6cef4d1b1cdf530575b7caf78f78a037d21c65eb2c90e6ab",
"MacAddress": "02:42:0a:00:00:02",
"IPv4Address": "10.0.0.2/24",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]

Docker跨主机网络联通之etcd实现的更多相关文章

  1. Docker跨主机网络——overlay

    前言 在Docker网络--单host网络一文中,我为大家总结了Docker的单机网络相关知识和操作,单机网络比较容易.本文我为大家总结Docker跨主机通信相关知识.同样本文大部分内容以CloudM ...

  2. Docker 跨主机网络

    Docker提供两种原生的跨主机网络: Overlay  和  Macvlan libnetwork & CNM libnetwork 是 docker 容器网络库,最核心的内容是其定义的 C ...

  3. Docker 跨主机网络 overlay(十六)

    目录 一.跨主机网络概述 二.准备 overlay 环境 1.环境描述 2.创建 consul 3.修改 docker 配置文件 4.准备就绪 三.创建 overlay 网络 1.在 host1 中创 ...

  4. Docker跨主机网络实践

    Docker使用中网络管理是最麻烦的,在项目初始化前期就需要进行合理的规划,如果在比较理想的单主机的网络通信是比较简单的,但如果涉及到跨主机的网络就需要使用docker自带的overlay netwo ...

  5. docker 跨主机网络:overlay 简介

    简介 docker 在早前的时候没有考虑跨主机的容器通信,这个特性直到 docker 1.9 才出现.在此之前,如果希望位于不同主机的容器能够通信,一般有几种方法: 使用端口映射:直接把容器的服务端口 ...

  6. Docker 跨主机网络方案分析

    PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...

  7. Docker跨主机网络解决方案

    前言:前面的部分一直都是单机跑docker,但实际生产环境不可能只用一台来跑.肯定会用到多台,因为他们都是内部私有ip,那么多台主机之间的容器如何通信?这个是个很头疼的问题!目前主流几种方法如下:1. ...

  8. 安装docker跨主机网络flannel

    一.实验环境 机器 操作系统 安装服务 172.16.4.36 centos7 docker etcd flannel 172.16.4.37 centos7 docker etcd flanne ( ...

  9. centos7下安装docker(15.2跨主机网络-overlay)

    为支持容器跨主机通信,Docker提供了overlay driver,使用户可以创建基于VxLAN的overlay网络.VxLAN可将二层数据封装到UDP进行传输,VxLAN提供与VLAN相同的以太网 ...

随机推荐

  1. java项目对jar包加密流程,防止反编译

    Java 开发语言以其安全性高.代码优化.跨平台等特性,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位.特别是近年来大数据.互联网+.云计算技术的不断发展,Java 开发语言 ...

  2. css实现礼券效果3

    <view class="coupon"> <view class="coupon-left"> </view> <v ...

  3. vi命令撤销及恢复

    u   :插销上一步操作 Ctrl + r :恢复被撤销的上一步操作

  4. python之进程,线程,协程简单理解

    进程:资源单位,由操作系统控制调度.正在执行的一个程序或者过程,进程之间不共享资源,进程间通讯手段:管道,队列,信号量等.多用于计算密集型场景,如金融计算 线程:是cpu的最小执行单位,由操作系统控制 ...

  5. leetcode143. Reorder List

    用快慢双指针,可以使慢指针到达中间的时候快指针到达最后一个元素(奇数),或者倒数第二个元素(偶数).慢指针后面的元素是后半个链表,把后半个链表进行reverse,然后再插在原来的链表中就可以了 /** ...

  6. .Net Core:Middleware中间件管道

    .NetCore中的Middleware是装配到管道处理请求和响应的组件:每个组件都可以决定是否继续进入下一个管道.并且可以在进入下一个管道前后执行逻辑: 最后一个管道或者中断管道的中间件叫终端中间件 ...

  7. windows----------Windows10 远程桌面连接失败,报CredSSP加密oracle修正错误解决办法

    1.通过运行gpedit.msc进入组策略配置(需要win10专业版,家庭版无解),策略路径:“计算机配置”->“管理模板”->“系统”->“凭据分配”,设置名称: 加密 Oracl ...

  8. bfs经典

    题意:地图上分别用‘.’表示硬地,‘#’表示禁地,‘E’表示易碎地面.你的任务操作一个1*1*2的长方体.长方体有两种状态分别为:立在地面上,躺在地面上.把长方体从入口移动到出口,求需要的最小步数. ...

  9. Tensorflow --BeamSearch

    github:https://github.com/zle1992/Seq2Seq-Chatbot 1. 注意在infer阶段,需要需要reuse, 2.If you are using the Be ...

  10. CentOS7──xxx is not in the sudoers file

    提示"xxx is not in the sudoers file. This incident will be reported.其中 ”XXX“是你的用户名,也就是你的用户名没有权限使用 ...