Spring Cloud开发实践(五): Consul - 服务注册的另一个选择

这篇具有很好参考价值的文章主要介绍了Spring Cloud开发实践(五): Consul - 服务注册的另一个选择。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

  • Spring Cloud开发实践(一): 简介和根模块
  • Spring Cloud开发实践(二): Eureka服务和接口定义
  • Spring Cloud开发实践(三): 接口实现和下游调用
  • Spring Cloud开发实践(四): Docker部署
  • Spring Cloud开发实践(五): Consul - 服务注册的另一个选择
  • Spring Cloud开发实践(六): 基于Consul和Spring Cloud 2021.0的演示项目

关于 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, 也必须指定. 如果不指定后者, consul会一直等待 leader 的产生

集群模式

集群模式下, 每个 Datacenter 必须至少有一台 server. 建议是3或5台, 单server在宕机时会造成数据丢失. 其它 Agent 运行为 client 模式.

下面以一台Server, 一台Client为例说明

在 11.22 主机上运行 Server

consul agent -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

consul agent -ui -data-dir=./data -client=192.168.11.23 -bind=192.168.11.23 -retry-join=192.168.11.22

Join 成功后, 在两边的控制台上会显示相应信息. 这时候通过consul members可以看到两个Node:

 /opt/consul/consul members -http-addr=http://192.168.11.22:8500
Node          Address             Status  Type    Build   Protocol  DC   Partition  Segment
centos7001    192.168.11.22:8301   alive   server  1.15.2  2         dc1  default    <all>
54120-nc01    192.168.11.23:8301   alive   client  1.6.1   2         dc1  default    <default>

后台运行

不留日志

nohup /opt/consul/consul agent -ui -server -bootstrap-expect=1 -data-dir=./consul-data -client=192.168.11.22 -bind=192.168.11.22 >/dev/null 2>&1 &

日志输出到文件

nohup /opt/consul/consul agent -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 退出文章来源地址https://www.toymoban.com/news/detail-448343.html

参考

  • Eureka vs Consul https://gist.github.com/StevenACoffman/de394d6511a387ada9ab988e33be8583
  • Get Started: Consul Agent https://developer.hashicorp.com/consul/docs/agent
  • Consul建立集群 https://book-consul-guide.vnzmi.com/06_setup_cluster.html

到了这里,关于Spring Cloud开发实践(五): Consul - 服务注册的另一个选择的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • prometheus + consul 服务注册+报警 最佳实践

    本文主要将prometheus和consul 结合起来使用,通过conusl 注册服务至prometheus,实现服务统一注册,统一报警管理等。 整个架构思路consul+consul_export+prometheus+alertmanager ,consul通过check检测服务状态,然后通过consul_export暴露给prometheus,prometheus通过alert规则,通知alertmanager,接着邮件

    2024年03月25日
    浏览(34)
  • Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册

    码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 本文将介绍如何在Spring Cloud微服务架构中,实现在Windows本地开发环境下禁用服务自动注册到Nacos注册中心,而在Linux服务器环境下则自动启用注册功能。这样的配置有助于开发者在本

    2024年03月18日
    浏览(87)
  • Spring Cloud之Consul服务治理实战

    目录 1、Consul是什么 1.1概念 1.2 Consul下载 1.3 Consul启动 2、Consul使用场景 3、Consul优势 4、Consul架构及原理 4.1 整体架构图 4.2 通讯机制 4.3 健康检测 4.4如何保证数据一致性 5、搭建Consul环境 5.1 本地Consul搭建 5.2 集群Consul搭建 5.2.1 安装Consul 5.2.2 启动各 Consul Server节点 5.2.3 组成集

    2023年04月09日
    浏览(22)
  • spring boot 服务健康检测返回OUT_OF_SERVICE,导致服务无法成功注册到consul

    健康检测接口返回OUT_OF_SERVICE 从日志启动看,没有任何报错信息;而且jvm进程也启动成功。 关键的一点信息是,服务的swagger地址访问也正常。 但是,consul上的服务状态就是不健康。 当然,重启大法不好使。 增加配置项: management.endpoint.health.show-details: always 可以看出,ela

    2024年02月14日
    浏览(27)
  • Windows+WSL开发环境下微服务注册(Consul)指定IP

    Win11下安装一个WSL2,做开发环境,简直是爽到不要不要的,相当于既有Windows下的完善生态,又有linux的便利。特别是,在linux下运行的服务端口号,完全和windows是相通的,直接在windows下浏览访问,不需要配置端口转发。linux上跑docker服务,Windows直接访问。 但今天碰到一个问

    2024年02月03日
    浏览(26)
  • 微服务 – Spring Cloud – Nacos服务注册、发现

    1、引入依赖 父pom依赖 子pom依赖 2、配置文件 3、主启动类 第三部完成 打开nacos 在服务列表即可看到注册进来的服务. 4、业务类 写一个接口供服务发现者使用 1、引入依赖 2、配置文件 3、主启动类 打开nacos 在服务列表即可看到注册进来的服务. 4、发现第一个服务 并调用第一

    2024年02月11日
    浏览(36)
  • 【Spring Cloud 三】Eureka服务注册与服务发现

    【Spring Cloud一】微服务基本知识 目前公司项目使用的注册中心主要是Spring Cloud Alibaba的Nacos做的注册中心和配置中心。之前也是对Nacos的基本原理通过手写代码的方式进行了实现。出于对于Eureka的好奇所以就对Spring Cloud Neflix的Eureka进行理论学习和实践。 Eureka是一个 注册发现中

    2024年02月14日
    浏览(30)
  • Spring Cloud Eureka:服务注册与发现

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Spring Cloud Eureka是Spring Cloud生态系统中的一个组件,它是用于实现服务注册与发现的服务治理组件。在微服务架构中,服务之间存在复杂的依赖关系,而Spring Cloud Eureka可以帮助解决服务之间相互查找和通信的问题 Eurek

    2024年02月09日
    浏览(32)
  • 【微服务 Spring Cloud Alibaba】- Nacos 服务注册中心

    目录 1. 什么是注册中心? 1.2 注册中心的作用 2. SpringBoot 整合 Nacos 实现服务注册中心 2.1 将服务注册到 Nacos 2.2 实现消费者 3. 服务列表各个参数的含义、作用以及应用场景 注册中心是微服务架构中的一个重要组件,它用于实现 服务注册 与 服务发现 。 【思考一】什么叫服务

    2024年02月06日
    浏览(42)
  • Eureka:Spring Cloud服务注册与发现组件

    Eureka 一词来源于古希腊词汇,是“发现了”的意思。在软件领域,Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。 Spring Cloud 将 Eureka 与 Netflix 中的其他开源服务组件(例如 Ribbon、Feign 以及 Hystrix 等)一起整合进 Spring Cloud Netflix 模块中,整合后的组件全称为 Spr

    2024年02月03日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包