Consul实践之Consul常见应用场景及方案梳理(FAQ)

Consul实践之Consul常见应用场景及方案梳理(FAQ),这篇文章用来回答一些在文章《Consul实践之相关计划与相关问题》中提到的一些问题。本方案整理参考依据于《使用Consul和Registrator实现Docker容器服务发现》英文原文《SERVICE DISCOVERY FOR DOCKER CONTAINERS USING CONSUL AND REGISTRATOR》,方案的实施依据可以根据原文进行。

  1. 手动新增的服务节点是否可以自动发现?

    将consul以容器的方式部署到三个独立的主机上。Consul的DNS地址绑定到docker引擎的docker bridge地址,其他的地址如通告地址(the advertise address)、客户端访问地址等使用主机的私有地址(private address),每一个docker引擎上都部署一个registrator容器(其docker hub地址是https://hub.docker.com/r/gliderlabs/registrator/,有的资料上可能会用https://hub.docker.com/r/progrium/registrator/,两者是一样的),该容器内运行一个守护程序,该守护程序的功能是从docker socket监听docker事件,将凡是提供服务端口的docker容器都自动注册到consul中。这样一来就能解决手动新增服务节点被consul自动发现的问题。要想解决consul集群故障切换问题,首先要解决consul的集群地址问题,初步想法是将docker bridge地址设置成集群地址,因为每一个docker引擎必有一个docker bridge,将这几个docker bridge网卡的IP地址设置成一样的地址,如192.168.0.1,这样当三个节点中的任意一个consul服务节点挂掉后,另外两个consul服务节点会自动选举出一个可用的leader,由于集群地址是不变的,因此其他的Consul节点可以继续提供为registrator以及后续其他服务提供consul服务。 考虑到registrator可以不使用的consul集群地址,而使用每一个consul服务节点的私有地址,假设主机发生宕机,则运行有registrator的容器和其他提供服务的容器都会宕机,而其他两外两个节点上的容器可以照旧工作,因此集群地址对于registrator来说并不是必须的。      
    有一种情况应该考虑,假如负载由nginx分发,则如果采用consul-template根据consul集群中的服务信息变更,consul-template使用的consul地址必须是可用的。

  2. 当某一服务节点down掉后,是否可以自动去除?

    凡是自动注册到consul中的任意服务节点down掉后,可以自动从consul中移除。

  3. 各个节点的运行情况监控,如果某个节点压力过大时是否运维人员如何得知?

    consul自带持久化数据库以及健康监测机制,数据库中存储了每一个服务节点的状态信息(默认的状态信息是该容器端口是否可用(可正常连接))。这些状态信息都可以通过consul提供的UI(可以理解成一种http web服务)监测到。运维人员也可以通过将每一个容器安装consul agent的形式结合consul配置文件获取更多的状态信息,从consul提供的UI界面上查看。当然也可以借助其他监控方案获取容器内的服务状态信息,如借助zabbix或者针对docker的其他监控方案,因为consul提供的UI界面只能反映三种服务状态,通过、警告和严重级别,而且不能提供报警配置。

  4. 是否支持多个节点共享同一套配置?

    consul存在的目的就是为了让多个节点共享一套配置,节点之间共享配置是通过consul提供的HTTP API 实现的,开发人员可以通过curl工具以及相关库根据consul提供的服务信息决定使用什么样的配置。如如果开发人员需要知道自己有什么数据库可以使用,则可以查询curl http://cluster.service.consul:8500/v1/catalog/services(cluster.service.consul域名是假设的consul集群地址对应的域名,初步的想法是将consul自身作为一种服务,通过DNS可以查询到)获得consul中注册过的数据库信息。

  5. 当节点压力过大时,是否可以自动的扩展节点?

    根据目前已掌握的资料,暂时不支持此功能。

  6. Consul本身集群,如某一Consul节点故障了,其它的Consul节点是否可以正常提供服务?

    consul集群自身具备容错功能,当部署3个节点时,其容错是1,也就是允许1个consul节点宕机,具体的可以参见Consul实践之Consul结合nginx构建高可用可扩展的Web服务中列举的表格(即 Deployment Table),或者直接参考Consul官方推荐部署方式BOOTSTRAPPING A DATACENTER 以及 Deployment Table

  7. 目前需要解决和评定的问题有:

      1. 集群地址的绑定问题,是否需要绑定集群地址以及如何确定集群地址?参考第1条中的“有一种情况应该考虑,假如负载由nginx分发,则如果采用consul-template根据consul集群中的服务信息变更,consul-template使用的consul地址必须是可用的。”
      2. consul以及其他服务节点的监控问题,如何组合监控以及采用什么样的方案?
  8. 其他问题将继续补充。

  9. 以上方案整理参考依据于《使用Consul和Registrator实现Docker容器服务发现》英文原文《SERVICE DISCOVERY FOR DOCKER CONTAINERS USING CONSUL AND REGISTRATOR

tag:Consul常见问题,Consul方案,Consul集群地址,Consul监控,Consul自动注册

--end--

时间: 2024-10-13 20:57:03

Consul实践之Consul常见应用场景及方案梳理(FAQ)的相关文章

Consul实践之Consul是什么

上篇文章<Consul实践之相关计划与相关问题>给Consul的相关事情开了个头,这篇文章首先回答Consul是什么的问题.文中难免有一些关于Consul以及其他的某些知识需要提前了解,文中还可能有些比较难以理解的词汇或者说法,还请批评指正&留言询问. A. Consul是什么? Consul是一个两年前由hashicorp组织发起的开源项目,因此至今有两年以上的历史.Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色.轻量级的特点.Consul有

Consul实践之相关计划与相关问题

Consul是一个两年前由hashicorp组织发起的开源项目,因此至今有两年以上的历史.Consul可用于服务发现(Service Discovery),关于服务发现的概念可以参考维基百科.目前Consul在国内公开使用的案例还不多见. 下面是针对consul的计划罗列的相关问题和计划提纲 A. 调研阶段 明确当前的需求.我们为何要使用consul?我们要用consul以及与consul相关的软件(服务.方法)解决一个怎样的问题?还有其他解决方案么? consul是什么?它能解决什么问题?它适

【Consul】Consul实践指导-Encryption配置

Consul Agent支持对其所有的网络数据流进行加密.加密方法后续介绍.有两个独立的加密系统:Gossip Traffic和RPC. 1.1.1 Gossip Encryption 启用Gossip加密方式,只需要在启动Agent时设置加密密钥.通过encrypt参数设置密钥:设置的值是包含密钥的配置文件. Key值必须是16字节,基于base64编码.为方便起见,Consul提供consul keygen命令来生成满足要求的加密密钥: $ consul keygen cg8StVXbQJ0

Redis 的 5 个常见使用场景

Redis 的 5 个常见使用场景 提交 我的评论 加载中 已评论 Redis 的 5 个常见使用场景 2015-07-23 数据库开发 数据库开发 数据库开发 微信号 DBDevs 功能介绍 分享数据库相关技术文章.教程和工具,另外还包括数据库相关的工作.偶尔也谈谈程序员人生 :) (点击上方蓝字,快速关注我们) 英文:Joe Engel 译者:伯乐在线-刘晓鹏 网址:http://blog.jobbole.com/88383/ 点击"阅读原文"可查看本文网页版 在这篇文章中,我们将

以《淘宝网》为例,描绘质量属性的六个常见属性场景

以<淘宝网>为例,描绘质量属性的六个常见属性场景. 1.可用性 可用性与系统故障及其后果相关.当系统不再提供其规范中所说的服务时,就出现了系统故障.系统用户可以观察到此类故障. 可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况下能够恢复正常运行的速度来衡量的 刺激源 用户 刺激 很多用户同时访问,系统出现崩溃 制品 系统 环境 正常操作 响应 系统检测到事件:记录故障,通知系统 响应度量 两分钟后,系统可以继续正常使用 2.可修改性 两个关注点:可以修改什么?何时

Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结

Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结 1. 本文范围 1 2. Angular的优点 1 2.1. 双向数据绑定 1 2.2. dsl化 2 2.3. 依赖注入 2 2.4. 指令 2 3. 手动绑定数据spa方式以及与ajax 与dwr的集成 2 4. 格式化数据 2 4.1. 多字段组合格式化 3 4.2. 输出html 4 5. 输出作为函数参数调用 4 6. 加载完成事件 5 7. 常见错误 5 7.1. Atitit.a

属性常见属性场景

淘宝网质量属性常见属性场景 一.      可用性 可用性与系统故障及相关后果有关,当系统不在提供其规范中所说明的服务,就出现了系统故障.系统的用户可以观察到此类故障. 刺激源 系统外部 刺激 未曾预料的消息 制品 进程 环境 正常操作 响应 系统检测事件,通知用户 响应度量 继续正常使用 如用户进行注册登录时发生错误时,进行反馈. 二.      可修改性 1.        可以修改什么(制品)2.何时进行变更以及由谁进行变更(环境) 刺激源 系统开发人员 刺激 增加功能以及对于网站的界面更

数据库常见的场景

作为一个开发人员,起初的开发场景可能涉及的比较专业的业务开发,但是我们也得了解一下数据库的一些常见的大数据处理的场景,普及一下计算机知识,以后会遇到类似场景,自己也可以实现这些东西. 主存同步:MS 场景:把A数据库的数据同步到B数据库 作用:备份,高可用,负载均衡 原理:binlog实时回复 双向同步:MM 与主存同步类似,仅仅是双工同步. 读写分离: 场景: 1.业务操作(生成数据或者修改删除数据在一个数据上进行) 2.查询操作(在另一个数据库上进行) 要点: 两个数据库之间的数据要一致,也

质量属性的六个常见属性场景

题目:以<淘宝网>为例,描绘质量属性的六个常见属性场景. 一.可用性 双十一光棍节购物,页面刷不出来 刺激源 用户 刺激 大量用户同一时间访问淘宝网,系统出现崩溃 制品 系统 环境 正常操作 响应 系统出现提醒:网络不好,请稍后再试 响应度量 三分钟后,系统可以继续正常使用,页面正常浏览 二.可修改性 淘宝网主页会根据用户平常的浏览改变主页 刺激源 开发人员 刺激 修改用户界面 制品 系统用户界面 环境 设计时 响应 进行修改且不会影响其他功能 响应度量 99.9%的修改都不影响其他功能 三.