欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

配置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

创建一个测试环境

配置Nacos 线上测试环境隔离,解决不在同一局域网内调用问题

复制 Namespace id在你的项目中配置, application.yml 配置如下

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.88.44:8848
        namespace: 8527532d-20d6-48e3-9b53-508003892f44

这样你的测试环境和线上环境就隔离开了,消费者不会请求服务到test下的服务,图1是线上环境,图2是测试环境

配置Nacos 线上测试环境隔离,解决不在同一局域网内调用问题

配置Nacos 线上测试环境隔离,解决不在同一局域网内调用问题

刚才也看到,虽然环境的确个离开了,但是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

配置Nacos 线上测试环境隔离,解决不在同一局域网内调用问题

然后线上是 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的环境分离就到这里