Docker 容器部署 Consul 集群
Docker 容器部署 Consul 集群
一、docker安装与启动
1.1安装docker
[root@localhost /]# yum -y install docker-io
1.2更改配置文件
[root@localhost /]# vi /etc/sysconfig/docker
other-args列更改为:other_args="--exec-driver=lxc --selinux-enabled"
1.3启动docker服务
[root@localhost /]# service docker start
Starting cgconfig service: [ OK ]
Starting docker: [ OK ]
1.4将docker加入开机启动
[root@localhost /]# chkconfig docker on
1.5基本信息查看
docker version:查看docker的版本号,包括客户端、服务端、依赖的Go等
[root@localhost /]# docker version
Client version: 1.0.0
Client API version: 1.12
Go version (client): go1.2.2
Git commit (client): 63fe64c/1.0.0
Server version: 1.0.0
Server API version: 1.12
Go version (server): go1.2.2
Git commit (server): 63fe64c/1.0.0
docker info :查看系统(docker)层面信息,包括管理的images, containers数等
[root@localhost /]# docker info
Containers: 16
Images: 40
Storage Driver: devicemapper
Pool Name: docker-253:0-1183580-pool
Data file: /var/lib/docker/devicemapper/devicemapper/data
Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
Data Space Used: 2180.4 Mb
Data Space Total: 102400.0 Mb
Metadata Space Used: 3.4 Mb
Metadata Space Total: 2048.0 Mb
Execution Driver: lxc-0.9.0
Kernel Version: 2.6.32-431.el6.x86_64
二、progrium/consul镜像安装
2.1搜索镜像
[root@localhost /]# docker search consul
docker.io docker.io/progrium/consul 231 [OK]
docker.io docker.io/gliderlabs/consul 43 [OK]
……
2.2下载镜像progrium/consul
[root@localhost /]# docker pull docker.io/progrium/consul
2.3查看镜像
[root@localhost /]# docker images -a ////列出所有的images(包含历史)
三、在Docker 容器中启动Consul Agent,这里的操作参考progrium/consul的官方说明https://hub.docker.com/r/progrium/consul/
3.1以Server 模式在容器中启动一个agent
[root@localhost /]# docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul -server -bootstrap
我们测试一下,可以通过curl访问http端口:
[root@localhost /]# curl localhost:8500/v1/catalog/nodes
再测试一下,也可以通过dig访问一下 DNS 端口:
[root@localhost /]# dig @0.0.0.0 -p 8600 node1.node.consul
3.2用Docker 容器启动Consul集群
分别启动三个server节点,并且绑定到同一个ip
-bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群
[root@localhost /]# docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
[root@localhost /]# JOIN_IP="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)" ////获取node1的ip地址
[root@localhost /]# docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
[root@localhost /]# docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
启动client节点
[root@localhost /]# docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node4 -h node4 progrium/consul -join $JOIN_IP
这时使用nsenter工具连接到node1上运行consul info,可以到到node1为state = Leader
查看正在运行的容器
[root@localhost /]# docker ps
查看所有的容器(运行中和关闭的)
[root@localhost /]# docker ps -a
删除所有容器
[root@localhost /]# docker rm $(docker ps -a -q)
3.3进入docker容器操作查看
docker使用 -d 参数时,容器启动后会进入后台。
某些时候需要进入容器进行操作,特别是测试时。有很多种方法,包括使用ssh,docker attach命令或 nsenter工具等。
3.3.1使用docker attach,多个窗口不方便
[root@localhost /]# docker attach node3
2016/03/14 03:35:40 [INFO] agent: Synced service 'consul'
3.3.2使用nsenter
先安装
[root@localhost /]# cd /tmp
[root@localhost /]# curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz
[root@localhost /]# tar zxf util-linux-2.24.tar.gz
[root@localhost /]# cd util-linux-2.24
[root@localhost /]# ./configure --without-ncurses
[root@localhost /]# make nsenter
[root@localhost /]# cp nsenter /usr/local/bin ////不用make install,直接把make生成的nsenter 复制到/usr/local/bin目录下即可
[root@localhost /]# PID=`docker inspect --format "{{ .State.Pid }}" node1 `
[root@localhost /]# nsenter --target $PID --mount --uts --ipc --net --pid
上面2条命令可以合一:nsenter --target `docker inspect --format "{{ .State.Pid }}" node1` --mount --uts --ipc --net --pid
node1:/# ////ok了可以随便输入linux命令检查一下看看,比如
开始consul命令
node1:/# consul members
node1:/# consul info
Docker 容器部署 Consul 集群的更多相关文章
- 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群
庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介 前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...
- 【解决】docker 容器中 consul集群问题处理
现象描述: node1 和node2 日志反复出现 add remove node3节点. node3 节点 一直 驳回 node1 和node2 认为node3已经dead的消息 不断重启se ...
- Docker部署Consul集群
服务介绍 Consul是一种分布式.高可用.支持水平扩展的服务注册与发现工具.包含的特性有:服务发现.健康检查.键值存储.多数据中心和服务管理页面等. 官方架构设计图: 图中包含两个Consul数据中 ...
- 使用docker安装部署Spark集群来训练CNN(含Python实例)
使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...
- Docker安装部署es集群
Docker安装部署es集群:环境准备:已安装docker的centos服务器一台1. 拉取es版本docker pull elasticsearch:5.6.82. 新建文件夹 数据挂载目录 和 配 ...
- docker 快速部署ES集群 spark集群
1) 拉下来 ES集群 spark集群 两套快速部署环境, 并只用docker跑起来,并保存到私库. 2)弄清楚怎么样打包 linux镜像(或者说制作). 3)试着改一下,让它们跑在集群里面. 4) ...
- Docker实战之Consul集群
前言 最近参加了几场 Java 面试,发现大多数的微服务实践还是 Eureka 偏多,鉴于笔者的单位选型 Consul,这里对 Consul 做简单总结. 该篇是 Docker 实战系列的第三篇.传送 ...
- docker上搭建consul集群全流程
consul简介: consul是提供服务发现.简单配置管理.分区部署的服务注册发现解决方案.主要特性:服务发现\健康检查\基于Key-Value的配置\支持TLS安全通讯\支持多数据中心部署 con ...
- Docker 下部署hadoop集群
一.主机规划 3台主机:1个master.2个slaver/worker ip地址使用docker默认的分配地址: master: 主机名: hadoop2.ip地址: 172.17.0.2 slav ...
随机推荐
- linux 常用操作指令(随时更新)
ls: 查看当前目录下文件列表 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir 创建目录 -p ...
- margin:0 auto 与 text-align:center
1.text-align:通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式; text-align:center 设置文本或img标签等一些内联对象的居中. 2.m ...
- 如何在Outlook中打开后缀 .eml 的附件
引用:http://jingyan.baidu.com/article/6fb756ec82c301241858fb1e.html
- php复习第一章—1.1php 简介
php语言是构建互联网应用的后端最佳选择 跨平台 性能优越,稳定性强 语法简单,易于上手 丰富完善的技术扩展 LAMP平台成熟稳定,低成本构建 回顾 web 网页本质是一个文本文件,由浏览器解释文件内 ...
- java并发包:线程池 executorservice
1.newCachedThreadPool() -缓存型池子,先查看池中有没有以前建立的线程,如果有,就reuse.如果没有,就建一个新的线程加入池中 -缓存型池子通常用于执行一些生存期很短的异步型 ...
- 通过docker-machine和etcd部署docker swarm集群
本片文章介绍一下 使用docker-machine 搭建docker swarm 集群:docker swarm是docker 官方搭建的容器集群编排工具:容器编排,就是可以使你像使用一太机器一样来使 ...
- [Python学习笔记1]Python语言基础 数学运算符 字符串 列表
这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...
- Cookies的作用
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).Cookies就是服务器暂存放在你的电脑里的资料(.tx ...
- commitizen-规范commit-message
安装指南 安装commitizen sudo npm install -g commitizen 配置 cd到.git所在目录 commitizen init cz-conventional-chan ...
- 12、(扩展)获取省份表,填充于下拉列表框的简易js
在制作省份下拉列表时,我们常常会遇到大量省份不停复制粘贴的问题,比如百度到这样一个填充着省份信息的表格: 里面含有很多条数据和内容,这时候要一条一条复制粘贴非常繁冗,所以在同事的启发下我写了一个简易的 ...