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. HEIDSOFT

    HEIDSOFT ENTHUSIASTIC GITHUB USER heidsoft@sina.com GitHub Profile I'm a developer based in China.sh ...

  2. dll详解

    [转]http://www.cnblogs.com/xuemaxiongfeng/articles/2461632.html 不解为什么要用WINAPI宏定义,查了后发现下面的定义.于是乎需要区别 _ ...

  3. Web测试实践--Rec 4

    累计完成任务情况: 阶段内容 参与人 整理小组工作记录,维护小组博客 小尹 分析产品并撰写文档相关板块 小靳 撰写文档中对被测系统进行功能性分析相关板块 小龙.小黄 撰写文档中用户调研相关板块 小熊 ...

  4. python 数据合并

    1. 数据合并 前言 一.横向合并 1. 基本合并语句 2. 键值名不一样的合并 3. “两个数据列名字重复了”的合并 二.纵向堆叠 统计师的Python日记[第6天:数据合并] 前言 根据我的Pyt ...

  5. 手机优秀app

    Mantano 阅读器 Aldiko   阅读器 掌阅阅读器 奇特阅读器 Gitden reader 网易蜗牛阅读

  6. (1)WePHP 开启WePHP

    新建入口文件index.php,定义新项目的目录地址APP_PATH,引入WePHP项目入口文件 <?php define('APP_PATH','./index/'); require_onc ...

  7. js流程图:aworkflow.js

    auto-workflow 用于快速构建各种关系图的库 github地址:https://github.com/auto-workflow/AWorkflow 快速开始 npm install awo ...

  8. 大型Unity手游《英雄之刃-最后之战》源码分析

    英雄之刃之最后一战是国内首款原创精品MOBA手游,是一款由前暴雪文案亲自操刀世界观,日韩专业团队打造美术场景,新加坡团队精心制作战斗音乐的旷世之作! 超快速的匹配对战.默契的团队协作给你带来意犹未尽的 ...

  9. (转)DataTable与结构不同实体类之间的转换

    原文地址:http://www.cnblogs.com/kinger906/p/3428855.html 在实际开发过程中,或者是第三方公司提供的数据表结构,与我们系统中的实体类字段不对应,遇到这样我 ...

  10. ERROR: from PIL import Image ImportError: No module named PIL

    ERROR: from PIL import Image ImportError: No module named PIL 到 http://www.pythonware.com/products/p ...