consul的集群部署

consul的原理

Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具.他提供以下关键特性:

  • 服务发现以及注册:

当服务Producer 启动时,会将自己的Ip/host等信息通过发送请求告知 Consul,Consul 接收到 Producer 的注册信息后,每隔一段时间会向 Producer 发送一个健康检查的请求,检验Producer是否健康。

  • 服务调用:

当 Consumer 请求Product时,会先从 Consul 中拿到存储Product服务的 IP 和 Port 的临时表(temp table),从temp table表中任选一个· Producer 的 IP 和 Port, 然后根据这个IP和Port,发送访问请求;temp table表只包含通过了健康检查的 Producer 信息,并且每隔一段时间更新
在这里插入图片描述

consul --hlep查看启动指令:

acl            与 Consul 的ACL进行交互
agent          运行一个 Consul agent
catalog        与 Consul 的目录进行交互
config         与 Consul 的配置进行交互
connect        与 Consul 的Connect子系统进行交互
debug          记录 Consul operators 的调试归档
event          触发一个新事件
exec           在 Consul 节点上执行命令
force-leave    强制一个集群成员进入离开状态,一般用来强制删除发生故障或已关闭且没有正常离开的节点
info           对 Consul operators 提供调试的信息
intention      与通过Connect对服务的访问控制交互
join           将 Consul agent 加入集群
keygen         生成新的加密密钥
keyring        检查和修改 gossip 池中使用的加密密钥
kv             与 k/v 存储进行交互
leave          Consul agent 正常离开集群并关闭
lock           在 k/v 存储中的给定前缀处创建一个锁
login          使用所请求的auth方法将提供的第三方凭据交换为新创建的 Consul ACL令牌
logout         销毁从 consul login 命令中创建的 Consul 令牌
maint          提供对节点或服务的维护模式的控制
members        列出 Consul 集群的所有成员
monitor        用于连接并追踪正在运行的 Consul agent 的日志
operator       为 Consul operators 提供集群级别的工具
reload         触发 agent 配置文件的重载
rtt            估计两个节点之间的网络往返时间
services       与注册的服务进行交互
snapshot       保存、还原和检查 Consul Server 状态以进行灾难恢复
tls            内置帮助创建Consul TLS的CA和证书
validate       对 Consul 的配置文件或目录执行完整性测试
version        显示 Consul 版本信息
watch          监视 Consul 特定数据视图(节点列表,服务成员,k/v等)中的更改

consul的启动

单机启动dev模式

consul agent -dev -client=172.16.110.11

在这里插入图片描述

单机模式,不具有高可用性,下面介绍集群模式

consul的集群安装

主机ip角色
node-4172.16.110.10client
node-1172.16.110.11server
node-2172.16.110.12server
node-3172.16.110.13server

创建 consul server:

mkdir -p /usr/local/consul/{config,data,log}
nohup consul agent -server -bootstrap-expect=3  -data-dir=/usr/local/consul/data -config-dir=/usr/local/consul/config  -node=agent11 -bind=172.16.110.11 -client 0.0.0.0 -ui &> /usr/local/consul/log/consul.log &

参数:

-node:节点的名称 
-bind:绑定的一个地址,用于节点之间通信的地址,可以是内外网,必须是可以访问到的地址 
-server:表示这个节点是个Server
-bootstrap-expect:表示期望提供的Server节点数目。数目一达到,它就会被激活,然后就是leader了
-data-dir:Agent用于存储状态的数据目录,这是所有Agent所必需的
-datacenter:指明数据中心的名字,默认是"dc1"。同一数据中心中的节点应位于单个LAN上
-client:将Client接口(包括HTTP和DNS服务器)绑定到的地址
-ui:启动UI

其他两台机器也创建 consul server,与 172.21.110.11 类似。

mkdir -p /usr/local/consul/{config,data,log}
nohup consul agent -server -bootstrap-expect=3  -data-dir=/usr/local/consul/data -config-dir=/usr/local/consul/config  -node=agent12 -bind=172.16.110.12 -client 0.0.0.0 -ui &> /usr/local/consul/log/consul.log &
mkdir -p /usr/local/consul/{config,data,log}
nohup consul agent -server -bootstrap-expect=3  -data-dir=/usr/local/consul/data -config-dir=/usr/local/consul/config  -node=agent13 -bind=172.16.110.13 -client 0.0.0.0 -ui &> /usr/local/consul/log/consul.log &

创建 consul client

mkdir -p /usr/local/consul/client/{config,log}
consul agent -data-dir=//usr/local/consul/client/ \
    -node=agent10 -bind=172.16.110.10 \
    -enable-script-checks=true -config-dir=/usr/local/consul/client/config \
    -client 0.0.0.0 -ui &> /usr/local/consul/client/log/consul.log &

加入集群

除172.16.110.11 外的其他机器加入集群

#另外3台机器都要加入,执行以下指令
consul join 172.16.110.11

可以看得,集群中有3个server和1个client,它们在数据中心dc1中。实际中我们只有3台机器,如下所示,可以看到3个server,但是该三台机器也可以充当client。
在这里插入图片描述

访问ui:
打开http://172.16.110.10:8500/ui,访问consul ui界面,
在这里插入图片描述

API形式注册数据

curl -X PUT -d '{"id": "redis","name": "redis-service","address": "172.16.110.13","port": 9121,"tags": ["redis"],"meta": {"idc":"senhua"},"checks": [{"http": "http://172.16.110.13:9121/metrics", "interval": "5s"}]}'  http://172.16.110.10:8500/v1/agent/service/register

API形式注销数据

curl -X PUT  http://172.16.110.10:8500/v1/agent/service/deregister/{id}

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值