Consul调研
2016-10-14 12:28:16 0 举报
AI智能生成
Consul是一个开源的分布式服务网格解决方案,由HashiCorp开发。它提供了一种简单的方式来构建和管理微服务架构,包括服务发现、配置、健康检查和故障转移等功能。Consul的设计目标是提供一种高度可用和可扩展的解决方案,适用于各种规模的应用程序和部署环境。它支持多种编程语言和平台,并且可以轻松地与其他工具和技术集成。Consul的优点包括易于使用、高性能、可靠性强以及灵活性高。它可以帮助开发人员更好地管理和维护他们的应用程序,提高系统的可靠性和稳定性。总之,Consul是一个非常有用的工具,可以帮助企业构建更加可靠和高效的分布式系统。
作者其他创作
大纲/内容
介绍/安装
说明
Go 语言编写
服务发现和监控
安装
- 官网下载:https://releases.hashicorp.com/consul/1.3.0/consul_1.3.0_linux_amd64.zip
- 将解压后的二进制文件consul(上边画红框的部分拷贝到/usr/local/bin下)
启动
命令
- consul agent -server -ui -bootstrap-expect=3 -data-dir=/tmp/consul -node=agent1 -bind=10.10.8.135 -client=10.10.8.135 -enable-script-checks=true -config-dir=/etc/consul.d -datacenter=dc1
功能
Port
8500(HTTP)
8600(DNS)
8400(RPC)
8301(LAN_PORT)
8302(WAN_PORT)
8300(SERVER)
注册
Register
JSON 配置文件
/etc/consul.d
XXX.json
{
"ID": "userServiceId", //服务id
"Name": "userService", //服务名
"Tags": [ //服务的tag,自定义,可以根据这个tag来区分同一个服务名的服务
"primary",
"v1"
],
"Address": "127.0.0.1",//服务注册到consul的IP,服务发现,发现的就是这个IP
"Port": 8000, //服务注册consul的PORT,发现的就是这个PORT
"EnableTagOverride": false,
"Check": { //健康检查部分
"DeregisterCriticalServiceAfter": "90m",
"HTTP": "http://www.baidu.com", //指定健康检查的URL,调用后只要返回20X,consul都认为是健康的
"Interval": "10s" //健康检查间隔时间,每隔10s,调用一次上面的URL
}
}
"ID": "userServiceId", //服务id
"Name": "userService", //服务名
"Tags": [ //服务的tag,自定义,可以根据这个tag来区分同一个服务名的服务
"primary",
"v1"
],
"Address": "127.0.0.1",//服务注册到consul的IP,服务发现,发现的就是这个IP
"Port": 8000, //服务注册consul的PORT,发现的就是这个PORT
"EnableTagOverride": false,
"Check": { //健康检查部分
"DeregisterCriticalServiceAfter": "90m",
"HTTP": "http://www.baidu.com", //指定健康检查的URL,调用后只要返回20X,consul都认为是健康的
"Interval": "10s" //健康检查间隔时间,每隔10s,调用一次上面的URL
}
}
{
"service":{
"id": "jetty",
"name": "jetty",
"address": "192.168.1.200",
"port": 8080,
"tags": ["dev"],
"checks": [
{
"http": "http://192.168.1.200:8080/health",
"interval": "5s"
}]}}
"service":{
"id": "jetty",
"name": "jetty",
"address": "192.168.1.200",
"port": 8080,
"tags": ["dev"],
"checks": [
{
"http": "http://192.168.1.200:8080/health",
"interval": "5s"
}]}}
API 接口
地址: http://consul:8500/v1/agent/service/register
JAVA Client
<dependency>
<groupId>com.orbitz.consul</groupId>
<artifactId>consul-client</artifactId>
<version>0.12.3</version>
</dependency>
<groupId>com.orbitz.consul</groupId>
<artifactId>consul-client</artifactId>
<version>0.12.3</version>
</dependency>
Java代码
Check
script类型
scirpt check
{
"check": {
"id": "mem-util",
"name": "Memory utilization",
"script": "/usr/local/bin/check_mem.py",
"interval": "10s",
"timeout": "1s"
}
}
"check": {
"id": "mem-util",
"name": "Memory utilization",
"script": "/usr/local/bin/check_mem.py",
"interval": "10s",
"timeout": "1s"
}
}
HTTP check:
{
"check": {
"id": "api",
"name": "HTTP API on port 5000",
"http": "http://localhost:5000/health",
"interval": "10s",
"timeout": "1s"
}
}
"check": {
"id": "api",
"name": "HTTP API on port 5000",
"http": "http://localhost:5000/health",
"interval": "10s",
"timeout": "1s"
}
}
TCP check:
{
"check": {
"id": "ssh",
"name": "SSH TCP on port 22",
"tcp": "localhost:22",
"interval": "10s",
"timeout": "1s"
}
}
"check": {
"id": "ssh",
"name": "SSH TCP on port 22",
"tcp": "localhost:22",
"interval": "10s",
"timeout": "1s"
}
}
TTL类型
TTL check
{
"check": {
"id": "web-app",
"name": "WebApp Status",
"notes": "Webapp does a curl internally every 10 seconds",
"ttl": "30s"
}
}
"check": {
"id": "web-app",
"name": "WebApp Status",
"notes": "Webapp does a curl internally every 10 seconds",
"ttl": "30s"
}
}
服务发现
HTTP API
所有服务查询
http://127.0.0.1:8500/v1/agent/services
单个服务
http://127.0.0.1:8500/v1/agent/service/:service_id
DNS
dig @127.0.0.1 -p 8600 serviceName.service.consu
0 条评论
下一页