Consul服务发现(2)

本文介绍了如何在Consul中注册服务,包括通过服务定义文件和调用HTTP API两种方式。重点讲述了提供服务定义文件的方法,如创建配置目录、编写服务定义文件,并展示了在Unix系统中自动加载配置的过程。此外,还提到了一个监听HTTP:10000的健康检查服务示例,该服务每隔10s输出信息,展示了Consul服务的自动检查功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注册服务

可以通过提供服务定义文件和调用HTTP API这两种方式来注册一个服务。

提供服务定义文件
  • 首先,为consul配置创建一个目录,consul会载入配置文件夹里的所有配置文件。在Unix系统中通常类似/etc/consul.d(.d后缀的意思是这个路径包含了一组配置文件)。如果在创建集群时为在命令行中创建,则需要手动创建(mkdir /etc/consul.d)。
  • 随后在/etc/consul.d目录下创建web.json
// web.json
{
  "service": {
    "name": "web",
    "tags": ["master"],
    "address": "127.0.0.1",
    "port": 10000,
    "checks": [
      {
        "http": "http://localhost:10000/health",
        "interval": "10s"
      }
    ]
  }
}
  • 在GOPATH或者go mod路径下创建并运行一个监听HTTP:10000的health服务。参考文件hello.go
// hello.go
package main
import (
    "fmt"
    "net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Println("Hello Web3! This is n3 or n2")
    fmt.Fprintf(w, "Hello Web3! This is n3 or n2")
}
func healthHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Println("health check! n3 or n2")
}
func main() {
    http.HandleFunc("/", handler)
    http.HandleFunc("/health", healthHandler)
    http.ListenAndServe(":10000", nil)
}
  • 结果:对应运行的系统中会每隔10s输出health check! n3 or n2。原因是web.json文件中定义了checks的interval属性。会每隔十秒到服务中访问。
  • 上面注册的Web服务,它的域名是web.service.consul
// 可以通过以下命令接收包含地址和端口的SRV记录,也可以使用DNS API来接收
dig @127.0.0.1 -p 8600 web.service.consul
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值