我们选择Spring initializer来创建项目框架
我这里使用的是JAVA17和Maven 3.5.3,请保证其相关环境变量配置正确,以便后续的使用
同时我选择使用Cloud Foundry Cli来将项目部署到BTP内,所以我安装了cf7的脚手架
我的BTP环境已经配置了域名innolab.oncloud.top,涉及url的地方请自行修改为您的域名
打开https://start.spring.io/,
Project选择Maven,Language选择Java,Spring Boot选择3.1.0,
Project MetaData分别为: Group=com.example, Artifact=eureka-server, name= eureka-server, Package Name= com.example.eureka-server
Packaging选择Jar, Java选择17
Dependencies添加Eureka Server

最后单击Generate,生成项目压缩包,然后在你的IDE中打开解压后的项目结构
首先需要在Java主类中配置Eureka server:进入项目根目录下的src\main\java\com\example\eurekaserver路径,打开EurekaServerApplication.java文件,
在import部分添加一行:
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
在@SpringBootApplication下添加一行:
@EnableEurekaServer

再进入项目根目录下的src\main\resources路径,打开application.properties文件,将其内容替换为:
server.port=8761
spring.application.name=eureka-server
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
然后我们在项目根目录下执行mvn spring-boot:run,然后浏览器打开http://localhost:8761/,通过检查Eureka的UI是否已打开来确认是否已部署好
打开https://start.spring.io/,
Project选择Maven,Language选择Java,Spring Boot选择3.1.0,
Project MetaData分别为: Group=com.example, Artifact=eureka-client, name= eureka-client, Package Name= com.example.eureka-client
Packaging选择Jar, Java选择17
Dependencies添加Eureka Server

最后单击Generate,生成项目压缩包,然后在你的IDE中打开解压后的项目结构
首先需要在Java主类中配置Eureka Client:进入项目根目录下的src\main\java\com\example\eurekaclient路径,打开EurekaClientApplication.java文件,
在import部分添加一行:
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
在@SpringBootApplication下添加一行:
@EnableDiscoveryClient

再进入项目根目录下的src\main\resources路径,打开application.properties文件,将其内容替换为:
spring.application.name=eureka-client
eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/
(这里的defaultZone代表了eureka服务端的地址)
接下来,我们先启动前文的eureka server,再启动这里的eureka client(mvn spring-boot:run),最后进入localhost:8761的eureka UI来查看服务是否已经到Eureka注册好

如果可以看到Eureka-Client则说明注册成功
我们现在已经在本地让两个服务运行并链接上了,但是要让其在云端也可以运行并链接还需要一些额外的步骤:
首先是application.properties部分,将其内容替换为:
在项目根目录新建一个manifest.yml文件,将其内容替换为:
---
applications:
- name: eureka-server-app
memory: 1024MB
host: eureka-server-app
path: target/eureka-server-0.0.1-SNAPSHOT.jar
buildpack: java_buildpack
env:
JBP_DEFAULT_OPEN_JDK_JRE: "{jre: {version: 17.+ }}"
(这里由于我使用的是JAVA 17,所以需要额外去选择buildpack和确定jre版本)
然后在eureka-server的根目录执行mvn clean package
再执行cf push
最后到BTP对应的space内找到该应用的URL,我这里是https://eureka-server-app.innolab.oncloud.top/,浏览器内打开该URL可以看到Eureka的UI
但是现在其他应用还无法和这个Eureka Server进行动态的互动,所以我们需要将这个Eureka Server的URL注册为一个User Provided Service以提供给其他应用使用:
cf cups eureka-userProvided -p '{"url": "https://eureka-server-app.innolab.oncloud.top/eureka/"}'
由于之前eureka客户端是在本地寻找localhost:8761来注册自己,而在云上肯定不能保持原样,所以我们首先将application.properties的内容替换为:
spring.application.name=eureka-client
eureka.instance.nonSecurePort=80
eureka.instance.hostName=eureka-client
eureka.client.service-url.defaultZone=${vcap.services.eureka-userProvided.credentials.url}
(这里客户端会从变量中动态抽取eureka服务端的地址,变量中的eureka-userProvided就是我们之前注册的user provided类型的服务,服务内蕴含了eureka服务端的地址)
再在项目根目录新建一个manifest.yml文件,将其内容替换为:
---
applications:
- name: eureka-client-app
memory: 1024MB
host: eureka-client-app
path: target/eureka-client-0.0.1-SNAPSHOT.jar
buildpack: java_buildpack
env:
spring.profiles.active: cloud
JBP_DEFAULT_OPEN_JDK_JRE: "{jre: {version: 17.+ }}"
services:
- eureka-userProvided
(这里在services部分需要依赖我们先前创建的user provided类型的服务)
最后在eureka-client的根目录执行mvn clean package
再执行cf push
然后浏览器中打开eureka-server的UI,如果一切顺利,会显示服务已经注册好


关于本文内容有任何问题或见解,欢迎在评论区留下你的想法
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 46 | |
| 40 | |
| 38 | |
| 35 | |
| 30 | |
| 28 | |
| 27 | |
| 24 | |
| 24 | |
| 22 |