Spring Cloud之Consul服务注册与发现 - 07(个人笔记)

本文介绍了Consul作为服务注册与发现的工具,包括其主要功能、安装运行步骤、常用命令、端口号以及如何在Spring Cloud中创建服务提供者和消费者注册到Consul。Consul提供服务发现、健康检查、KV存储、多数据中心支持和图形化界面等功能,适合分布式系统使用。
摘要由CSDN通过智能技术生成

1、Consul简介

Consul是一套开源的分布式服务发现和配置管理系统,有HashiCorp公司使用Go语言开发,提供了微服务系统中服务治理、配置中心、控制总线等功能。每个功能可以单独使用,也可以一起使用以构建全方位的服务网格,Consul提供了一套完整的服务网格解决方案。

优点:基于raft协议,简洁;支持健康检查,同时支持HTTPDNS协议,支持跨数据中心的WAN集群,提供了图形化界面;支持跨平台,支持Linux、Mac、Windows。

Consul的功能:

  • 实现服务注册发现,提供了了HTTP和DNS两种发现方式
  • 健康检测,支持多种方式,Http,Tcp,Docker,Shell脚本定制
  • KV存储(key、value的存储方式)
  • 支持多数据中心
  • 可视化Web界面

下载地址:https://www.consul.io/downloads

Consul中文使用教程:https://www.springcloud.cc/spring-cloud-consul.html

2、安装并运行Consul

macOS环境下,使用homebrew方式在Mac上安装Consul。记录详细流程操作。

2-1、安装应用

使用命令$ brew install consul安装:

test-MBP:~ test$ brew install consul
Updating Homebrew…
==> Downloading https://ghcr.io/v2/homebrew/core/consul/manifests/1.9.5
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/consul/blobs/sha256:043b458e21e
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Pouring consul–1.9.5.big_sur.bottle.tar.gz
==> Caveats
To have launchd start consul now and restart at login:
brew services start consul
Or, if you don’t want/need a background service you can just run:
consul agent -dev -bind 127.0.0.1
==> Summary
🍺 /usr/local/Cellar/consul/1.9.5: 8 files, 86MB

可以使用$ brew info consul 查看consul信息

test-MBP:~ test$ brew info consul
consul: stable 1.9.5 (bottled), HEAD
Tool for service discovery, monitoring and configuration
https://www.consul.io
/usr/local/Cellar/consul/1.9.5 (8 files, 86MB) *
Poured from bottle on 2021-09-14 at 16:42:56
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/consul.rb
License: MPL-2.0
==> Dependencies
Build: go ✘, gox ✘
==> Options
–HEAD
Install HEAD version
==> Caveats
To have launchd start consul now and restart at login:
brew services start consul
Or, if you don’t want/need a background service you can just run:
consul agent -dev -bind 127.0.0.1
==> Analytics
install: 2,450 (30 days), 7,613 (90 days), 31,886 (365 days)
install-on-request: 2,386 (30 days), 7,432 (90 days), 30,939 (365 days)
build-error: 0 (30 days)

2-2、启动consul

启动consul有两种形式:Server 模式Client 模式

打开终端使用命令$ consul agent -dev开启Client 模式:

test-MBP:~ test$ consul agent -dev
==> Starting Consul agent…
Version: ‘1.9.5’
Node ID: ‘3ad13253-8515-2393-cec0-ed4703bece41’
Node name: ‘test-MBP’
Datacenter: ‘dc1’ (Segment: ‘’)
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

如上这种方式是以前台进行的启动,那么相应的只需要 ctrl + c 即可关闭 consul

打开终端使用命令$ consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0 -bind 你的ip地址 -data-dir=/状态数据存储文件夹/data >> /日志记录文件夹/logs/consul.log &开启Server 模式:

test-MBP:~ test$ consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0 -bind 192.168.124.3 -data-dir=/Users/test/Desktop/consulData/data >> /Users/test/Desktop/consulData/logs/consul.log &
[1] 18513
test-MBP:~ tests$

执行命令后给出 PID18513

-bind:绑定的内部通讯地址,默认0.0.0.0,即所有的本地地址,也可以改为自己的ip地址。

-data-dir:状态数据存储用的文件目录

关闭命令:如图所示,一般执行完就给出 PID 了,直接 kill -9 PID 掉就可以了。

test-MBP:~ test$ kill -9 18513

2-3、访问consul图形化界面

访问 http://localhost:8500/ 就可以进入界面了,如下图所示:
在这里插入图片描述

2-4、关闭consul

关闭consul按照Client 模式形式下启动的方法:在终端直接按住 ctrl + c 就可以退出。

关闭consul按照Server 模式形式下启动的方法:杀死启动后给出的 PID , 执行kill -9 PID

3、Consul常用命令解释

  • agent:运行一个consul agent
  • join:将agent加入到consul cluster
  • members:列出consul cluster集群中的members
  • -bootstrap:启动模式,此模式下,节点可以选举自己为leader,一个数据中心只能有一个此模式启动的节点。机群启动后,新启动的节点不建议使用这种模式。
  • -bootstrap-expect:设定一个数据中心需要的服务节点数,可以不设置,设置的数字必须和实际的服务节点数匹配。consul会等待直到数据中心下的服务节点满足设定才会启动集群服务。初始化leader选举,不能和bootstr- ap混用。必须配合-server配置。
  • -bind:绑定的内部通讯地址,默认0.0.0.0,即,所有的本地地址,会将第一个可用的ip地址散播到集群中,如果有多个可用的ipv4,则consul启动报错。[::]ipv6,TCP UDP协议,相同的端口。防火墙配置。
  • -client:客户端模式,http dns,默认127.0.0.1,回环令牌网址
  • -config-file:配置文件位置
  • -config-dir:配置文件所在文件夹,会加载其下所有配置文件,.json或者.hcl文件,加载顺序为字母表顺序;可用配置多个此配置,从而加载多个文件夹,子文件夹的配置不会被加载。
  • -config-format:配置文件格式,配置了,则加载相应个是的文件。不配置,则consul自动识别。
  • -data-dir:状态数据存储文件夹,所有的节点都需要。文件夹位置需要不收consul节点重启影响,必须能够使用操作系统文件锁,unix-based系统下,文件夹文件权限为0600,注意做好账户权限控制,
  • -datacenter:数据中心名称,默认dc1,一个数据中心的所有节点都必须在一个LAN中。
  • -dev:开发模式,去掉所有持久化选项,内存服务器模式。
  • -disable-host-node-id:不使用host信息生成node ID,适用于同一台服务器部署多个实例用于测试的情况。随机生成nodeID
  • -dns-port:v7.0以后,自定义dns 端口,覆盖默认8600
  • -enable-script-checks:是否允许使用脚本进行健康检查,默认false,最好配置enable acl
  • -encrypt:consul网络通讯加密key,base64加密,16比特;consul keygen产生。集群中的每个实例必须提供相同的,只需提供一次,然后会保存到数据文件。重启自动加载。consul节点启动后提供,会被忽略。
  • -hcl:添加hcl格式配置,和已有的配置合并。可以使用多个此配置。
  • -http-port:http api端口,覆盖默认的8500。适用于云环境指定。
  • -log-file:日志记录文件,如果没有提供文件名,则默认Consul-时间戳.log
  • -log-level:日志级别,默认info,包含:trace,debug,info,warn,err;consul monitor监控
  • -log-rotate-bytes:新日志文件生成大小阈值。
  • -log-rotate-rotation:新日志生成时间阈值
  • -join:需要加入的其它节点地址,可以多次使用,加入多个节点。
  • -retry-join:会进行加入重试,适用于认定加入节点最终会正常的情况。ipv4,ipv6,dns
  • -retry-interval:上述,重试间隔,默认30s
  • -retry-max:重试次数,默认0,无限次重试
  • -join-wan, -retry-join-wan, -retry-interval-wan, -retry-max-wan
  • -node:节点名称,默认主机名
  • -node-id:节点ID
  • -pid-file:consul 存储 pid 的文件位置,用于主动发信号。如停止节点,重载配置等。
  • -protocol:使用的协议,升级时使用。consul -v查看协议版本
  • -raft-protocol:使用raft协议版本,默认3
  • -raft-snapshot-threshold:raft执行快照,提交次数阈值。一般不需要设置,io密集型应用可以调高。避免所有的节点同一时间快照。此值过大,会造成相应日志文件变大,节点重启恢复会耗费更长时间。1.1.0后,默认1- 6384,之前8192.
  • -raft-snapshot-interval:执行快照间隔,影响类似上个配置,1.1.0后默认30s,之前5s。
  • -rejoin:节点会尝试重新加入集群。
  • -server:服务端节点模式。
  • -server-port:服务端RPC端口,v1.2.2后提供。
  • -non-voting-server:服务节点不参与选举,接受日志复制,用于横向扩展,服务查询请求。(类比zookeeper 观察者节点)
  • -syslog:linux OSX系统,配置日志输出到系统日志。
  • -ui:内置web ui界面。
  • -ui-dir:web ui 资源文件夹,使用此配置,则不需也不能使用再-ui配置-

4、Consul中默认的端口号

  1. 服务器RPC(默认8300):由服务器用来处理来自其他代理的传入请求,仅限TCP。
  2. Serf LAN(默认8301):用来处理局域网中的八卦。所有代理都需要,TCP和UDP。
  3. Serf WAN(默认8302):被服务器用来在WAN上闲聊到其他服务器,TCP和UDP。从Consul 0.8开始,建议通过端口8302在LAN接口上为TCP和UDP启用服务器之间的连接,以及WAN加入泛滥功能。
  4. HTTP API(默认8500):被客户用来与HTTP API交谈,仅限TCP。
  5. DNS接口(默认8600):用于解析DNS查询,TCP和UDP。

5、创建服务提供者注册到Consul注册中心

新建cloud-providerconsul-payment8006模块,修改pom.xml,这里需要加入spring-cloud-starter-consul-discovery的依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值