consul的状态注册和发现及检查

 

 

一. 使用requests使用注册

1. python服务注册及检查

可以对http接口和grpc接口进行状态健康检测

import requests

headers = {
    "contentType": "application/json"
}


def register(name, id, address, port):
    url = "http://192.168.1.103:8500/v1/agent/service/register"
    print(f"http://{address}:{port}/health")
    rsp = requests.put(url, headers=headers, json={
        "Name": name,
        "ID": id,
        "Tags": ["mxshop", "bobby", "imooc", "web"],
        "Address": address,
        "Port": port,
     # 服务检查 "Check": { "GRPC": f"{address}:{port}", "GRPCUseTLS": False, "Timeout": "5s", "Interval": "5s", "DeregisterCriticalServiceAfter": "15s" } }) if rsp.status_code == 200: print("注册成功") else: print(f"注册失败:{rsp.status_code}") def deregister(id): url = f"http://192.168.1.103:8500/v1/agent/service/deregister/{id}" rsp = requests.put(url, headers=headers) if rsp.status_code == 200: print("注销成功") else: print(f"注销失败:{rsp.status_code}") def filter_service(name): url = "http://192.168.1.103:8500/v1/agent/services" params = { "filter": f'Service == "{name}"' } rsp = requests.get(url, params=params).json() for key, value in rsp.items(): print(key) if __name__ == "__main__": # register("mshop-web", "mshop-web", "192.168.1.102", 50051) # deregister("mshop-web") filter_service("user-srv")

 

2. python三方库服务注册及检查 

# 按照pip install python-consul2
import consul

c = consul.Consul(host="192.168.1.103")

address = "192.168.1.102"
port = 50051
check = {
    "GRPC": f"{address}:{port}",
    "GRPCUseTLS": False,
    "Timeout": "5s",
    "Interval": "5s",
    "DeregisterCriticalServiceAfter": "15s"
}

# 注册
# rsp = c.agent.service.register(name="user-srv", service_id="user-srv2",
#                          address=address, port=port, tags=["mxshop"],check=check)
rsp = c.agent.services()
for key, val in rsp.items():
    # 注销
    rsp = c.agent.service.deregister(key)
# print(rsp)

  

3. gin 集成consul 

package main

import (
	"fmt"

	"github.com/hashicorp/consul/api"
)

func Register(address string, port int, name string, tags []string, id string) error {
	//服务注册
	cfg := api.DefaultConfig()
	cfg.Address = "192.168.1.103:8500"

	client, err := api.NewClient(cfg)
	if err != nil {
		panic(err)
	}

	//生成对应的检查对象
	check := &api.AgentServiceCheck{
		HTTP:                           "http://192.168.1.102:8021/health",
		Timeout:                        "5s",
		Interval:                       "5s",
		DeregisterCriticalServiceAfter: "10s",
	}

	//生成注册对象
	registration := new(api.AgentServiceRegistration)
	registration.Name = name
	registration.ID = id
	registration.Port = port
	registration.Tags = tags
	registration.Address = address
	registration.Check = check

	//注册
	err = client.Agent().ServiceRegister(registration)
	//client.Agent().ServiceDeregister()
	if err != nil {
		panic(err)
	}
	return nil
}

func AllServices() {
	//获取所有的服务
	cfg := api.DefaultConfig()
	cfg.Address = "192.168.1.103:8500"

	client, err := api.NewClient(cfg)
	if err != nil {
		panic(err)
	}

	data, err := client.Agent().Services()
	if err != nil {
		panic(err)
	}
	for key, _ := range data {
		fmt.Println(key)
	}
}
func FilterService() {
	cfg := api.DefaultConfig()
	cfg.Address = "192.168.1.103:8500"

	client, err := api.NewClient(cfg)
	if err != nil {
		panic(err)
	}

	data, err := client.Agent().ServicesWithFilter(`Service == "user-web"`)
	if err != nil {
		panic(err)
	}
	for key, _ := range data {
		fmt.Println(key)
	}
}

func main() {
	//_ = Register("192.168.1.102", 8021, "user-web", []string{"mxshop", "bobby"}, "user-web")
	//AllServices()
	//FilterSerivice()
	fmt.Println(fmt.Sprintf(`Service == "%s"`, "user-srv"))
}

 

  

 

posted @ 2022-11-07 18:12  wanghhhh  阅读(116)  评论(0)    收藏  举报