consul 注册中心使用
主要实现 分布式注册中心、服务注册、服务发现、健康检测
开始安装运行
docker run -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600/udp consul consul agent -dev -client=0.0.0.0
修改为自启动
docker container update --restart=always consul
web界面打开注册中心:localhost:8500
dns服务器端口为 8600
下载 bind 工具 测试 dns 是否正常工作
dig @127.0.0.1 -p 8600 consul.service.consul SRV
实践 服务注册(可以配置 Check 进行健康检查)

实践 服务注销(后面跟上是服务 Id)

web 层服务注册与发现
package initialize import ( "fmt" "github.com/hashicorp/consul/api" "sync" ) var clientOnce sync.Once var ConsulClient *api.Client // GetConsulClient 实例化注册中心客户端 func GetConsulClient() *api.Client { // 连接注册中心 clientOnce.Do(func() { cfg := api.DefaultConfig() cfg.Address = "127.0.0.1:8500" var err error ConsulClient,err = api.NewClient(cfg) if err != nil { panic(err) } }) return ConsulClient } // ConsulRegister 开始注册 func ConsulRegister(address string, port int,name string,tags []string,id string) { // 生成注册对象 register := new(api.AgentServiceRegistration) register.Name = name register.ID = id register.Port = port register.Tags = tags register.Address = address // 生成对应的检查对象 check := &api.AgentServiceCheck{ HTTP: "http://192.168.1.8:8080/health", Timeout: "5s", // 超时 Interval: "5s", // 检查间隔 DeregisterCriticalServiceAfter: "10s", //注册失败10s后取消注册 } register.Check = check // 开始注册 err := GetConsulClient().Agent().ServiceRegister(register) if err != nil { panic(err) } } // ConsulServices 全部服务 func ConsulServices() { data,err := GetConsulClient().Agent().Services() if err != nil { panic(err) } for key,value := range data{ fmt.Println(key,value) } } // ConsulFilter 服务过滤 func ConsulFilter() { data,err := GetConsulClient().Agent().ServicesWithFilter(`Service == "micro-web1"`) // 通过服务名称过滤 if err != nil { panic(err) } for key,value := range data{ fmt.Println(key,value) } }

浙公网安备 33010602011771号