我正在使用spring、spring boot、eureka(用于服务发现)和ribbon开发一个微服务应用程序。
我的应用程序由三个服务组成:客户端、服务器和eureka服务器
客户端和服务器都在eureka服务器上注册,之后客户端使用eureka服务发现调用服务器。
我可以在本地运行应用程序,一切都很好。
但是当部署在aws上时,事情就会失控。
接下来的步骤
后果
使用ECS时
>
客户机和服务器可以在Eureka服务器上注册。
Application AMIs Availability Zones Status
HELLO-CLIENT n/a (1) (1) UP (1) - 3fcd1c92386d:hello-client:8071
HELLO-SERVER n/a (1) (1) UP (1) - 6a5d643b32e1:hello-server:8072
当点击客户端endpoint获取java时。网未知后异常。
Whitelabel Error Page
This application has no explicit mapping for /error,so you are seeing
this as a fallback.
Sun Sep 10 08:38:17 GMT 2017
There was an unexpected error (type=Internal Server Error, status=500).
I/O error on GET request for "http://hello-server/hello/server/":6a5d643b32e1;
nested exception is java.net.UnknownHostException:
6a5d643b32e1
使用Docker Swarm时
>
客户机和服务器可以在Eureka服务器上注册。
Application AMIs Availability Zones Status
HELLO-CLIENT n/a (1) (1) UP (1) - ip-10-255-0-5.ap-south-1.compute.internal:hello-client:8071
HELLO-SERVER n/a (1) (1) UP (1) - ip-10-255-0-6.ap-south-1.compute.internal:hello-server:8072
命中客户端终结点时,获取连接超时。
白标错误页
This application has no explicit mapping for /error, so you are seeing
this as a fallback.
Sun Sep 10 11:22:20 GMT 2017
There was an unexpected error (type=Internal Server Error, status=500).
I/O error on GET request for "http://hello-server/hello/server/":
Operation timed out (Connection timed out); nested exception is
java.net.ConnectException: Operation timed out (Connection timed out)
尤里卡构型
application.properties
--------
spring.application.name=eureka-server
server.port=8070
bootstrap.yml
--------
eureka:
client:
registerWithEureka: false
fetchRegistry: false
server:
waitTimeInMsWhenSyncEmpty: 0
service-url:
defaultZone: http://<Elastic IP of eureka server>:8070/eureka
服务器配置
application.properties
--------
spring.application.name=hello-server
server.port=8072
bootstrap.yml
--------
eureka:
client:
service-url:
defaultZone: http://<Elastic IP of eureka server>:8070/eureka
客户端配置
application.properties
--------
spring.application.name=hello-client
server.port=8071
bootstrap.yml
--------
eureka:
client:
service-url:
defaultZone: http://<Elastic IP of eureka server>:8070/eureka
Rest客户端配置
Resource.java
---------------------------------
@Autowired
RestTemplate restTemplate;
@GetMapping
@RequestMapping("/hello/client")
public String hello(){
String uri = "http://hello-server/hello/server/";
return restTemplate.getForObject(uri, String.class);
}
Config.java
----------------------------
@LoadBalanced
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
我能够解决这个问题。这里的问题是系统试图ping尤里卡客户端使用docker容器ID作为主机,系统无法解决。在微服务配置中,为所有服务设置eureka.instance.preferIp地址=true
。肯定会解决问题的。
pom.xml 主应用程序类 Application.Properties eureka客户端设置 pom.xml Application.Properties 我在eureka-server仪表板(http://localhost:8761)中没有看到向Eureka server注册的micro-service-currency-exchange-service 为什么eureka客户端没有注册
服务发现是基于微服务架构的关键原则之一。尝试配置每个客户端或某种形式的约定可能非常困难,可以非常脆弱。Netflix服务发现服务器和客户端是Eureka。可以将服务器配置和部署为高可用性,每个服务器将注册服务的状态复制到其他服务器。 如何包含Eureka客户端 要在您的项目中包含Eureka客户端,请使用组org.springframework.cloud和工件ID spring-cloud-st
我能够让eureka服务器以点对点模式运行。但我很好奇的一件事是如何让服务发现客户端注册到多个eureka服务器。 我的用例如下:<br>假设我有一个服务注册到其中一个eureka服务器(例如服务器a),并且该注册被复制到它的对等服务器。服务实际上指向服务器A。如果服务器A停机,客户机希望与服务器A续费,如果服务器A不再存在,续费如何工作。我是否需要同时向这两个服务器注册?如果不是,那么如果客户端
这是我使用PCF开发的第一个微服务。我创建了以下Eureka服务器应用程序。 以下是eureka服务器服务的属性 以下是eureka客户服务 以下是eureka客户端服务的属性 我已经在本地服务器上运行的PCF Dev实例上部署了微服务 当我运行服务器时 http://eureka-client.local.pcfdev.io/service-instances/eureka-client 当我试
我对docker,Spring框架的一切都很陌生…它们成功地在localhost环境中运行,现在我想把它们推送到docker中,但是总是给我错误,我在那里卡住了大约一周。有人能帮我弄清楚吗!!! 现在我有 eureka 服务器和云配置服务器服务,这是我的代码: 尤里卡服务器应用程序.yml 和 Dockerfile: 现在我有云配置服务器应用程序.yml:在这个文件中,我试图在github上备份它