consul实战系列-之一 consul介绍和初体验

Page content

介绍

互联网软件的后台技术架构已经从单体到微服务,微服务再进一步演化为服务网格技术(Service Mesh),当前服务网格的技术选项中Istio最为火热,但是也有不少公司选择consul

根据最近的工作,聊聊consul这个开源的服务网格工具实战技术,consul是HashiCorp这家做云计算IAAS软件的一个开源产品。

consul提供服务网格能力主要有以下这些功能

  • 基于DNS和HTTP接口的服务注册和发现
  • 服务访问控制
  • 动态负载均
  • 网络任务自动化
  • 应用件请求流量mTLS加密
  • 多云环境服务网格
  • 应用可观测性
  • 七层网络流量管理
    这些基本上都是微服务常见概念了,做后端的同学应该都比较清楚, 本文就不深入去介绍,大家可以找相关资料来了解

Consul还可以与HashiCorp公司其它产品进行深度整合,简化应用的开发和运维工作

本地开发环境体验

大家可以从Consul下载页直接下载二进制包,或则通过操作系统的包管理工具来安装consul

安装完成之后,我们以开发模式运行一个consul实例

consul agent -dev 

启动输出信息如下, consul agent -dev

这里解释下,这些选项意思

信息 说明
NodeId 生成的随机ID
Node Name 运行机器的Hostname
DataCenter 数据中心,默认用dc1
Server 以Server模式运行,consul 有server和clien两种模式
Client Addr 启动监听的IP地址,开发模式只监听127.0.0.1
Cluster Addr 集群地址,因为只有一台开发模式机器,因此只有127.0.0.1
Gossip Encryption Gossip是consul的采用的分布式节点消息传播协议
Auto-Encrypt-TLS 是否自动加密通信,本地开发模式不启用加密
HTTPS TLS 是否校验入站和出站的HTTP请求
gRPC TLS 是否校验入站和出站的gRPC请求
Internal RPC TLS 是否交易consul内部集群接gRPC入站和出站请求

浏览器访问http://127.0.0.1:8500/

consul启动之后有一个自带的service,名称为consul Consul UI Service

单节点模式运行,一个运行节点 Consul UI Node

使用consul kv 体验KV功能

consul kv put consul/configuration/db_port 5432
# 输出提示:  Success! Data written to: consul/configuration/db_port

consul kv get consul/configuration/db_port 
# 输出5432

当然本地的consul kv 命令,最终转为HTTP Rest请求,可以看到输出日志 分别进行 PUT和GET的请求

2022-12-17T16:57:40.248+0800 [DEBUG] agent.http: Request finished: method=PUT url=/v1/kv/consul/configuration/db_port from=127.0.0.1:50386 latency="159.084µs"
2022-12-17T16:57:42.473+0800 [DEBUG] agent.http: Request finished: method=GET url=/v1/kv/consul/configuration/db_port from=127.0.0.1:50401 latency="87.083µs"

作为本系列的的第一篇文章,简单介绍了下consul是什么,下篇文章我们讲讲如何用consul搭建一个简单的继续、用使用spring cloud consul来做服务注册和服务发现