微服务管理|Consul 安装、配置与使用
本文已参与「新人创作礼」活动,一起开启掘金创作之路
Consul
-
Consul概述 consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务,consul属于微服务架构的基础设置中用于发现和配置服务的一个工具。Consul提供如下的几个核心功能:
- 服务发现:Consul的某些客户端可以提供一个服务,其他客户端可以使用Consul去发现这个服务的提供者。
- 健康检查:Consul客户端可以提供一些健康检查,这些健康检查可以关联到一个指定的服务,比如心跳包的检测。
- 键值存储:应用实例可以使用Consul提供的分层键值存储,比如动态配置,特征标记,协作等。通过HTTP API的方式进行获取。
- 多数据中心:Consul对多数据中心有非常好的支持。
-
官方网站: 可以访问www.consul.io/ 查看Consul的相关介绍,获取相关资料。
-
安装: 在官方文档中,点击Download按钮,进入下载软件界面www.consul.io/downloads.h… ,选择自己本机系统的类型,如下图所示:
brew 安装太慢了,这里下载二进制文件安装,mac选择Amd64
下载
Consul环境配置
-
1、将下载的consul_1.12.1_darwin_amd64.zip进行解压,解压后得到可执行文件consul。
-
2、将consul可执行文件拷贝到电脑本地的环境变量中。
- Unix系统中:可以拷贝到~/bin或**/usr/local/bin**目录下,这两个目录是常见的安装目录。
- Windows系统:可以将consul安装到**%PATH%**所对应的目录路径中。 以macOS系统为例,属于unix系统,将consul拷贝到/usr/local/bin目录下,如图所示:
-
3、测试配置成功 完成consul的环境配置后,即表示已经将consul完成了安装。可以通过在命令行中运行consul指令验证是否安装成功。打开命令行工具,输入如下指令:
consul
在终端中输入consul指令,出现如上指令用法及参数提示,即表示consul安装成功。 如果得到的是**-bash: consul: command not found的错误,则表示path**没有正确设置,需要重新检查consul可执行文件所在路径是否添加到了环境变量PATH中。
Consul启动
安装配置好Consul以后,我们可以通过简单的命令启动consul。先来看最简单的启动方式:
consul agent -dev
在新终端中,执行如上操作。
ini
复制代码
istars@wangmingxingdeMacBook-Pro ~ % consul agent -dev
==> Starting Consul agent...
Version: '1.12.1'
Node ID: 'fc472dc7-f894-f969-91fc-ae5933a6a2d2'
Node name: 'wangmingxingdeMacBook-Pro.local'
Datacenter: 'dc1' (Segment: '<all>')
Server: true (Bootstrap: false)
Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600)
Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false
\
==> Log data will now stream in as it occurs:
\
2022-05-26T15:15:32.343+0800 [WARN] agent: Node name "wangmingxingdeMacBook-Pro.local" will not be discoverable via DNS due to invalid characters. Valid characters include all alpha-numerics and dashes.
2022-05-26T15:15:32.353+0800 [WARN] agent.auto_config: Node name "wangmingxingdeMacBook-Pro.local" will not be discoverable via DNS due to invalid characters. Valid characters include all alpha-numerics and dashes.
2022-05-26T15:15:32.370+0800 [INFO] agent.server.raft: initial configuration: index=1 servers="[{Suffrage:Voter ID:fc472dc7-f894-f969-91fc-ae5933a6a2d2 Address:127.0.0.1:8300}]"
2022-05-26T15:15:32.371+0800 [INFO] agent.server.raft: entering follower state: follower="Node at 127.0.0.1:8300 [Follower]" leader=
2022-05-26T15:15:32.373+0800 [INFO] agent.server.serf.wan: serf: EventMemberJoin: wangmingxingdeMacBook-Pro.local.dc1 127.0.0.1
2022-05-26T15:15:32.374+0800 [INFO] agent.server.serf.lan: serf: EventMemberJoin: wangmingxingdeMacBook-Pro.local 127.0.0.1
2022-05-26T15:15:32.374+0800 [INFO] agent.router: Initializing LAN area manager
2022-05-26T15:15:32.375+0800 [INFO] agent.server: Adding LAN server: server="wangmingxingdeMacBook-Pro.local (Addr: tcp/127.0.0.1:8300) (DC: dc1)"
2022-05-26T15:15:32.377+0800 [INFO] agent.server.autopilot: reconciliation now disabled
2022-05-26T15:15:32.379+0800 [INFO] agent.server: Handled event for server in area: event=member-join server=wangmingxingdeMacBook-Pro.local.dc1 area=wan
2022-05-26T15:15:32.380+0800 [WARN] agent: [core]grpc: addrConn.createTransport failed to connect to {dc1-127.0.0.1:8300 wangmingxingdeMacBook-Pro.local.dc1 <nil> 0 <nil>}. Err: connection error: desc = "transport: Error while dialing dial tcp 127.0.0.1:0->127.0.0.1:8300: operation was canceled". Reconnecting...
2022-05-26T15:15:32.380+0800 [WARN] agent: [core]grpc: addrConn.createTransport failed to connect to {dc1-127.0.0.1:8300 wangmingxingdeMacBook-Pro.local <nil> 0 <nil>}. Err: connection error: desc = "transport: Error while dialing dial tcp 127.0.0.1:0->127.0.0.1:8300: operation was canceled". Reconnecting...
2022-05-26T15:15:32.380+0800 [WARN] agent: [core]grpc: addrConn.createTransport failed to connect to {dc1-127.0.0.1:8300 wangmingxingdeMacBook-Pro.local <nil> 0 <nil>}. Err: connection error: desc = "transport: Error while dialing dial tcp 127.0.0.1:0->127.0.0.1:8300: operation was canceled". Reconnecting...
2022-05-26T15:15:32.384+0800 [DEBUG] agent.server.autopilot: autopilot is now running
2022-05-26T15:15:32.384+0800 [DEBUG] agent.server.autopilot: state update routine is now running
2022-05-26T15:15:32.388+0800 [INFO] agent: Started DNS server: address=127.0.0.1:8600 network=tcp
2022-05-26T15:15:32.388+0800 [INFO] agent: Started DNS server: address=127.0.0.1:8600 network=udp
2022-05-26T15:15:32.389+0800 [INFO] agent: Starting server: address=127.0.0.1:8500 network=tcp protocol=http
2022-05-26T15:15:32.390+0800 [INFO] agent: Started gRPC server: address=127.0.0.1:8502 network=tcp
2022-05-26T15:15:32.390+0800 [INFO] agent: started state syncer
2022-05-26T15:15:32.390+0800 [INFO] agent: Consul agent running!
2022-05-26T15:15:32.435+0800 [WARN] agent.server.raft: heartbeat timeout reached, starting election: last-leader=
2022-05-26T15:15:32.437+0800 [INFO] agent.server.raft: entering candidate state: node="Node at 127.0.0.1:8300 [Candidate]" term=2
2022-05-26T15:15:32.437+0800 [DEBUG] agent.server.raft: votes: needed=1
2022-05-26T15:15:32.437+0800 [DEBUG] agent.server.raft: vote granted: from=fc472dc7-f894-f969-91fc-ae5933a6a2d2 term=2 tally=1
2022-05-26T15:15:32.437+0800 [INFO] agent.server.raft: election won: tally=1
2022-05-26T15:15:32.437+0800 [INFO] agent.server.raft: entering leader state: leader="Node at 127.0.0.1:8300 [Leader]"
2022-05-26T15:15:32.438+0800 [INFO] agent.server: cluster leadership acquired
2022-05-26T15:15:32.438+0800 [INFO] agent.server: New leader elected: payload=wangmingxingdeMacBook-Pro.local
2022-05-26T15:15:32.441+0800 [INFO] agent.server.autopilot: reconciliation now enabled
2022-05-26T15:15:32.442+0800 [INFO] agent.leader: started routine: routine="federation state anti-entropy"
2022-05-26T15:15:32.442+0800 [INFO] agent.leader: started routine: routine="federation state pruning"
2022-05-26T15:15:32.444+0800 [DEBUG] connect.ca.consul: consul CA provider configured: id=fb:50:9b:45:1a:65:15:c1:68:57:73:5f:da:cd:b8:0d:0f:e2:26:eb:68:66:43:11:85:9d:67:a9:7a:56:9c:b9 is_primary=true
2022-05-26T15:15:32.447+0800 [INFO] connect.ca: initialized primary datacenter CA with provider: provider=consul
2022-05-26T15:15:32.447+0800 [INFO] agent.leader: started routine: routine="intermediate cert renew watch"
2022-05-26T15:15:32.447+0800 [INFO] agent.leader: started routine: routine="CA root pruning"
2022-05-26T15:15:32.447+0800 [INFO] agent.leader: started routine: routine="CA root expiration metric"
2022-05-26T15:15:32.447+0800 [INFO] agent.leader: started routine: routine="CA signing expiration metric"
2022-05-26T15:15:32.447+0800 [INFO] agent.leader: started routine: routine="virtual IP version check"
2022-05-26T15:15:32.448+0800 [INFO] agent.leader: stopping routine: routine="virtual IP version check"
2022-05-26T15:15:32.448+0800 [INFO] agent.leader: stopped routine: routine="virtual IP version check"
2022-05-26T15:15:32.448+0800 [DEBUG] agent.server: successfully established leadership: duration=