配置Nacos 线上测试环境隔离,解决不在同一局域网内调用问题
程序员文章站
2022-05-16 21:00:59
...
naocs 默认注册的ip是服务所在局域网 IP ,在测试环境都要关闭线上的服务,防止调用时的负载均衡(172.26.225.161的消费服务访问192.168.16.56下的用户服务),这也太Low了,更何况线上服务总不能测试新功能去关闭
主要是用 Nacos namespace + Spring Boot Profile
Namespaces
创建一个测试环境
复制 Namespace id在你的项目中配置, application.yml 配置如下
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.88.44:8848
namespace: 8527532d-20d6-48e3-9b53-508003892f44
这样你的测试环境和线上环境就隔离开了,消费者不会请求服务到test下的服务,图1是线上环境,图2是测试环境
刚才也看到,虽然环境的确个离开了,但是application.yml配置的,每次上线部署都要去注释掉,不然服务就会注册到 test 环境下,免得麻烦我们配置 spring boot profile,把关于spring cloud的配置从 application.yml 分配到 application-dev.yml 和 application-prod.yml
# application-dev
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.88.44:8848
namespace: 8527532d-20d6-48e3-9b53-508003892f44
# application-prod
spring:
cloud:
nacos:
discovery:
server-addr: 47.38.88.44:8848
这时候需要配置下启动相关的参数,在 IDEA 下配置加载 dev 文件
Run --> Edit Configuration
然后线上是 jar 包程序修改下启动文件 --spring.profiles.active=prod
#!/bin/bash
#Program:
# this is start v1 application
# History:
# 2019/11/14 Lucas
echo Starting v1 application
nohup java -jar /usr/testAPP/jar/provider/provider-v1//target/provider-v1-2.0.1.RELEASE.jar --spring.profiles.active=prod &
这样就方便啦,下次打包部署就不用去管理这个配置了,Nacos的环境分离就到这里