consul简介
官网介绍地址 视频介绍的挺不错的,不过是英文的
Consul is a service mesh solution providing a full featured control plane with service discovery, configuration, and segmentation functionality. Each of these features can be used individually as needed, or they can be used together to build a full service mesh. Consul requires a data plane and supports both a proxy and native integration model. Consul ships with a simple built-in proxy so that everything works out of the box, but also supports 3rd party proxy integrations such as Envoy.
大致的意思是,Consul提供服务网格(可自行搜索一下含义)解决方案,功能齐全,支持控制平面,服务发现、配置和分段功能。这些功能中的每个特性都可以根据需要单独使用,也可以一起使用来构建一个完整的服务网格。Consul需要一个数据平面,并支持代理和原生集成模型。Consul提供了一个简单的内置代理,因此一切都可以开箱即用,但也支持第三方代理集成,如Envoy。
环境搭建
前面介绍了consul的功能很强大,提供了服务网格的整体解决方案。本文主要使用 consul来演示其中服务发现这个单独的特性。本案例采用的是consul单机进行测试。启动服务consul服务端,需要占用6个端口,因此只部署了单实例,内存占用 17m, 占用端口8300,8301,8302,8500,8502,8600
说明
本文的实操环境是基于虚拟机完成,虚拟机通过静态ip与本机相连,虚拟机局域网ip地址固定为 10.248.174.155。consul的版本为1.11.1
# 虚拟机操作系统
> uname -a
> Linux n248-174-155 4.14.81.bm.15-amd64 #1 SMP Debian 4.14.81.bm.15 Sun Sep 8 05:02:31 UTC 2019 x86_64 GNU/Linux
下载安装
# 下载
wget https://releases.hashicorp.com/consul/1.11.1/consul_1.11.1_linux_amd64.zip
# 解压
unzip consul_1.11.1_linux_amd64.zip
解压后只有一个可执行文件,将这个可执行文件加入到环境变量PATH中即可,记得使用source 命令让PATH的变量重新加载
测试是否安装成功
# consul version 查看版本号
root@n248-174-155:~/file$ consul version
Consul v1.11.1
Revision 2c56447e
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
另外由于启动时,指定了参数开始 web-ui 所以可以在web端可视化的展示服务的状态,将ip替换成你的ip即可
http://10.248.174.155:8500/
命令实战
一般来说,官方提供的各种语言相关的sdk都原生命令有对应的联系,consul是用go语言编写的,原生api对go的支持非常好。
由于已经将consul 加入到PATH变量中了,所以接下来的操作都和在哪个目录完全没有关系了。
启动 consul
# 后台启动方式,指定了日志文件路径/home/root/consul/consul.log
nohup consul agent -dev -client 0.0.0.0 -ui > /home/root/consul/consul.log 2>&1 &
查看进程
root@n248-174-155:~/file$ netstat -ntpl|grep consul
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:8300 0.0.0.0:* LISTEN 793138/consul
tcp 0 0 127.0.0.1:8301 0.0.0.0:* LISTEN 793138/consul
tcp 0 0 127.0.0.1:8302 0.0.0.0:* LISTEN 793138/consul
tcp6 0 0 :::8500 :::* LISTEN 793138/consul
tcp6 0 0 :::8502 :::* LISTEN 793138/consul
tcp6 0 0 :::8600 :::* LISTEN 793138/consul
新增kv
consul kv put services/svr1/001 '{"Addr":"192.168.4.5","Port":3358}'
consul kv put ser