Eureka REST 相关接口


可供非 Java 应用程序使用的 Eureka REST 操作。

appID 是应用程序的名称,instanceID 是与实例关联的唯一标识符。在 AWS 云中,instanceID 是实例的实例 ID;在其他数据中心,它是实例的主机名。

对于 XML/JSON,HTTP 的 ACCEPT 类型以及提供的 content-type 必须分别包含 application/xmlapplication/json

操作 HTTP 动作 描述
注册新应用程序实例 POST /eureka/v2/apps/{appID} 输入: JSON/XML 负载 HTTP 状态码: 成功时返回 204
注销应用程序实例 DELETE /eureka/v2/apps/{appID}/{instanceID} HTTP 状态码: 成功时返回 200
发送应用程序实例心跳 PUT /eureka/v2/apps/{appID}/{instanceID} HTTP 状态码: * 成功时返回 200 * 如果 instanceID 不存在则返回 404
查询所有实例 GET /eureka/v2/apps HTTP 状态码: 成功时返回 200 输出: JSON/XML
查询特定 appID 的所有实例 GET /eureka/v2/apps/{appID} HTTP 状态码: 成功时返回 200 输出: JSON/XML
查询特定 appID/instanceID GET /eureka/v2/apps/{appID}/{instanceID} HTTP 状态码: 成功时返回 200 输出: JSON/XML
查询特定 instanceID GET /eureka/v2/instances/{instanceID} HTTP 状态码: 成功时返回 200 输出: JSON/XML
将实例移出服务 PUT /eureka/v2/apps/{appID}/{instanceID}/status?value=OUT_OF_SERVICE HTTP 状态码: * 成功时返回 200 * 失败时返回 500
将实例移回服务(移除覆盖状态) DELETE /eureka/v2/apps/{appID}/{instanceID}/status?value=UP HTTP 状态码: * 成功时返回 200 * 失败时返回 500 (value=UP 是可选的,它作为移除覆盖状态后回退状态的建议值)
更新元数据 PUT /eureka/v2/apps/{appID}/{instanceID}/metadata?key=value HTTP 状态码: * 成功时返回 200 * 失败时返回 500
查询特定 vip 地址下的所有实例 GET /eureka/v2/vips/{vipAddress} HTTP 状态码: * 成功时返回 200,输出:JSON/XML * 如果 vipAddress 不存在则返回 404
查询特定安全 vip 地址下的所有实例 GET /eureka/v2/svips/{svipAddress} HTTP 状态码: * 成功时返回 200,输出:JSON/XML * 如果 svipAddress 不存在则返回 404

注册 (REGISTER)

注册时,需要提交一个符合以下 XSD 的 XML(或 JSON)请求体:

json 复制代码
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Eureka Instance Registration",
  "type": "object",
  "required": [
    "hostName",
    "app",
    "ipAddr",
    "vipAddress",
    "secureVipAddress",
    "status",
    "securePort",
    "homePageUrl",
    "statusPageUrl",
    "healthCheckUrl",
    "dataCenterInfo"
  ],
  "properties": {
    "hostName": {
      "type": "string",
      "description": "在 EC2 中应为公共 DNS 名称(在 EC2 内部解析为私有 IP)"
    },
    "app": {
      "type": "string",
      "description": "应用程序名称 (appID)"
    },
    "ipAddr": {
      "type": "string",
      "description": "实例的 IP 地址"
    },
    "vipAddress": {
      "type": "string",
      "description": "虚拟 IP 地址"
    },
    "secureVipAddress": {
      "type": "string",
      "description": "安全虚拟 IP 地址"
    },
    "status": {
      "type": "string",
      "enum": ["UP", "DOWN", "STARTING", "OUT_OF_SERVICE", "UNKNOWN"],
      "description": "实例状态"
    },
    "port": {
      "type": "integer",
      "minimum": 1,
      "description": "服务端口(可选)"
    },
    "securePort": {
      "type": "integer",
      "minimum": 1,
      "description": "安全端口"
    },
    "homePageUrl": {
      "type": "string",
      "description": "主页 URL"
    },
    "statusPageUrl": {
      "type": "string",
      "description": "状态页 URL"
    },
    "healthCheckUrl": {
      "type": "string",
      "description": "健康检查 URL"
    },
    "dataCenterInfo": {
      "type": "object",
      "required": ["name"],
      "properties": {
        "name": {
          "type": "string",
          "enum": ["MyOwn", "Amazon"],
          "description": "数据中心名称"
        },
        "metadata": {
          "type": "object",
          "properties": {
            "ami-launch-index": {"type": "string"},
            "local-hostname": {"type": "string"},
            "availability-zone": {"type": "string"},
            "instance-id": {"type": "string"},
            "public-ipv4": {"type": "string"},
            "public-hostname": {"type": "string"},
            "ami-manifest-path": {"type": "string"},
            "local-ipv4": {"type": "string"},
            "hostname": {"type": "string"},
            "ami-id": {"type": "string"},
            "instance-type": {"type": "string"}
          },
          "description": "仅当 name 为 Amazon 时需要 AWS 元数据",
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "leaseInfo": {
      "type": "object",
      "properties": {
        "evictionDurationInSecs": {
          "type": "integer",
          "minimum": 1,
          "description": "租约驱逐时间(秒),默认为 90 秒(可选)"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "description": "应用特定的键值对元数据(可选)",
      "additionalProperties": {
        "type": ["string", "number", "boolean", "null"]
      }
    }
  },
  "additionalProperties": false
}

续约 (RENEW)

示例: PUT /eureka/v2/apps/MYAPP/i-6589ef6

响应:

• 状态码: 200 (成功)

• 状态码: 404 (Eureka 不认识该实例,请先注册)

• 状态码: 500 (失败)

注销 (CANCEL)

(如果 Eureka 在 evictionDurationInSecs(驱逐持续时间)内未收到服务节点的心跳,则该节点将自动注销)

示例: DELETE /eureka/v2/apps/MYAPP/i-6589ef6

响应:

• 状态码: 200 (成功)

• 状态码: 500 (失败)


相关推荐
Dontla2 天前
Dockerfile解析器指令(Parser Directive)指定语法版本,如:# syntax=docker/dockerfile:1
java·docker·eureka
Dxy12393102163 天前
Docker常用命令详解
docker·容器·eureka
wp90903 天前
Docker命令大全
docker·云原生·eureka
傻傻虎虎3 天前
【CentOS7】docker安装成功后测试,报Unable to find image ‘hello-world:latest‘ locally
docker·容器·eureka
惜.己3 天前
Docker启动失败 Failed to start Docker Application Container Engine.
spring cloud·docker·eureka
敲上瘾6 天前
Docker 容器核心指令与数据库容器化实践
linux·运维·服务器·docker·容器·eureka·dubbo
奋斗的老史6 天前
25年Docker镜像无法下载的四种对策
docker·容器·eureka
小马爱打代码6 天前
Spring Cloud Eureka 核心原理
spring cloud·eureka
小薛博客7 天前
12、Docker基本概念 容器与镜像与安装
docker·容器·eureka
雨中来客8 天前
解决Docker运行hello-world镜像报错问题
docker·eureka