腾讯云微服务引擎 TSE - Eureka 迁移方案
文档简介:
适用场景:
您在生产环境上已经使用了自建的 Eureka 集群,希望将其上已运行的服务迁移至腾讯云的 TSE 注册中心。TSE 提供 PolarisMesh (北极星)完全兼容 Eureka 注册中心。在功能完全对齐的基础上,TSE 北极星在性能上相比开源 Eureka 有突破性提升。
操作场景
您在生产环境上已经使用了自建的 Eureka 集群,希望将其上已运行的服务迁移至腾讯云的 TSE 注册中心。TSE 提供 PolarisMesh (北极星)完全兼容 Eureka 注册中心。在功能完全对齐的基础上,TSE 北极星在性能上相比开源 Eureka 有突破性提升。
本文将通过一个 Demo 应用,通过 spring-cloud-eureka-client 接入TSE PolarisMesh 的全流程操作演示,帮助您快速了解如何实现 Eureka 迁移。
前提条件
已创建 PolarisMesh 北极星网格,请参见 创建 PolarisMesh 治理中心。
下载 Github 的 demo 源码 到本地并解压。
本地编译构建打包机器环境已安装了Java JDK、Maven,并且能够访问 Maven 中央库。
根据您自身的业务,已准备好业务部署的资源,选择虚拟机部署或容器化部署其中一种方式即可:
虚拟机部署已创建 CVM 虚拟机,请参见 创建 CVM 虚拟机。
容器化部署已创建 TKE 容器集群,请参见 创建 TKE 集群。
操作步骤
1. 登录 TSE 控制台。
2. 在北极星网格下的 polarismesh 页面,单击页面左上方下拉列表,选择目标地域。
3. 单击目标引擎的“ID”,进入实例信息页面。
4. 查看访问地址,eureka-client 应用访问使用 eureka 端口(8761):

5. 修改 demo 中的注册中心地址
在下载到本地的 Demo 源码目录 下,分别找到 eureka/eureka-java/consumer/src/main/resources/application.yml和eureka/eureka-java/provider/src/main/resources/application.yml两个文件。
添加微服务引擎北极星网格地址到项目配置文件中(以eureka/eureka-java/consumer/src/main/resources/application.yml为例)。
eureka:client:serviceUrl:defaultZone: http://10.0.0.133:8761/eureka/
6. 打包 Demo 源码成 jar 包
6.1 在 eureka-java 源码根目录下,打开 cmd 命令,执行 mvn clean package 命令,对项目进行打包编译。
6.2 编译成功后,生成如下表所示的2个 Jar 包。
软件包所在目录
|
软件包名称
|
说明
|
\eureka-java\provider\target
|
eureka-provider-${version}-SNAPSHOT.jar
|
服务生产者
|
\eureka-java\consumer\target
|
eureka-consumer-${version}-SNAPSHOT.jar
|
服务消费者
|
7. 部署 provider 和 consumer 微服务应用,虚拟机部署方式、容器化部署或者本地运行,根据您业务实际的部署方式选择一种即可。
7.1 虚拟机部署方式部署 provider 和 consumer 微服务应用。
上传 Jar 包至 CVM 实例。
执行启动命令进行启动:
nohup java -jar [jar包名称] &
7.2 容器化部署方式部署 provider 和 consumer 微服务应用。
编写 dockerfile 生成镜像,参考:
FROM java:8ADD ./eureka-provider-${VERSION}.jar /root/app.jarENTRYPOINT ["java","-jar","/root/app.jar"]
通过 TKE 部署并运行镜像。
8. 确认服务注册结果。
8.1 进入前面提到的微北极星网格实例页面。
选择服务管理 > 服务列表,查看微服务 EUREKA-CONSUMER-SERVICE 和 EUREKA-PROVIDER-SERVICE 的实例数量:
若实例数量值不为0,则表示已经成功接入微服务引擎。
若实例数量为0,或者找不到具体服务的服务名,则表示微服务应用接入微服务引擎失败。


8.2 调用 consumer 的 HTTP 接口。执行 http 调用,其中${app.port}替换为 consumer 的监听端口(默认为20002),${add.address}则替换为 consumer 暴露的地址。
curl -L -X GET 'http://${add.address}:${app.port}/echo?value=hello_world''预期返回值:echo: hello_world