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 集群的更多相关文章

  1. 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群

    庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介      前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...

  2. 【解决】docker 容器中 consul集群问题处理

    现象描述:   node1 和node2 日志反复出现 add remove node3节点. node3 节点 一直 驳回 node1 和node2 认为node3已经dead的消息  不断重启se ...

  3. Docker部署Consul集群

    服务介绍 Consul是一种分布式.高可用.支持水平扩展的服务注册与发现工具.包含的特性有:服务发现.健康检查.键值存储.多数据中心和服务管理页面等. 官方架构设计图: 图中包含两个Consul数据中 ...

  4. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

  5. Docker安装部署es集群

    Docker安装部署es集群:环境准备:已安装docker的centos服务器一台1. 拉取es版本docker pull elasticsearch:5.6.82. 新建文件夹 数据挂载目录 和 配 ...

  6. docker 快速部署ES集群 spark集群

    1) 拉下来 ES集群  spark集群 两套快速部署环境, 并只用docker跑起来,并保存到私库. 2)弄清楚怎么样打包 linux镜像(或者说制作). 3)试着改一下,让它们跑在集群里面. 4) ...

  7. Docker实战之Consul集群

    前言 最近参加了几场 Java 面试,发现大多数的微服务实践还是 Eureka 偏多,鉴于笔者的单位选型 Consul,这里对 Consul 做简单总结. 该篇是 Docker 实战系列的第三篇.传送 ...

  8. docker上搭建consul集群全流程

    consul简介: consul是提供服务发现.简单配置管理.分区部署的服务注册发现解决方案.主要特性:服务发现\健康检查\基于Key-Value的配置\支持TLS安全通讯\支持多数据中心部署 con ...

  9. Docker 下部署hadoop集群

    一.主机规划 3台主机:1个master.2个slaver/worker ip地址使用docker默认的分配地址: master: 主机名: hadoop2.ip地址: 172.17.0.2 slav ...

随机推荐

  1. C语言程序设计第11次作业

    一.本次课主要内容: 本章主要介绍指针相关的基础知识,本节课的主要如下 (1)通过示例"密码开锁"引入指针的概念和主要知识点,分析了密码开锁的过程来说明变量.内存单元和地址之间的关 ...

  2. C语言程序设计第五次作业

    一.实验内容     1.输入两个正整数m和n(要求m<=n), 求m!+(m+1)!+(m+2)!-+n!    2.输出1000以内的所有完数.所谓完数是指这个数恰好等于除他本身外的所有因子 ...

  3. mysqlnd cannot connect 连接错误处理方法

    mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administra ...

  4. UE4 WCF RestFul 服务器 读取JSON 数据并解析 简单实例

    Note:不知道为什么通过Txt读取的JsonString,如果TXT 不是ANSI编码的话,会报JsonArrayStringToUStruct  Unable to parse. bool UWg ...

  5. HDU 4059 容斥初步练习

    #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...

  6. C++深拷贝与浅拷贝

    当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用.也就是说,当类的对象需要拷贝时,拷贝构造函数将会被调用.以下情况都会调用拷贝构造函数: (1)一个对 ...

  7. 整数中1出现的次数(从1到n整数中1出现的次数)

    题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.AC ...

  8. 继续向peersim的event-driven模式开火!(新手勿喷)

    昨天学习了peersim的cycle模式,今天开始继续悟事件模式. 总的来说,我个人认为事件模式是周期模式的升级版,或者说,周期模式只是事件模式的一个子功能. 事件模式是基于时间和事件的(没打错),每 ...

  9. PSP(16/03/14-16/03/15)

    //整理了自己过去的时间记录文件,最早用电子版记录是15/04/21,依旧断断续续记录到15/11/21,每月至少三次记录,然而自己并没有对数据进行整理,只是纯粹记录,真是浪费了花在上面的时间.期间八 ...

  10. [GodLove]Wine93 Tarining Round #4

    比赛链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=44903#overview 题目来源: 2011 Asia ChengDu R ...