zoukankan      html  css  js  c++  java
  • docker容器的服务发现:consul

      官网:https://www.consul.io
      官网文档:https://www.consul.io/docs
    简介
      consul是一个服务发现的组件,在docker世界中他比较流行,主要是consul不仅具有服务发现功能,还实现了DNS功能(centos默认的是dnsmaqs),监控检查以及事件处理等功能。
      consul的节点有两种角色:bootstrap,leader以及follower;bootstrap是在重启之后都向该节点报道,理论上来bootstrap和选组无关,但是总是要有一个点,在大家启动之后都去报道,作为选主候选人;leader就是选举出来的对外提供服务的设备,follower则是备选人。如client端向follower发送请求,请求将会被重定向到leader节点。

    参数说明
      解压缩之后就是一个文件consul;
      -bootstrap:自启动,一个consul集群只能有一个点是bootstrap,这代表集群启动的时候,都向那个节点进行join,大多数情况下,这个bootstrap都是leader(待验证)。不指定(没有此参数)则为非bootstrap点
      -bootstrap-expect:代表这个bootstrap下属有几个代理(agent)。这个参数可以不指定
      agent:所有的节点都是以agent方式运行;agent有两种模式,一种是server,一种是client;其实client场景应用比较少,因为client角色一般都是有应用通过调用http来模拟;所以大多数场景使用agent是作为server。
      bootstrap节点(10.1.108.108):
     ./consul agent -server -bootstrap -advertise=10.1.108.108 -data-dir=/tmp/consul -ui -client=10.1.108.108 
      非bootstrap节点(10.1.108.64)
     ./consul agent -server -advertise=10.1.108.64 -data-dir=/tmp/consul -join 10.1.108.108 -ui -client=10.1.108.108 
      注意后面添加了-ui以及client,ui代表的是启动(enable)可视化网站;client则是指定网站(ui)可访问的网卡范围,默认的是127.0.0.1即只有本地能够访问(lo网卡;如果指定了非loop地址,则可以被别的机器通过指定IP访问(即某个网卡所在的网络访问),端口号是8500(可以通过consul agent启动后,HTTP访问信息可以通过client addr信息看到。如果是指定了0.0.0.0,则代表可以被来自于任何网卡的请求访问

    其他功能
      健康检查,这个和marathon的原理是一样的,可以指定一个地址(TCP,HTTP等)定期去访问,有返回则说明健康;
      DNS功能,具备域名解析功能,默认占用53端口(dnsmasq将被弃用);
      自动上报功能(Telemetry);各个节点将会向指定的节点上报一些统计数据;
      监控(Watch),监控指定元素(可能是key,可能是服务,可能是安全检查),一旦元素发生变化,将会导致处理(handle);handler有两种,一种脚本(executable),一种是http;有几种类别,可以监控节点,Node,服务


  • 相关阅读:
    Vue移动端调用高德获取当前定位城市
    var,let,const三者的区别
    JVM学习与总结一
    五层网络模型整理
    功能强大的CFR反编译工具
    jad 反编译 jar文件、批量、单个class文件,秒懂!
    [ERROR] 2020-08-03 10:18:11 [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:350) Context initialization failed
    TortoiseSVN的bin目录下没有 svn.exe 问题;Error running 'tomcat8.0.47': Unable to open debugger port (127.0.0.1:57422): java.net.SocketException "socket closed";端口被占用问题
    显示数据时,将同列不同行的数据合并到其中一行的sql
    java.lang.IllegalArgumentException: ServletContext must not be null
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/7894535.html
Copyright © 2011-2022 走看看