0%

Consul使用笔记

Consul

what is consul ?

Consul是一种网络服务解决方案提供,提供了服务发现、配置、分段功能的全功能控制平台;其中每一个特性都可以单独使用,或者一起构建一个全方位的网络服务解决方案。

Consul的主要功能

  • 服务发现(Service Discorivy)
  • 健康检查(Health Checking)
  • Key-Value存储(KV-Store)
  • 服务间安全通信(Secure Service Communication)

基础架构

说明:其中每个数据中心(data center)需要有一组servers,servers用于存储数据

Consul集群搭建

集群规划

主机 功能
n1 Server
n2 Server
n3 Server
n4 Client

共四台主机,每台主机都是consul agent,其中n1、n2、n3为Cunsul集群Server,n4为普通client节点,官方建议Server节点数量为3-5个

安装准备

  • 为集群中每个节点(n1,n2,n3,n4)安装consul

    1
    2
    3
    4
    5
    wget https://releases.hashicorp.com/consul/1.2.3/consul_1.2.3_linux_amd64.zip
    unzip consul_1.2.3_linux_amd64.zip.zip
    # 解压后会发现只有一个 consul工具
    consul
    # 展示consul使用帮助
  • 集群中每个节点准备配置数据目录

    1
    2
    mkdir -p /etc/consul.d
    mkdir -p /tmp/consul

Consul Server配置启动

  • 登陆node1节点执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    consul agent -server -syslog \
    -ui \
    -client 0.0.0.0 \
    -bootstrap-expect=2 \
    -data-dir=/tmp/consul \
    -node=n1 \
    -bind=172.16.117.65 \
    -enable-script-checks=true \
    -config-dir=/etc/consul.d/conf \
    -pid-file=/etc/consul.d/consul.pid &

    参数说明

    server : 作为Consul集群server节点

    ui :该节点启动内置web-ui 默认地址 http://ip:8500/ui

    client : client绑定时访问的IP地址,配置维0.0.0.0,在外部浏览器才能访问到web ui

    bootstrap-expect : 期望启动后server的数量

    data-dir : 数据存储目录

    node : 节点名称,不指定时默认为主机名称

    bind : 绑定的IP地址,该参数最好指定,否则可能会使用系统IPV6地址

    enable-script-checks : 开启健康检查脚本

    config-dir : 配置存放目录

    pid-file : 启动后进程ID存放文件

  • 登陆node2节点执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    consul agent -server -syslog \
    -ui \
    -client 0.0.0.0 \
    -bootstrap-expect=2 \
    -data-dir=/tmp/consul \
    -node=n2 \
    -bind=172.16.117.64 \
    -enable-script-checks=true \
    -config-dir=/etc/consul.d/conf \
    -pid-file=/etc/consul.d/consul.pid
    -join 172.16.117.65 &

    参数说明:

    join :指定启动后加入65节点所在集群

  • 登陆node3节点node3配置与node2节点相同

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    consul agent -server -syslog \
    -ui \
    -client 0.0.0.0 \
    -bootstrap-expect=2 \
    -data-dir=/tmp/consul \
    -node=n3 \
    -bind=172.16.117.63 \
    -enable-script-checks=true \
    -config-dir=/etc/consul.d/conf \
    -pid-file=/etc/consul.d/consul.pid
    -join 172.16.117.65 &
  • 登陆node4节点

    1
    2
    3
    4
    5
    6
    7
    8
    consul agent -client -syslog \
    -data-dir=/tmp/consul \
    -config-dir=/etc/consul.d/conf \
    -node=n4 \
    -bind=172.16.117.62 \
    -client=172.16.117.62 \
    -join=172.16.117.65 \
    -pid-file=/etc/consul.d/consul.pid &

    参数说明:

    client : 指定为client节点

集群检查

登陆任意节点

1
consul members

此时会发现成功建立起一个4个节点的集群

1
2
3
4
5
Node       Address             Status  Type    Build  Protocol  DC   Segment
n1 172.16.117.65:8301 alive server 1.2.3 2 dc1 <all>
n2 172.16.117.64:8301 alive server 1.2.3 2 dc1 <all>
n3 172.16.117.63:8301 alive server 1.2.3 2 dc1 <all>
n4 172.16.117.62:8301 alive client 1.2.3 2 dc1 <default>

总结

​ 本文还是粗略进行了Consul的探索,其中为后续Spring Cloud使用Consul作为配置中心进行的调研,发现Consul有很多丰富功能,对于集群管理、安全性、跨机房调用都有支持;其中功能还有待进一步学习。