设为首页 加入收藏

TOP

Spring Cloud开发实践(五): Consul - 服务注册的另一个选择(一)
2023-07-25 21:24:08 】 浏览:60
Tags:Spring Cloud Consul

目录

关于 Consul

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

Consul 的特点

  • CP(强一致性),使用Raft复制状态
  • 服务可以通过任意Server注册, 通过 Raft 仲裁
  • 内建安全通信选项
  • 一致性提供锁定和集群协调
  • 带配置功能, 健康检查, Lock, KV, ACL
  • 通过 DNS 支持非 REST 节点, 允许更多类型资源连接
  • 使用 Go 语言编写, 启动资源消耗小, 只需要50-60MB内存, 相对比 Nacos 默认配置512M, 启动需要600M以上内存.
  • 脚本化配置, 对容器部署方式更友好

安装

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

运行 Agent

Consul 的运行形式就是 Agent, 可以运行为 server 或 client 模式. Agent 的启动命令格式为

consul agent <options>

具体的命令参数可以通过consul agent --help查看, 常用的参数

  • -bind= 用于cluster通信的地址
  • -client= 用于client访问的地址, 包含 RPC, DNS, HTTP, HTTPS, gRPC (if configured).
  • -config-dir= 配置文件所在目录, 读取所有 .json 后缀的文件作为配置, 可以指定多次
  • -config-file= 配置文件路径, 可以指定多次
  • -data-dir= 指定agent状态数据存储目录
  • -dev 以开发模式启动
  • -log-file= 指定日志文件路径
  • -log-json 使用JSON格式记录日志
  • -log-level= 日志级别
  • -log-rotate-bytes= 日志文件字节数约束
  • -log-rotate-duration= 日志文件时间跨度
  • -log-rotate-max-files= 日志保留的文件数
  • -node= 指定本节点名称, 在 Cluster 内必须唯一
  • -node-id= 指定Node ID, 默认为自动生成并记录到 data-dir
  • -retry-join= 启动时尝试加入的 Agent 地址
  • -server 服务器模式
  • -ui 启用内建的静态Web UI界面
  • -ui-content-path= UI界面地址, 默认为 /ui/

开发模式

-dev参数可以快速创建一个开发模式的server, 数据不保存, Node ID随机生成, Node name使用当前的hostname, 监听 127.0.0.1, 可以看下面的控制台输出, HTTP等服务使用的是127.0.0.1地址, 只能从本机访问

$ consul agent -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: '<all>')
               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=<none> to=<none>

如果在远程服务器上运行, 需要加上-client参数, 指定服务器网口IP地址, 这样就可以从本地访问 http://192.168.11.22:8500 的 Web控制台了

consul agent -dev -client=192.168.11.22

在另一个终端窗口中, 可以通过consul members命令查看节点, 如果不加-http-addr参数, 默认访问本地127.0.0.1

$ consul members -http-addr=http://192.168.11.22:8500
Node        Address         Status  Type    Build   Protocol  DC   Partition  Segment
centos7001  127.0.0.1:8301  alive   server  1.15.2  2         dc1  default    <all>

通过consul leave停止consul服务

$ consul leave -http-addr=http://192.168.11.22:8500
Graceful leave complete

单Server模式

如果不使用-dev, 就要手工指定一些参数, 否则启动会有错误

consul agent -ui -server -bootstrap-expect=1 -data-dir=./consul-data -client=192.168.11.22

去掉了 -dev 参数, 增加了三个新参数,

  • -ui 开启 8500 端口的 web 控制台, 这个不是必须的
  • -server 和 -bootstrap-expect=1 一起使用, 前者表示用server模式启动, 后者表示只有一台服务器, 可以立即产生leader, 也必须指
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇聊一聊适配器模式 下一篇Spring Boot 实现跨域的 5 种方式..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目