consul & registrator & consul-template 使用

参考这里的文章:

https://www.jianshu.com/p/a4c04a3eeb57

docker-compose.yml

version: '3'

services:
web:
image: liberalman/helloworld:latest
environment:
SERVICE_80_NAME: my-web-server
SERVICE_TAGS: backend-1
MY_HOST: host-1
ports:
- "80" lb:
image: liberalman/nginx-consul-template:latest
hostname: lb
links:
- consulserver:consul
ports:
- "80:80" consulserver:
image: progrium/consul:latest
environment:
SERVICE_TAGS: consul servers
hostname: consulserver
ports:
- "8300"
- "8400"
- "8500:8500"
- "53"
command: -server -ui-dir /ui -data-dir /tmp/consul -bootstrap-expect 1 registrator:
image: gliderlabs/registrator:master
hostname: registrator
links:
- consulserver:consul
volumes:
- "/var/run/docker.sock:/tmp/docker.sock"
command: -internal consul://consul:8500

docker-compose up

docker-compose up --scale web=3

停掉其中一个container ,看看发生什么事情导致能够检测到节点挂掉,并不转发流量?

关键处:订阅了状态的结果后,动态改变了nginx的配置。效果:

单机的架构、原理如下:



or 参考:

consul 只是其中一种注册中心的实现,registrator support zk&consule/etcd/skydns2

registrator 主动检查

https://github.com/gliderlabs/registrator/blob/master/registrator.go

根据tick 的到来,registrator.go 做几件事情:

  • resync interval 到达,扫描, 同步容器状态 refresh :

    • alive 的container,
    • delete 到consul
  • refresh interval 到达,sync :
    • list 当前的container
    • 移除不健康的container
    • deregister 不健康的container

看到这里,这种基于registrator的主动检测,解耦服务于注册中心的代码

ref

分布式的配置

每个宿主机都要配置 registrator ,因为只能同一台宿主机去扫描container 的状态,注意红框处:

集群的架构

consul vs zk , etcd

https://www.consul.io/intro/vs/zookeeper.html

vs traditional: nginx + lua + jenkins

传统的发布模式:

  • 服务需要配置健康检查
  • 添加新的服务节点要运维人为操作下到nginx 分发
  • lua 要配置好蓝绿发布状态的控制
  • 如果传统的配置中心:
    • 服务要配置注册中心 register deregister,耦合

而现在,只需要简单的配置增加服务节点,就好了

websocket/https

ref :

https://www.jianshu.com/p/a4c04a3eeb57

https://segmentfault.com/a/1190000005026022

https://segmentfault.com/a/1190000013720661

https://segmentfault.com/a/1190000005040914

https://learn.hashicorp.com/consul/getting-started/checks.html

https://www.consul.io/docs/agent/checks.html

https://my.oschina.net/guol/blog/353101

https://www.jianshu.com/p/f8746b81d65d

https://medium.com/eleven-labs/consul-service-discovery-and-failure-detection-64b06a5cbce6

https://www.cnblogs.com/zhangdk/p/Registrator_reference.html

https://kevinguo.me/2017/09/01/docker-consul-consul-template-registrator-nginx/#nginx-with-consul-template

https://juejin.im/post/5b59d64b6fb9a04fd1602017

consul & registrator & consul-template 使用的更多相关文章

  1. Docker+Consul+Registrator 实现服务注册与发现

    Docker+Consul+Registrator实现服务注册与发现 逻辑图 实现nginx节点自动化加入容器IP代理 1.三台Consul agent server作为高可用通过Consul Tem ...

  2. 【Consul】CONSUL调研

    [Consul]CONSUL调研 2016年08月18日 18:31:53 YoungerChina 阅读数:1962更多 所属专栏: Consul修炼   版权声明:原创不易,转载请注明出处! ht ...

  3. 1、微服务--为什么有consul,consul注册,心跳检测,服务发现

    一.为什么有consul? 在微服务,每1个服务都是集群式的,订单服务在10台服务器上都有,那么用户的请求到达,获取哪台服务器的订单服务呢?如果10台中的有的订单服务挂了怎么办?10台服务器扛不住了, ...

  4. Centos 7 Docker、docker-compose、Registrator、Consul、Consul Template和Nginx实现高可扩展的Web框架

    安装所需软件 Docker Docker-compose 配置docker-compose.yml文件内容如下: #load balancer will automatically update th ...

  5. .net core微服务之基于Docker+Consul+Registrator服务注册服务发现

    一.Docker部分: 先拉最新的asp.net core的镜像: docker pull microsoft/aspnetcore 将下载下来的镜像重命名,为什么要重命名?等会讲Registrato ...

  6. Ocelot + Consul + Registrator 基于Docker 实现服务发现、服务自动注册

    目录 1. Consul集群搭建 1.1 F&Q Consul官方推荐的host网络模式运行 2. Registrator服务注册工具 2.1 F&Q Registrator悬挂服务 ...

  7. 微服务注册发现集群搭建—单机版(Registrator+Consul+Consul-template+nginx)

    1.创建模板文件 docker-compose.yml #backend web application, scale this with docker-compose scale web=3 web ...

  8. 【Consul】Consul实践指导-配置文件

    Agent有各种各样的配置选项,这些配置选项可以通过命令行参数的方式设定,也可用通过配置文件的方式设定--所有的配置选项都是可选的,当然也是有默认值的. 当加载配置选项时,consul是按照词典顺序从 ...

  9. 【Consul】Consul架构-Session会话

    Consul提供session会话机制--可以用于构建分布式锁,session可以绑定到节点.健康检查.KV数据.目的是提供颗粒锁--受 The Chubby LockService for Loos ...

随机推荐

  1. Double H

    ##Double H Team 1.队员 王熙航211606379(队长) 李冠锐211606364 曾磊鑫211606350 戴俊涵211606359 聂寒冰211606324 杨艺勇2116063 ...

  2. 记一次msyql导入导致的问题

    公司有个项目要导入150M大小的sql文件,但是导入时报错,去网上找答案,很多人说是因为保留字什么什么的,所以就按照sql文件里面的mysql版本又去下载了一份mysql5.6安装好,但是登陆不了,又 ...

  3. 构建--> 部署-->

    这一篇中我们会写一些关于自动化部署的代码.我们会使用 Powershell 书写这类代码. 你将发现这篇文章中涉及的东西非常具体,有的要求甚至相当苛刻且可能不具有通用性.这是因为部署从来都是跟环境打交 ...

  4. python模块和包(模块、包、发布模块)

    模块和包 目标 模块 包 发布模块 01. 模块 1.1 模块的概念 模块是 Python 程序架构的一个核心概念 每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块 模块名 同样也 ...

  5. ForkJoinPool 源码

    ForkJoinPool----FJP先看task.fork方法,含义是将当前任务,放到当前线程的工作队列中.但是第一次执行这个方法是在主线程中,主线程是不可能被FJP管理的.那么就进入ForkJoi ...

  6. Unity3D AssetBundle的打包与加载

    在Unity项目开发过程中,当要做热更新时常常使用一个叫做AssetBundle的东西,这里做一点个人的学习记录 步骤1: 设置打包标签:具体步骤----进入Unity,选择某一资源然后看右下角,在那 ...

  7. Beta冲刺 5

    前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10129059.html 作业博客:https://edu.cnblogs.com/campus ...

  8. 前端学习roadmap

  9. linux在tomcat中指定jdk

    setclasspath.sh和catalina.sh中写入 export JAVA_HOME=/qbtapp/jdk-8u111-linux-i586/jdk1.8.0_111export JRE_ ...

  10. bilibili答题器

    2017-06-12,靠着这个测试版我得以95分的成绩L0级晋级会员L2级(PS 测试两次分别获得 攻略组和 学霸组) 计划完善目标: 界面UI更新布局,现在这个布局真是** 答案和问题分开,增加语音 ...