Consul

  1. 最近在学习Ocelot,发现里面集成Consul,所有部署一下多机版集群,后来发现网上都是在一台虚拟机中的Docker部署,而且大同小异,没有真正解释清楚。

    前提准备

  2. 4台Centos虚拟机,本人安装VM虚拟机,用复制镜像快速搭建环境。(需要脚本的话联系我)
  3. 第一台安装好后,把Docker安装好,设置docker开机启动,关掉防火墙,设置静态IP等。
  4. 然后用copy虚拟机,修改ip地址后,全部启动

    这些操作可自行百度

    Consul

    目前都是单数据中心,多数据中心后面更新,此篇仅供入门参考,如果有不对的地方欢迎指正

  5. Consul分client和server模式
  • client 负责注册服务,转发请求,没有持久化的功能 配置文件启动 ,会默认遍历所有/config/file 下的*.json文件
  • server 也可以注册服务,但是推荐client,能持久化数据,存放在 /config/data下

    在客户端模式下运行Consul Agent

    1. --net=host:docker内部对于虚拟机的来说也是localhost

      如果主机上的其他容器也使用--net=host,这将是一个很好的配置,它还会将代理暴露给直接在容器外部的主机上运行的进程

  1. -bind:这是给其他consul server来加入集群的ip
  2. -join:加入集群
  3. -client:使用此配置,Consul的客户端接口将绑定到网桥IP,并可供该网络上的其他容器使用,但不能在主机网络上使用。

    Consul还将接受-client=0.0.0.0绑定到所有接口的选项。

  4. -bootstrap-expect设置服务数量,当达到设定数量启动集群。-bind的这台机器成为leader
  5. -ui管理界面
  6. -h:设置node的名称,集群的服务器不能取同名的node名称
  7. CONSUL_BIND_INTERFACE:ifconfig查看,好像虚拟机的这个名称不一样,我的是ens33,还有叫eth0的。

    需要用到的命令

  8. Docker中Consul部署
  • docker inspect -f '{{.NetworkSettings.IPAddress}}' consul1查看容器内Consul1的ip
  • docker exec -t consul名称 consul members 查看集群成员
  • ifconfig 查看ip配置
  • /sbin/ifconfig ens33 | sed -n 's/.*inet \(addr:\)\?\([0-9.]\{7,15\}\) .*/\2/p'
  • docker run -d --name consul1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -bind=192.168.110.100 -ui -bootstrap-expect=3  leader 服务
  • docker run -d --name consul2 -h=node1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui  follower
  • docker run -d --name consul4 -h=node4--net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=false -client=0.0.0.0 -join=192.168.110.100 -ui client

    启动

    现有四台虚拟机,ip地址分别是:

  1. 192.168.110.100
  2. 192.168.110.101
  3. 192.168.110.102
  4. 192.168.110.103
    在第一台服务器中运行server作为leader
    docker run -d --name consul1 -h=node1 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -bind=192.168.110.100 -ui -bootstrap-expect=3
    接下来三台台加入集群
    docker run -d --name consul2 -h=node2 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui
    docker run -d --name consul3 -h=node3 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -server=true -client=0.0.0.0 -join=192.168.110.100 -ui
    docker run -d -v /consulconfig:/config/file --name consul4 -h=node4 --net=host -e CONSUL_BIND_INTERFACE=ens33 consul agent -config-dir=/config/file -server=false -client=0.0.0.0 -join=192.168.110.100 -ui

    如果需要挂载数据文件,请指定-data-dir

查看状态

  • docker exec -t consul1 consul operator raft list-peers 查看投票状态
  • docker exec -t consul名称 consul members 查看集群成员

consul部署多台Docker集群的更多相关文章

  1. 在ubuntu上部署Kubernetes管理docker集群示例, vxlan,gre

    http://www.chenshake.com/openstack-folsom-guide-for-ubuntu-12-04/ http://www.cnblogs.com/sammyliu/p/ ...

  2. Consul安装部署(Windows单机、Docker集群)

    1. Consul简介   Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发,基于 Mozilla Public Licen ...

  3. Docker(十三):OpenStack部署Docker集群

    1.介绍 本教程使用Compose.Machine.Swarm工具把WordPress部署在OpenStack上. 本节采用Consul作为Swarm的Discovery Service模块,要利用C ...

  4. 27.Docker集群部署

    对于scrapy的部署方式 1.Scrapyd 安装扩展组件,远程控制scrapy任务,包括部署源代码,启动任务,监听任务.scrapy-client .scrapyd api 协助完成部署和监听操作 ...

  5. RocketMQ(2)---Docker集群部署RocketMQ

    RocketMQ(2)-Docker集群部署RocketMQ =前言= 1.因为自己只买了一台阿里云服务器,所以RocketMQ集群都部署在单台服务器上只是端口不同,如果实际开发,可以分别部署在多台服 ...

  6. consul异地多数据中心以及集群部署方案

    consul异地多数据中心以及集群部署方案目的实现consul 异地多数据中心环境部署,使得一个数据中心的服务可以从另一个数据中心的consul获取已注册的服务地址 环境准备两台 linux服务器,外 ...

  7. 使用Docker构建持续集成与自动部署的Docker集群

    为什么使用Docker " 从我个人使用的角度讲的话  部署来的更方便 只要构建过一次环境 推送到镜像仓库 迁移起来也是分分钟的事情 虚拟化让集群的管理和控制部署都更方便 hub.docke ...

  8. Docker Compose 一键部署Nginx代理Tomcat集群

    Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...

  9. (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

    参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...

随机推荐

  1. CSS外边距合并的几种情况

    CSS外边距合并的几种情况 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 外边距在CSS1中就有 The width ...

  2. 面向对象的JavaScript-004

    1. // Below is an example of how to use Object.create() to achieve classical inheritance. This is fo ...

  3. Boost线程详解

    一.创建一个线程 创建线程 boost::thread myThread(threadFun); 需要注意的是:参数可以是函数对象或者函数指针.并且这个函数无参数,并返回void类型. 当一个thre ...

  4. ETC系统简介

    ETC:电子不停车系统 主要由两部分构成:OBU(车载单元,又叫电子标签)和RSU(路基单元,包括天线) 其中OBU里插有用户卡(一般是和银行联名发行的信用卡) 而RSU包括路基天线,PSAM卡,通过 ...

  5. 一起做RGB-D SLAM (3)

    第三讲 特征提取与配准 2016.11 更新 把原文的SIFT替换成了ORB,这样你可以在没有nonfree模块下使用本程序了. OpenCV可以使用 apt-get install libopenc ...

  6. UVa 12342 Tax Calculator (水题,纳税)

    今天在uva看到一个水题,分享一下. 题意:制定纳税的总额,有几个要求,如果第一个180000,不纳,下一个300000,纳10%,再一个400000,纳15%,再一个300000,纳20%,以后的纳 ...

  7. Java书籍经典Top10

    1)Java Language Specification, Third Edition (by James Gosling) 本书由Java技术的发明者编写,是Java TM编程语言的权威性技术指南 ...

  8. Cuckoo Hash和多级Hash的粗浅认识

    通过对Cuckoo Hash.多级Hash和BloomFilter的粗浅了解,感觉它们三者存在类似之处,算是近亲(暂且把普通的Hash称作远亲). Cuckoo Hash的思想非常简单,冲突时,重Ha ...

  9. Json字符串转对象和转List集合操作

    对象POJO和JSON互转 public class JsonUtil { /** * JSON 转 POJO */ public static <T> T getObject(Strin ...

  10. 洛谷 P2596 [ZJOI2006]书架 (splay)

    题目描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下一本.由于这些 ...