Ai
2 Star 0 Fork 0

403716045/gcore

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
ConsulHelper.go 2.09 KB
一键复制 编辑 原始数据 按行查看 历史
xingang 提交于 2023-02-17 18:19 +08:00 . init
package helper
import (
"fmt"
"log"
"net"
"net/http"
_ "net/http/pprof"
consulapi "github.com/hashicorp/consul/api"
)
var count int64
// consul 服务端会自己发送请求,来进行健康检查
func consulCheck(w http.ResponseWriter, r *http.Request) {
s := "consulCheck" + fmt.Sprint(count) + "remote:" + r.RemoteAddr + " " + r.URL.String()
fmt.Println(s)
fmt.Fprintln(w, s)
count++
}
func RegisterConsulServer() {
config := consulapi.DefaultConfig()
config.Address = "127.0.0.1:8500"
client, err := consulapi.NewClient(config)
if err != nil {
log.Printf("consul client error : ", err)
}
registration := new(consulapi.AgentServiceRegistration)
registration.ID = "LogService_1" // 服务节点的名称
registration.Name = "LogService" // 服务名称
registration.Port = 4779 // 服务端口
registration.Tags = []string{"urlprefix-/192.168.101.27"} // tag,可以为空
registration.Address = "192.168.101.27" // 服务 IP
checkPort := 4779
registration.Check = &consulapi.AgentServiceCheck{ // 健康检查
HTTP: fmt.Sprintf("http://%s:%d%s", registration.Address, checkPort, "/check"),
Timeout: "3s",
Interval: "5s", // 健康检查间隔
DeregisterCriticalServiceAfter: "30s", //check失败后30秒删除本服务,注销时间,相当于过期时间
// GRPC: fmt.Sprintf("%v:%v/%v", IP, r.Port, r.Service),// grpc 支持,执行健康检查的地址,service 会传到 Health.Check 函数中
}
err = client.Agent().ServiceRegister(registration)
if err != nil {
log.Printf("register server error : ", err)
}
//http.HandleFunc("/check", consulCheck)
//http.ListenAndServe(fmt.Sprintf(":%d", checkPort), nil)
}
func localIP() string {
addrs, err := net.InterfaceAddrs()
if err != nil {
return ""
}
for _, address := range addrs {
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
return ipnet.IP.String()
}
}
}
return ""
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/lv_baobao/gcore.git
git@gitee.com:lv_baobao/gcore.git
lv_baobao
gcore
gcore
3bf2efb9b087

搜索帮助