consul 配置---K/V存储及ACL

consul 配置—K/V存储及ACL

标签(空格分隔): consul


  • Consul简介
  • 安装及运行
  • K/V存储
  • Java案例(基于Spring boot)
  • ACL配置
  • 小结

1.Consul简介

1.1 consul的作用
  • 服务发现
    • Consul clients提供服务(例如API)
    • 其他的client发现服务的提供者(通过DNS或http,应用可以轻松的发现他们所依赖的服务)
  • 健康检查
  • Key-Value存储操作
    • 动态配置
    • leader选举
    • feature flagging
    • coordination
  • 多数据中心(DC)
    • 用于容灾
1.2 consul的基本架构
  • 一个consul节点对应一个consul agent
    • agent会负责节点的健康检查和节点上的服务的健康检查
  • agent分为server和client
    • server
      • 存储数据
      • 复制数据
      • servers们自己选择一个leader
      • 每个数据中心推荐有3或5个server(官方推荐,但是只用单节点做server也是可以的,只是可能会数据丢失,两个节点的话,一个挂了,还是无法选举出leader,所以推荐3-5个)
    • client
      • 个人感觉client只是作为一个与server交互的agent而已

2.安装及运行

安装
启动
  • 以server模式启动

    • consul agent -server -bootstrap-expect 3 -data-dir /tmp/consul -node=service-center -bind=127.0.0.1 -client 0.0.0.0 -ui -config-dir ~/.consul_config/
  • 以client模式启动节点(非server都是client)

    • consul agent -data-dir /tmp/consul -node=qianweifeng-mac -bind=192.168.15.16 -join 192.168.15.19
  • 集群模式

    • consul的集群搭建相对容易,一般需要用3-5个server节点来搭建一个集群,启动方式就想上面说的server启动方式一致,就是在加上 -join ip地址 即可。至于3-5个节点,之前也说过,官方推荐,确实根据consul的leader推举机制来说,最少需要3个节点。
    • 举个小例子:
      现有节点A,B ,我们需要组建集群,那么自然是start A, start B, A join B (反过来也一样),如此,A,B就相互认识了。
      此时有一个节点C要加入集群,我们不需要 C join A, C join B, 只需要选择A,B中的一个进行join就可以了。
      其中的原理是给予gossip协议完成的
关键指令介绍

agent 相当于是一个客户端,我觉得consul是没有意义明确的客户端与服务端的,只是节点启动的模式不同,而不是由运行于该节点之上的程序所决定的,所以agent相当于是一个客户端代理,通过它我们可以与consul集群进行交流。

-server 以server模式启动节点,相对的还要-client, 不过如果不指定-server,默认就是-client

-bootstrap-expect 3 这个东西是告诉consul集群,我们预计有3个server节点,该参数是为了延迟日志复制的启动直到我们指定数量的server节点成功的加入后启动。

-data-dir 指定agent储存状态的数据目录,比较重要

-config-dir 指定一个要装载的配置文件,可以是一个文件,也可以是一个目录下的所有文件,文件以.json后缀

-node 该节点在集群中的名称,具有唯一性,推荐直接用机器ip,便于区分辨别

-bind 说明该agent绑定的地址,通常情况是绑定本机

-join 加入集群

-rejoin 效果同上不过是在退出集群后再加入进去用的

特别注意:
-client 0.0.0.0 -ui 这个东西是为了能远程访问WEB UI界面,高版本的consul在远程访问WEB UI界面上似乎有些问题,也可能是我哪里没有配置好,所以访问不了。
使用这个指令后就可以远程访问了(目测这个指令的意思是,允许任何IP的客户端来访问WEB UI)

3.K/V存储

关于K/V的作用在上一节已经说明了,这里来讲讲其具体应用。
k/v

kv-ex

这个东西的话用来做动态配置比较多,比如我们有一些数据库配置,如果配置在本地,那么每次启动服务时还需要注意这些配置启动的正不正确,上传到测试环境时,也需要修改这些配置。但是如果我们用了K/V,我们要做的只是从不同的K/V拉去配置,而不需要修改代码。更重要的是,有一些非启动阶段读取的配置(也就是用到在读取的配置),可以做到动态更改,而不需要重启程序。


4.Java案例(基于Spring boot)

这里就动态配置,给出一个基于Spring Boot的具体案例

1.maven依赖
<!--consul-->
        <dependency>
            <groupId>com.orbitz.consul</groupId>
            <artifactId>consul-client</artifactId>
            <version>0.10.0</version>
        </dependency>
        <!-- consul需要的包 -->
        <dependency>
            <groupId
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值