使用华为云 spring cloud engine 引擎 用户详细操作指南.
若您没有 华为云 账号,请在注册界面, 注册自己的华为云账号
选择并点击 微服务引擎 > 立即使用
点击 购买微服务引擎, 选择 SpringCloud引擎专享版
进入 引擎列表 ,查看创建的引擎. ps: 高可用引擎 创建时间大约为 20 分钟, 请耐心等待...
spring cloud 引擎 暂时仅支持同 VPC下 虚拟机或者 CCE 集群访问
- 创建
同VPC
下虚拟机 或者CCE 集群. - 复制以下 服务注册发现地址 , 拼接 /eureka .. 如下图eureka地址为: https://192.168.0.57:30115/eureka/
eureka:
client:
serviceUrl:
defaultZone: https://192.168.0.57:30115/eureka/ # 这里替换成自己spring cloud 引擎的服务地址
fetch-registry: false
instance:
prefer-ip-address: true
- 为了正常使用https接入 eureka 服务中心. 需要增加以下 配置. 示例项目 demo-engine-provider:
@Configuration
public class WebConfiguration {
@Bean
public SSLContext sslContext() throws Exception {
SSLContext context = SSLContext.getInstance("SSL");
TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s)
throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s)
throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
context.init(null, new TrustManager[] {trustManager}, null);
return context;
}
//参数可以正常适配
@Bean
public DiscoveryClientOptionalArgs discoveryClientOptionalArgs(SSLContext sslContext) {
DiscoveryClientOptionalArgs args = new DiscoveryClientOptionalArgs();
EurekaJerseyClientBuilder builder = new EurekaJerseyClientBuilder();
builder.withClientName("HW-Eureka-PROVIDER")
.withMaxTotalConnections(10)
.withMaxConnectionsPerHost(10)
.withCustomSSL(sslContext)
.withHostnameVerifier((s, sslSession) -> true);
args.setEurekaJerseyClient(builder.build());
return args;
}
}
- 为了正常使用 https 接入config server,需要增加以下配置. 示例项目: demo-config
1 . pom文件增加 httpclient 依赖
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.7</version>
</dependency>
2 . 增加全局配置 WebConfiguration
@Configuration
public class WebConfiguration {
@Bean
public SSLContext sslContext() throws Exception {
SSLContext context = SSLContext.getInstance("SSL");
TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s)
throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s)
throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
context.init(null, new TrustManager[]{trustManager}, null);
return context;
}
@Bean
public ConfigServicePropertySourceLocator configServicePropertySourceLocator(SSLContext sslContext, ConfigClientProperties configClientProperties) {
ConfigServicePropertySourceLocator configServicePropertySourceLocator = new ConfigServicePropertySourceLocator(configClientProperties);
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, (s, sslSession) -> true);
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(csf)
.setSSLHostnameVerifier((s, sslSession) -> true)
.build();
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
RestTemplate restTemplate = new RestTemplate(requestFactory);
configServicePropertySourceLocator.setRestTemplate(restTemplate);
return configServicePropertySourceLocator;
}
}
3 . resources/META-INF 文件夹增加 spring.factories 文件
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.huawei.democonfig.config.WebConfiguration
4 . 修改 bootstrap.yaml 文件
server:
port: 8991
spring:
application:
name: config-client-only
cloud:
config:
label: master
profile: dev
uri: http://localhost:8888/ # config server uri . 该地址可以从下图中查找
name: name
- 通过服务发现的方式 使用config server. 需要做以下配置. 示例项目: demo-config-eureka
1 . pom文件增加 httpclient 依赖
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.7</version>
</dependency>
2 . 增加全局配置 WebConfiguration
@Configuration
public class WebConfiguration {
@Bean
public SSLContext sslContext() throws Exception {
SSLContext context = SSLContext.getInstance("SSL");
TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s)
throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s)
throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
context.init(null, new TrustManager[]{trustManager}, null);
return context;
}
@Bean
public DiscoveryClientOptionalArgs discoveryClientOptionalArgs(SSLContext sslContext) {
DiscoveryClientOptionalArgs args = new DiscoveryClientOptionalArgs();
EurekaJerseyClientBuilder builder = new EurekaJerseyClientBuilder();
builder.withClientName("HW-Eureka-PROVIDER")
.withMaxTotalConnections(10)
.withMaxConnectionsPerHost(10)
.withCustomSSL(sslContext)
.withHostnameVerifier((s, sslSession) -> true);
args.setEurekaJerseyClient(builder.build());
return args;
}
@Bean
public ConfigServicePropertySourceLocator configServicePropertySourceLocator(SSLContext sslContext, ConfigClientProperties configClientProperties) {
ConfigServicePropertySourceLocator configServicePropertySourceLocator = new ConfigServicePropertySourceLocator(configClientProperties);
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, (s, sslSession) -> true);
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(csf)
.setSSLHostnameVerifier((s, sslSession) -> true)
.build();
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
RestTemplate restTemplate = new RestTemplate(requestFactory);
configServicePropertySourceLocator.setRestTemplate(restTemplate);
return configServicePropertySourceLocator;
}
}
3 . resources/META-INF 文件夹增加 spring.factories 文件
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.configserver.democonfigeureka.config.WebConfiguration
4 . 修改 bootstrap.yaml 文件
spring:
application:
name: rkd-config-client
cloud:
config:
discovery:
enabled: true
service-id: CONFIGSERVER #config server 在服务中心的服务名称
profile: dev
name: foo
label: master
eureka:
client:
service-url:
defaultZone: https://192.168.0.99:30115/eureka/ # spring cloud 引擎的服务中心地址
fetch-registry: true
register-with-eureka: false
点击进入 引擎详细配置, 可以查看基本配置和服务中心的连接地址.
进入微服务引擎服务目录, 可以查看注册到该 引擎的所有应用
点击 全局配置, 可以查看到当前springcloud 引擎 连接的 config server 中的 全局配置, 默认展示 "dev,test.local" 三个 profile的全局配置. 要想查看 自定义 profile的全局配置, 可以自行搜索.
点击某个应用, 可以进入该应用的详情界面
点击应用配置 , 查看该应用从 config server 拉取的详细配置. 默认显示的是 master 分支该应用的配置. 要查看其他自定义分支的配置, 可以自行搜索.