安装Consul集群

TIPS •本文基于Consul 1.5.3,理论适用于Consul 1.6及更低版本。•安装单机版Consul详见:《安装单机版Consul》

知识预热

Consul常用命令

命令

解释

示例

agent

运行一个consul agent

consul agent -dev

join

将agent加入到consul集群

consul join IP

members

列出consul cluster集群中的members

consul members

leave

将节点移除所在集群

consul leave

参考文档

这里只列出几个常用的命令,consul有将近20个命令,本文不作展开,详见:https://www.consul.io/docs/commands/index.html[1]

consul agent 命令详解

常用选项

consul agent 命令的常用选项如下:

•-data-dir

•作用:指定agent储存状态的数据目录•这是所有agent都必须的•对于server尤其重要,因为他们必须持久化集群的状态

•-config-dir

•作用:指定service的配置文件和检查定义所在的位置•通常会指定为"某一个路径/consul.d"(通常情况下,.d表示一系列配置文件存放的目录)

•-config-file

•作用:指定一个要装载的配置文件•该选项可以配置多次,进而配置多个配置文件(后边的会合并前边的,相同的值覆盖)

•-dev

•作用:创建一个开发环境下的server节点•该参数配置下,不会有任何持久化操作,即不会有任何数据写入到磁盘•这种模式不能用于生产环境(因为第二条)

•-bootstrap-expect

•作用:该命令通知consul server我们现在准备加入的server节点个数,该参数是为了延迟日志复制的启动直到我们指定数量的server节点成功的加入后启动。

•-node

•作用:指定节点在集群中的名称•该名称在集群中必须是唯一的(默认采用机器的host)•推荐:直接采用机器的IP

•-bind

•作用:指明节点的IP地址•有时候不指定绑定IP,会报Failed to get advertise address: Multiple private IPs found. Please configure one.的异常

•-server

•作用:指定节点为server•每个数据中心(DC)的server数推荐至少为1,至多为5•所有的server都采用raft一致性算法来确保事务的一致性和线性化,事务修改了集群的状态,且集群的状态保存在每一台server上保证可用性•server也是与其他DC交互的门面(gateway)

•-client

•作用:指定节点为client,指定客户端接口的绑定地址,包括:HTTP、DNS、RPC•默认是127.0.0.1,只允许回环接口访问•若不指定为-server,其实就是-client

•-join

•作用:将节点加入到集群

•-datacenter(老版本叫-dc,-dc已经失效)

•作用:指定机器加入到哪一个数据中心中

示例1:命令参数方式执行

consul agent -data-dir /tmp/node2 -node=node2 -bind=192.168.11.145 -datacenter=dc1 -ui -client=192.168.11.145

示例2:配置文件方式执行

准备一个配置文件,名称任意,例如consul.json,内容如下:

{    "datacenter": "us-east-1",    "data_dir": "/Users/zhouli/develop/software/consul-data/",    "addresses": {        "https": "0.0.0.0"    },    "ports": {        "http": 8500    },    "acl" : {        "enabled": true,        "default_policy": "deny",        "down_policy": "extend-cache",        "tokens" : {          "master" : "b1gs33cr3t"        }      }}

启动时,让consul读取配置文件:

consul agent -dev -config-file="consul-config/consul.json"

参考文档

consul agent 有20来个选项,本文只列出了常用选项,其他选项未作展开,详见: https://www.consul.io/docs/agent/options.html[2]

Consul集群搭建

主机规划

准备三台CentOS 7的虚拟机,主机规划如下:

主机名称

IP

作用

是否允许远程访问

node0

192.168.11.143

consul server

node1

192.168.11.144

consul client

node2

192.168.11.145

consul client

搭建步骤

•启动node0机器上的Consul(node0机器上执行):

consul agent -data-dir /tmp/node0 -node=node0 -bind=192.168.11.143 -datacenter=dc1 -ui -client=192.168.11.143 -server -bootstrap-expect 1

•启动node1机器上的Consul(node1机器上执行):

consul agent -data-dir /tmp/node1 -node=node1 -bind=192.168.11.144 -datacenter=dc1 -ui

•启动node2机器上的Consul(node2机器上执行):

consul agent -data-dir /tmp/node2 -node=node2 -bind=192.168.11.145 -datacenter=dc1 -ui -client=192.168.11.145

•将node1节点加入到node0上(node1机器上执行):

consul join 192.168.11.143

•将node2节点加入到node0上(node2机器上执行):

consul join -rpc-addr=192.168.11.145:8400  192.168.11.143

•这样一个简单的Consul集群就搭建完成了,在node1上查看当前集群节点:

consul members -rpc-addr=192.168.11.143:8400

结果如下:

Node   Address              Status  Type    Build  Protocol  DCnode0  192.168.11.143:8301  alive   server  0.7.0  2         dc1node1  192.168.11.144:8301  alive   client  0.7.0  2         dc1node2  192.168.11.145:8301  alive   client  0.7.0  2         dc1

说明集群已经搭建成功了。

我们分析一下,为什么第5步和第6步需要加-rpc-addr 选项,而第4步不需要加任何选项呢?原因是-client 指定了客户端接口的绑定地址,包括:HTTP、DNS、RPC,而consul joinconsul members 都是通过RPC与Consul交互的。

访问测试

如上,我们三个节点都加了-ui 参数启动了内建的界面。我们可以通过:http://192.168.11.143:8500/ui/ 或者 http://192.168.11.145:8500/ui/ 进行访问,也可以在node1机器上通过 http://127.0.0.1:8500/ui/ 进行访问,原因是node1没有开启远程访问 ,三种访问方式结果一致。

本文分享自微信公众号 - IT牧场(itmuch_com),作者:itmuch

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 安装单机版Consul

    •下载最新稳定版:https://www.consul.io/downloads.html[1]•下载指定版本:https://releases.hashico...

    用户1516716
  • 10+倍性能提升全过程--优酷账号绑定淘宝账号的TPS从500到5400的优化历程

    由于用户进来后先要登录并且绑定账号,实际压力先到Passport部分,在这个过程中最开始单机TPS只能到500,经过N轮优化后基本能达到5400 TPS,下面主...

    用户1516716
  • 一步一步构建Spring5源码

    网上搜索了一大堆的解决方法,发现都不行。后来看了spring-context的依赖发现,spring-instrument 在 spring-context 中...

    用户1516716
  • 微服务Consul系列之集群搭建

    在上一篇中讲解了Consul的安装、部署、基本的使用,使得大家有一个基本的了解,本节开始重点Consul集群搭建,官方推荐3~5台Server,因为在异常处理中...

    五月君
  • consul基础运维-备份还原导入导出

    工作中要保证生产环境部署的consul的集群能够安全稳定地对外提供服务,即使出现系统故障也能快速恢复,这里将讲述部分的备份还原操作及KV的导入导出操作。

    jeremyxu
  • Kubernetes中Consul重启自动加入集群实践

    近期频繁的容器母机调整导致我们的业务需要多次重启,不得不寻找一种自动重建Consul集群的方式。在网上搜索和学习一番后发现,基本没有针对Kubernetes容器...

    sherlock99
  • consul安全加固

    最近的工作需要对默认安装的consul集群进行安全加固,这里将安全加固的步骤记录下来。

    jeremyxu
  • spring cloud: 使用consul来替换eureka

    eureka官方已经正式宣布:自2.0起不再维护该项目,并在github 项目wiki上放出了一段吓唬人的话:

    菩提树下的杨过
  • 网关/负载均衡下的consul集群代理

    charlieroro
  • 领域驱动设计之体系架构模式交互过程与最佳实践

    用户1910585

扫码关注云+社区

领取腾讯云代金券