小编Blo*_*ock的帖子

使用REST API将Eureka用作注册表

几个月以来,我们一直在使用Eureka和我们的Spring Boot应用程序.我们已使用@DiscoveryClient注释启用了应用程序之间的服务查找.注册,续租和注销按预期进行.

最近,我们遇到了一个场景,我们有非Java应用程序组件(用C++编写),它暴露了我们的许多Spring Boot Java应用程序将使用的3个REST服务端点.我们正在尝试查看C++组件是否可以利用Eureka服务器的REST API在它出现时进行自我注册,以便Spring Boot Java应用程序可以通过Eureka执行常规查找以与C++组件保持联系.

既然不能用在C++组件(显然)尤里卡客户端,我开始测试直接的REST API(如描述在这里使用邮差).通过使用POST方法向http:// eurekaserver:8761/eureka/apps/FOO-APP(使用instanceId = 1111和hostName = foo-app)发送JSON有效负载,注册工作没有任何问题.我可以查询http:// eurekaserver:8761/eureka/apps,可以看到按预期在那里列出的FOO-APP.

但是,当我尝试使用DELETE方法取消操作到http:// eurekaserver:8761/eureka/apps/FOO-APP/1111http:// eurekaserver:8761/eureka/apps/FOO-APP/foo-app时,我收到404错误.

使用instanceId:

{
  "timestamp": 1447479397996,
  "status": 404,
  "error": "Not Found",
  "message": "Not Found",
  "path": "/eureka/apps/FOO-APP/1111"
}
Run Code Online (Sandbox Code Playgroud)

OR(hostName的结果相同):

{
  "timestamp": 1447479397996,
  "status": 404,
  "error": "Not Found",
  "message": "Not Found",
  "path": "/eureka/apps/FOO-APP/foo-app"
}
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的组合,但我无法完成这项工作.我有一种感觉,我错过了一些明显的东西 - 可能是一些小事.任何有关这方面的帮助将不胜感激.

PS: Eureka REST端点文档在URL中提到"v2".但是,这在我的情况下不起作用.注册(适用于我)不使用如上所述的"v2".如果有人可以验证这一点,那也会有所帮助.这似乎没有足够的材料.

java rest spring spring-cloud netflix-eureka

7
推荐指数
1
解决办法
2万
查看次数

在Spring Boot生态系统中发现Hazelcast实例

背景:

我们有一套约15个Spring Boot应用程序作为微服务.它们都作为Docker容器运行,并作为一个或多个实例的集群运行.我们还使用Eureka等Spring Cloud Netflix组件,并使用Feign/Ribbon从客户端发现正在运行的应用程序实例.

题:

作为POC练习的一部分,我们使用Redis和Hazelcast测试了缓存和Spring Boot配置存储.一切都使用Spring Boot,Spring Cloud和Redis/Hazelcast Java客户端库.但是,当我们在多节点对等集群中部署Hazelcast时,Hazelcast似乎需要一个"已知"IP地址/主机名,并且可访问端口在Java客户端的配置中可用(有或没有Spring).通常,当Hazelcast部署在临时VM实例(例如,EC2)上的多实例集群中时,IP地址和端口信息不可用.所以我们考虑了两种可能的解决方案

  1. 找到一种方法将Hazelcast作为Spring Boot应用程序运行,并将其作为Discovery Client注册到Eureka.这样,其他Spring Boot应用程序可以使用Eureka动态发现Hazelcast实例

  2. 在Hazelcast中找到一种方法,以便它可以将其IP地址和端口信息动态发布到中央Key/Value存储

如果有人玩过Hazelcast以便能够执行其中一种/两种可能的解决方案,那么如果您可以分享更多相关信息,那就太棒了.如果有第三种方法可以更好地工作,我也会渴望知道这一点.

hazelcast spring-boot netflix-eureka

6
推荐指数
0
解决办法
2314
查看次数

使用命名空间引用 Kubernetes Docker 注册表秘密

我拥有的

我在default命名空间中使用了 Kube secrets 进行私有 Docker 注册表身份验证。这按预期工作。例如:

$ kubectl get secret regsecret
NAME        TYPE                             DATA      AGE
regsecret   kubernetes.io/dockerconfigjson   1         30m
Run Code Online (Sandbox Code Playgroud)

在我的引用中deployment.yml,如下面的代码段所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    ...
    spec:
      containers:
      - name:  bootstrap-nginx
        image: quay.io/example/nginx:latest
      ...
      imagePullSecrets:
      - name: regsecret
Run Code Online (Sandbox Code Playgroud)

这是我的问题

例如,我需要regsecret在 a 中创建上述内容namepsacemyns如下所示:

$ kubectl get secret regsecret --namespace=myns
NAME        TYPE                             DATA      AGE
regsecret   kubernetes.io/dockerconfigjson   1         30m
Run Code Online (Sandbox Code Playgroud)

有了这个,我如何regsecretmyns命名空间引用到我的部署规范?如果我使用imagePullSecrets如上所示,它会失败说 …

kubernetes google-kubernetes-engine

5
推荐指数
1
解决办法
1411
查看次数