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. Python3 open函数

    Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError. 注意:使用 open() 方法一定要保证关闭 ...

  2. springboot+mybatis+thymeleaf项目搭建及前后端交互

    前言 spring boot简化了spring的开发, 开发人员在开发过程中省去了大量的配置, 方便开发人员后期维护. 使用spring boot可以快速的开发出restful风格微服务架构. 本文将 ...

  3. 如何用css实现一个三角形?

    昨天被人问到说如何用css实现一个三角形?em....  当时被问到了,汗颜,今天找了一些帖子看了一下,也算是记录一下吧 代码如下: 实现效果:

  4. Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 阅读笔记

    Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (使用循环一致的对抗网络的非配对图像-图 ...

  5. QT_REQUIER_CONFIG

    在qglobal.h中,定义了很多宏.下面这个QT_REQUIER_CONFIG,展开成: #define QT_REQUIRE_CONFIG(feature) Q_STATIC_ASSERT_X(Q ...

  6. ATL与COM之间的关系、ATL的特点与基本使用方法

    http://blog.csdn.net/titilima/archive/2004/07/18/44273.aspx ATL,Active Template Library活动模板库 是一种微软程序 ...

  7. ln语法

    Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个文件可以有多个 ...

  8. js实现全选反选(开关门)

    话不多说直接看图吧

  9. 学习将码云账号和git连接,并且创建一个项目

    一顿操作猛如虎,哈哈 参考网址:https://git-scm.com/book/zh/v1/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E7 ...

  10. Laravel Scout 开启队列, 自定义queue name和queue connection

    scout.php的默认配置: 'queue' => env('SCOUT_QUEUE', false), 修改为: 'queue' => [ 'queue' => env('SCO ...