我创建了两个Spring Boot应用程序,它们都将部署在Kubernetes集群中。其中一个应用程序将充当网关,因此使用Spring Cloud gateway作为依赖项。另外,我希望将服务发现与Spring Cloud Kubernetes集成,并且网关使用服务发现自动生成相应的路由。但是,当我公开运行在本地Minikube集群中的网关应用程序并调用第二个应用程序/服务时,我会得到一个503错误,其中包含以下消息:无法找到...-service的实例
目前我已经安装了以下内容:
我创建了一个带有两个子项目(网关和另一个服务)的Gradle项目。所有项目都将在本地构建/部署。默认服务帐户具有读取Kubernetes API的权限。在部署这些服务之后,我向外部公开网关服务。在网关服务中,我实现了一些endpoint,这些endpoint
一切似乎都工作了,但是当我用URI/serviceID
调用另一个服务时,我得到了503错误...
使用了以下Spring Cloud版本:spring-cloud-starter-kubernetes 1.0.1。release spring-cloud-starter-gateway 2.1.1
我的演示应用程序可以在https://github.com/nmaoez/spring-cloud-gateway-kubernetes获得,readme.md提供了在本地Minikube集群中部署这两个服务的步骤。此外,还显示了所有可用的endpoint。但交互部分是application.yaml和网关的应用程序类。
application.yaml:
spring:
application:
name: gateway-service
cloud:
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
management:
endpoints:
web:
exposure:
include: '*'
java prettyprint-override">@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class GatewayApplication {
@Autowired
RestTemplate restTemplate;
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("/")
@ResponseBody
public String hello() {
return "GatewayApplication says hello!";
}
@GetMapping("/test")
@ResponseBody
public String invokeTestService() {
List<ServiceInstance> testServiceInstances = this.discoveryClient.getInstances("test-service");
return restTemplate.getForObject(testServiceInstances.get(0).getUri(), String.class);
}
@GetMapping("/services")
public List<String> services() {
return this.discoveryClient.getServices();
}
@GetMapping("/services/{serviceId}")
public List<ServiceInstance> servicesById(@PathVariable("serviceId") String serviceId) {
return this.discoveryClient.getInstances(serviceId);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
在将gateway-service/application.yaml中的url-expression字段覆盖到
url-expression: "uri+'/'"
之后,在调用gateway-uri/另一个-service/
后得到了正确的响应。但我希望不要显式替换lb://serviceid
的默认值。我怎么能那么做?
我希望,如果我通过网关调用集群中的另一个服务,我会在应用程序的rest控制器中得到一个200响应和正确的答案。
您还必须将依赖项添加到spring-cloud-starter-kubernetes-ribbon
。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId>
<version>1.0.1.RELEASE</version>
</dependency>
然后它将不需要任何重写就可以工作,只需要spring.cloud.gateway.discovery.locator.enabled:true
我有ApacheTomcatWeb服务器,在这里我运行3-4JavaSpring和hibernate应用程序。但问题是,当有太多请求进入服务器时,服务器会给出内存不足错误或堆大小错误,最后由于服务器没有响应而导致站点关闭。有时还会出现连接错误或套接字错误。我希望我的服务器至少能处理2000个请求。 到现在为止,我用了很多方法来处理这个问题。 通过更改setenv中的大小来增加服务器的堆大小。sh文
我写了一个CLLocationManager ios应用程序。但是,我无法看到我的应用程序出现在位置服务中的设置在我的iPhone上。我需要在Xcode中的ios项目中设置plist中的特定值吗?提前感谢!
问题内容: 我有自己的域名,使用Go编写了Web服务。我正在使用内置的Go Web服务器,前面没有Nginx或Apache。 我想开始通过HTTPS服务,我意识到让我们加密即将成为实现此目的的途径。 任何人都可以共享配置在Linux服务器上运行的Go应用程序的整个设置过程吗? 问题答案: 这是使用我发现的Go and Let’s Encrypt证书对HTTPS服务器进行的最小自动设置: 有关aut
我有一个部署在Azure应用服务上的NodeJS应用程序。用38 MB的文件做一个帖子,我得到一个404错误,但是在引擎盖下有一个IIS问题 要设置“maxAllowedContentLength”,我必须编辑“web”。配置文件。 这是不好的,因为如果我在Azure Portal应用程序设置上做一些更改,那么我的本地版本的web应用程序将无法运行。“配置”与自动生成的文件冲突。 是否可以以其他方
我对将CPU密集型web应用部署到Azure应用程序服务实例很感兴趣。我找不到有关Azure应用程序服务的CPU使用率和/或限制的任何详细信息。我担心的是,如果不了解我的应用程序的CPU规格/限制,我就无法规划如何准确规划基于云的物理基础设施(使用Azure应用程序服务)。 我的应用程序将使用OpenCV计算机视觉库对数百/数千张高质量图像进行重图像处理、人脸检测和人脸识别。这自然是一个CPU密集
我有一个在Oracle Weblogic Server 11g上运行的Web应用程序。它使用应用服务器中定义的数据源连接到Oracle数据库(也是11g),其类为 神谕jdbc。xa。客户OracleXADataSource > 如果由于某种原因,数据库不存在,然后返回,则应用程序运行正常(在尝试访问数据库时出现异常,但这很好,然后可以在数据库返回时再次获得一些新连接) 但是,如果数据库在webl