ToB企服应用市场:ToB评测及商务社交产业平台

标题: Spring Cloud开发实践(五): Consul - 服务注册的另一个选择 [打印本页]

作者: 惊落一身雪    时间: 2023-5-18 00:25
标题: Spring Cloud开发实践(五): Consul - 服务注册的另一个选择
目录

关于 Consul

HashiCorp Consul 是微服务网络解决方案之一, 用于管理跨网络和多云环境服务之间的安全网络连接, 提供服务发现, 服务网格, 流量管理和自动更新. 可以单独部署, 也可以分布式部署.
Consul 的特点

安装

下载地址 https://developer.hashicorp.com/consul/downloads, 根据自己的系统选择对应的二进制文件, 对应 Linux AMD64 的, 文件还不小, 50MB, 解压后只有一个可执行文件, 127MB, 将其放到 /opt/consul/ 目录, 并将owner改为 root:root
运行 Agent

Consul 的运行形式就是 Agent, 可以运行为 server 或 client 模式. Agent 的启动命令格式为
  1. consul agent <options>
复制代码
具体的命令参数可以通过consul agent <options>--help查看, 常用的参数
开发模式

用-dev参数可以快速创建一个开发模式的server, 数据不保存, Node ID随机生成, Node name使用当前的hostname, 监听 127.0.0.1, 可以看下面的控制台输出, HTTP等服务使用的是127.0.0.1地址, 只能从本机访问
  1. $ consul agent <options>-dev==> Starting Consul agent...              Version: '1.15.2'           Build Date: '2023-03-30 17:51:19 +0000 UTC'              Node ID: 'ab2e7536-867a-c12f-5bd6-8a825b31af90'            Node name: 'centos7001'           Datacenter: 'dc1' (Segment: '')               Server: true (Bootstrap: false)          Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, gRPC-TLS: 8503, DNS: 8600)         Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)    Gossip Encryption: false     Auto-Encrypt-TLS: false            HTTPS TLS: Verify Incoming: false, Verify Outgoing: false, Min Version: TLSv1_2             gRPC TLS: Verify Incoming: false, Min Version: TLSv1_2     Internal RPC TLS: Verify Incoming: false, Verify Outgoing: false (Verify Hostname: false), Min Version: TLSv1_2==> Log data will now stream in as it occurs:2023-05-17T06:31:23.337Z [DEBUG] agent.grpc.balancer: switching server: target=consul://dc1.ab2e7536-867a-c12f-5bd6-8a825b31af90/server.dc1 from= to=
复制代码
如果在远程服务器上运行, 需要加上-client参数, 指定服务器网口IP地址, 这样就可以从本地访问 http://192.168.11.22:8500 的 Web控制台了
  1. consul agent <options>-dev -client=192.168.11.22
复制代码
在另一个终端窗口中, 可以通过consul members命令查看节点, 如果不加-http-addr参数, 默认访问本地127.0.0.1
  1. $ consul members -http-addr=http://192.168.11.22:8500
  2. Node        Address         Status  Type    Build   Protocol  DC   Partition  Segment
  3. centos7001  127.0.0.1:8301  alive   server  1.15.2  2         dc1  default    <all>
复制代码
通过consul leave停止consul服务
  1. $ consul leave -http-addr=http://192.168.11.22:8500
  2. Graceful leave complete
复制代码
单Server模式

如果不使用-dev, 就要手工指定一些参数, 否则启动会有错误
  1. consul agent <options>-ui -server -bootstrap-expect=1 -data-dir=./consul-data -client=192.168.11.22
复制代码
去掉了 -dev 参数, 增加了三个新参数,
集群模式

集群模式下, 每个 Datacenter 必须至少有一台 server. 建议是3或5台, 单server在宕机时会造成数据丢失. 其它 Agent 运行为 client 模式.
下面以一台Server, 一台Client为例说明
在 11.22 主机上运行 Server
  1. consul agent <options>-ui -server -bootstrap-expect=1 -data-dir=./consul-data -client=192.168.11.22 -bind=192.168.11.22
复制代码
在 11.23 主机上运行 Client, 并 Join 到 11.22
  1. consul agent <options>-ui -data-dir=./data -client=192.168.11.23 -bind=192.168.11.23 -retry-join=192.168.11.22
复制代码
Join 成功后, 在两边的控制台上会显示相应信息. 这时候通过consul members可以看到两个Node:
  1. /opt/consul/consul members -http-addr=http://192.168.11.22:8500
  2. Node          Address             Status  Type    Build   Protocol  DC   Partition  Segment
  3. centos7001    192.168.11.22:8301   alive   server  1.15.2  2         dc1  default    <all>
  4. 54120-nc01    192.168.11.23:8301   alive   client  1.6.1   2         dc1  default    <default>
复制代码
后台运行

不留日志
  1. nohup /opt/consul/consul agent <options>-ui -server -bootstrap-expect=1 -data-dir=./consul-data -client=192.168.11.22 -bind=192.168.11.22 >/dev/null 2>&1 &
复制代码
日志输出到文件
  1. nohup /opt/consul/consul agent <options>-ui -server -bootstrap-expect=1 -data-dir=./consul-data -client=192.168.11.22 -bind=192.168.11.22 >path/to/log/consul.log 2>&1 &
复制代码
这样consul会在后台运行, 需要用 consul leave 退出
参考


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4