微服务架构的实施会遇到基础架构的困难,从传统的基于节点的网络基础框架到基于服务的动态基础框架是微服务框架所需要解决的问题。Consul在1.2的时候推出了Connection的功能,在这篇文章中结合一个具体的例子来看一下Consul在服务网格的架构下能够做些什么。
服务网格 & Consul
服务网格(Service Mesh)为微服务的实施提供了一种高可用的分布式解决方案,相较于传统依托与主机的网络安全机制,服务网格能够适应基于服务的这样的一种动态的需求,主要通过如下几个关键因素进行管理:
- 服务发现:不同的服务之间必须能够相互识别和发现
- 服务配置:需要能够通过统一的方式进行动态的配置
- 服务安全:服务之间的通信必须是安全的,需要进行授权和加密
Consul整体上使用HTTP API和DNS协议方式的服务发现,使用Consul KV进行配置的存储,使用Connect解决了服务间通信的安全问题,提供了基于Consul的服务网格的解决方案。 - Consul Connect
在Consul 1.2推出了Connect功能,可以通过自动TLS加密提供服务间的安全通信。
Consul Connect使用示例
在这篇文章中,我们将继续通过具体的实例来介绍Consul Connect的使用,使用如下步骤进行。
使用socat启动一个用于验证的服务
可以使用socat,也可以使用其他的任何服务均可,只要可以验证操作即可,执行如下命令在8181端口提供一个基于socat的可以进行结果回显的服务。
执行命令:socat -v tcp-l:8181,fork exec:"/bin/cat"
结果确认,使用nc连接8181端口,并随意输入内容,在8181端口提供的TCP的回显的socat服务会将输入的内容返回给nc,nc侧执行结果如下所示:
liumiaocn:~ liumiao$ nc localhost 8181
hello, this is greetings from liumiao
hello, this is greetings from liumiao
socat端的服务由于使用了-v参数,也会显示如下内容
liumiaocn:~ liumiao$ socat -v tcp-l:8181,fork exec:"/bin/cat"
> 2020/03/01 16:58:58.069067 length=38 from=0 to=37
hello, this is greetings from liumiao
< 2020/03/01 16:58:58.069554 length=38 from=0 to=37
hello, this is greetings from liumiao
启动Consul并注册服务
事前准备:服务定义
liumiaocn:consul.d liumiao$ ls
socat.json
liumiaocn:consul.d liumiao$ cat socat.json
{
"service":{
"name":"socat",
"port":8181,