• 【Application】Consul安装及运行


    Consul是什么

      Consul 是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语音开发

      Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。

      官网:https://www.consul.io/

      中文文档:https://www.springcloud.cc/spring-cloud-consul.html

      安装教程:https://learn.hashicorp.com/consul/getting-started/install.html

      配置文档:https://www.consul.io/docs/agent/options.html

    Consul的几个概念

      

      图来自于consul官方文档

      我们只看数据中心1,可以看出consul的集群是由N个SERVER,加上M个CLIENT组成的。而不管是SERVER还是CLIENT,都是consul的一个节点,所有的服务都可以注册到这些节点上,正是通过这些节点实现服务注册信息的共享。除了这两个,还有一些小细节,一一简单介绍。

      CLIENT
      CLIENT表示consul的client模式,就是客户端模式。是consul节点的一种模式,这种模式下,所有注册到当前节点的服务会被转发到SERVER,本身是不持久化这些信息。

      SERVER
      SERVER表示consul的server模式,表明这个consul是个server,这种模式下,功能和CLIENT都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。

      SERVER-LEADER
      中间那个SERVER下面有LEADER的字眼,表明这个SERVER是它们的老大,它和其它SERVER不一样的一点是,它需要负责同步注册的信息给其它的SERVER,同时也要负责各个节点的健康监测。
      其它信息其它信息包括它们之间的通信方式,还有一些协议信息,算法。它们是用于保证节点之间的数据同步,实时性要求等等一系列集群问题的解决。这些有兴趣的自己看看官方文档(https://www.consul.io/docs/internals/index.html)。

    安装Consul

      环境:CentOS 7.4

      1、下载二进制包

        命令:wget https://releases.hashicorp.com/consul/1.7.2/consul_1.7.2_linux_amd64.zip

      2、解压得到一个可执行文件

        命令:unzip consul_1.7.2_linux_amd64.zip -d /data/soft/consul_1.7.2

      3、配置环境变量,编辑/etc/profile 文件,内容如下:

        编辑命令:vim /etc/profile 

    1 export CONSUL_HOME=/data/soft/consul_1.7.2
    2 export PATH=$CONSUL_HOME:$PATH

        使用环境变量配置生效

        命令:source /etc/profile 

      4、验证 Consul 安装是否成功

        命令:consul -v

        

    运行Agent 

      安装Consul后必须运行Agent,可以选择服务器或客户端模式。每个数据中心至少有一个服务器(推荐3~5个服务器集群)。

      简单起见,先启动一个Agent的开发模式:

      前台启动命令:consul agent -dev

      后台启动命令:nohup consul agent -dev  > /dev/null 2>&1 &

     1 # Agent的开发模式
     2 [root@H__D consul_1.7.2]# consul agent -dev
     3 ==> Starting Consul agent...
     4 
     5 # 查看集群成员
     6 [root@H__D consul_1.7.2]# consul members
     7 Node  Address         Status  Type    Build  Protocol  DC   Segment
     8 H__D  127.0.0.1:8301  alive   server  1.7.2  2         dc1  <all>
     9 
    10 # 使用 HTTP API 查看
    11 [root@H__D consul_1.7.2]# curl localhost:8500/v1/catalog/nodes
    12 [
    13     {
    14         "ID": "864e18ee-1311-7990-a0b0-16d0567dfb19",
    15         "Node": "H__D",
    16         "Address": "127.0.0.1",
    17         "Datacenter": "dc1",
    18         "TaggedAddresses": {
    19             "lan": "127.0.0.1",
    20             "lan_ipv4": "127.0.0.1",
    21             "wan": "127.0.0.1",
    22             "wan_ipv4": "127.0.0.1"
    23         },
    24         "Meta": {
    25             "consul-network-segment": ""
    26         },
    27         "CreateIndex": 10,
    28         "ModifyIndex": 11
    29     }
    30 ]

       打开浏览器使用地址:http://127.0.0.1:8500,访问

        

    Agent常用的参数

    参数名称用途
    -server 此标志用于控制代理是运行于服务器/客户端模式,每个 Consul 集群至少有一个服务器,正常情况下不超过5个,使用此标记的服务器参与 Raft一致性算法、选举等事务性工作
    -client 表示 Consul 绑定客户端接口的IP地址,默认值为:127.0.0.1,当你有多块网卡的时候,最好指定IP地址,不要使用默认值
    -bootstrap-expect 预期的服务器集群的数量,整数,如 -bootstrap-expect=3,表示集群服务器数量为3台,设置该参数后,Consul将等待指定数量的服务器全部加入集群可用后,才开始引导集群正式开始工作,此参数必须与 -server 一起使用
    -data-dir 存储数据的目录,该目录在 Consul 程序重启后数据不会丢失,指定此目录时,应确保运行 Consul 程序的用户对该目录具有读写权限
    -node 当前服务器在集群中的名称,该值在整个 Consul 集群中必须唯一,默认值为当前主机名称
    -bind Consul 在当前服务器侦听的地址,如果您有多块网卡,请务必指定一个IP地址(IPv4/IPv6),默认值为:0.0.0.0,也可用使用[::]
    -datacenter 代理服务器运行的数据中心的名称,同一个数据中心中的 Consul 节点必须位于同一个 LAN 网络上
    -ui 启用当前服务器内部的 WebUI 服务器和控制台界面
    -join 该参数指定当前服务器启动时,加入另外一个代理服务器的地址,在默认情况下,如果不指定该参数,则当前代理服务器不会加入任何节点。可以多次指定该参数,以加入多个代理服务器,
    -retry-join 用途和 -join 一致,当第一次加入失败后进行重试,每次加入失败后等待时间为 30秒
    -syslog 指定此标志意味着将记录 syslog,该参数在 Windows 平台不支持
  • 相关阅读:
    模拟ORA-26040: Data block was loaded using the NOLOGGING option
    poj 2752 Seek the Name, Seek the Fame (KMP纯模版)
    一入python深似海--变量和对象
    Codeforces 448 C. Painting Fence
    Unix网络编程 高级IO套接字设置超时
    [ JavaScript ] JavaScript 实现继承.
    讲座:与迷茫为友的成长
    分享:进化版动漫更新提醒(微信及软件)
    设计模式------模板方法模式
    BasePath问题-nginx负载均衡配置
  • 原文地址:https://www.cnblogs.com/h--d/p/12643939.html
Copyright © 2020-2023  润新知