Skip to content

Nacos部署

Nacos-x-config配置中心安装

配置中心区别于传统的配置信息分散到系统各个角落的方式,对系统中的配置文件进行集中统一管理,而不需要逐一对单个的服务器进行管理的服务,通过配置中心, 可以使得配置标准化、格式统一化,当配置信息发生变动时,修改实时生效,无需要重新重启服务器,就能够自动感知相应的变化,并将新的变化统一发送到相应程序上, 快速响应变化。本篇介绍nacos作为配置中心配置

1.1.1Nacos-x-config后台系统安装

shell
所需安装部署包
三方应用部署包:mysql-x.x.x.zip
非三方应用部署包:nacos-x-config-x.x.x.x.zip

1.1.2Nacos-x-config安装部署包

  1. 获取nacos-x-config-*.zip安装包。
  2. 上传至服务器相应目录,进行服务解压操作:
shell
unzip nacos-x-config-*.zip

部署包结构

3.执行脚本 配置中心服务,产品出厂提供初始化脚本:

1.1.3.配置修改

application.properties中配置相关参数:

properties
#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Default web server port:
server.port=38848
debugport=40848
#*************** Network Related Configurations ***************#
### If prefer hostname over ip for Nacos server addresses in cluster.conf:
# nacos.inetutils.prefer-hostname-over-ip=false
### Specify local server's IP:
# nacos.inetutils.ip-address=
#*************** Config Module Related Configurations ***************#
#*************** Database Configurations ***************#
#mybatis-plus log config
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
spring.application.name=nacos-x-config
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

application-sit.properties中配置相关参数

properties
#mysql
### If use external datasource:
spring.datasource.platform=mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.161.115:3306/ENS_NACOS?characterEncoding=utf-8&useSSL=false
#\u7528\u6765\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\u7684sql\uFF0C\u8981\u6C42\u662F\u4E00\u4E2A\u67E5\u8BE2\u8BED\u53E5,\u5982\u679CvalidationQuery\u4E3Anull\uFF0CtestOnBorrow\u3001testOnReturn\u3001testWhileIdle\u90FD\u4E0D\u4F1A\u5176\u4F5C\u7528
spring.datasource.druid.validation-query=SELECT 'X' 
spring.datasource.username=ENS_NACOS
spring.datasource.password=ENS_NACOS
#oracle
#spring.datasource.platform=oracle
#spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
#spring.datasource.url=jdbc:oracle:thin:@192.168.162.112:1521:DCITS
#spring.datasource.druid.validation-query=SELECT 'X' FROM DUAL
#spring.datasource.username=NACOS
#spring.datasource.password=NACOS
#postgresql
#spring.datasource.platform=postgresql
#spring.datasource.driver-class-name=org.postgresql.Driver
#spring.datasource.url=jdbc:postgresql://192.168.162.233:5432/nacos?currentSchema=nacos-x
#spring.datasource.druid.validation-query=SELECT 'X'
#spring.datasource.username=galaxy
#spring.datasource.password=galaxy
#\u521D\u59CB\u5316\u7269\u7406\u8FDE\u63A5\u4E2A\u6570
spring.datasource.druid.initial-size=10
#\u6700\u5C0F\u8FDE\u63A5\u6C60\u6570\u91CF
spring.datasource.druid.min-idle=10
#\u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
spring.datasource.druid.max-active=100
# \u914D\u7F6E\u83B7\u53D6\u8FDE\u63A5\u7B49\u5F85\u8D85\u65F6\u7684\u65F6\u95F4
spring.datasource.druid.max-wait=5000
# \u914D\u7F6E\u95F4\u9694\u591A\u4E45\u624D\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
spring.datasource.druid.time-between-eviction-runs-millis=60000
# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
spring.datasource.druid.min-evictable-idle-time-millis=300000
#\u7533\u8BF7\u8FDE\u63A5\u7684\u65F6\u5019\u68C0\u6D4B\uFF0C\u5982\u679C\u7A7A\u95F2\u65F6\u95F4\u5927\u4E8EimeBetweenEvictionRunsMillis\uFF0C\u6267\u884CvalidationQuery\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548
spring.datasource.druid.test-while-idle=true
#\u7533\u8BF7\u8FDE\u63A5\u65F6\u6267\u884CvalidationQuery\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\uFF0C\u505A\u4E86\u8FD9\u4E2A\u914D\u7F6E\u4F1A\u964D\u4F4E\u6027\u80FD
spring.datasource.druid.test-on-borrow=false
#\u5F52\u8FD8\u8FDE\u63A5\u65F6\u6267\u884CvalidationQuery\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\uFF0C\u505A\u4E86\u8FD9\u4E2A\u914D\u7F6E\u4F1A\u964D\u4F4E\u6027\u80FD
spring.datasource.druid.test-on-return=false
# \u901A\u8FC7connectProperties\u5C5E\u6027\u6765\u6253\u5F00mergeSql\u529F\u80FD\uFF1B\u6162SQL\u8BB0\u5F55
# \u5408\u5E76\u591A\u4E2ADruidDataSource\u7684\u76D1\u63A7\u6570\u636E
spring.datasource.druid.use-global-data-source-stat=false
# \u914D\u7F6E\u76D1\u63A7\u7EDF\u8BA1\u62E6\u622A\u7684filters\uFF0C\u53BB\u6389\u540E\u76D1\u63A7\u754C\u9762sql\u65E0\u6CD5\u7EDF\u8BA1\uFF0C'wall'\u7528\u4E8E\u9632\u706B\u5899
spring.datasource.druid.filters=stat
# \u6253\u5F00PSCache\uFF0C\u5E76\u4E14\u6307\u5B9A\u6BCF\u4E2A\u8FDE\u63A5\u4E0APSCache\u7684\u5927\u5C0F
spring.datasource.druid.pool-prepared-statements=true
#\u8981\u542F\u7528PSCache\uFF0C\u5FC5\u987B\u914D\u7F6E\u5927\u4E8E0\uFF0C\u5F53\u5927\u4E8E0\u65F6\uFF0CpoolPreparedStatements\u81EA\u52A8\u89E6\u53D1\u4FEE\u6539\u4E3Atrue
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
#\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\u6570\u4FDD\u6D3B
spring.datasource.druid.keep-alive=true
#\u4EE5\u4E0B\u4E3A\u57FA\u4E8Espring boot web\u7684\u5185\u5D4Cdruid\u76D1\u63A7\uFF0C\u82E5\u9700\u5F00\u542F\u8BF7\u5C06\u4E09\u4E2A\u503C\u5747\u7F6E\u4E3Atrue
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.allow=
spring.datasource.druid.web-stat-filter.enabled=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.mvc.static-path-pattern=/static/**
#********** Security Configurations **********#
security.oauth2.resource.enabled=true
security.oauth2.resource.check-token-uri=http://192.168.164.180:8085/oauth/check_token
security.oauth2.resource.white-list=/**,/doc.html,/swagger-resources,/v2/**,/webjars/**,/favicon.ico,/static/**,/v1/ns/distro/datums,/v1/ns/operator/cluster/state,/v1/core/cluster/report
security.oauth2.resource.get-white-list=/v1/console/namespaces,/config/v1/cs/configs

修改logback-spring.xml中的日志输出目录,与启动脚本指定目录保持一致

logback-spring.xml

start.sh

若需要jvm参数修改,在/bin/ vmoptions目录下可调整对应环境的JVM参数:

集群构建(可选):默认是单点启动,如果需构建集群化,增加集群配置文件cluster.conf

1.1.4.启动

进入服务的bin目录下,执行如下命令:

shell
./start.sh

详细启动脚本参数如下

1.1.5.检查服务

执行如下命令:

shell
ps -ef|grep nacos-x-config

1.2 管理端部署

1.2.1 上传管理端部署包

配置中心管理端部署包为:Aries-dist.zip;上传此管理端包至nginx的html目录下,进行解压操作;

nginx 配置如下:

  1. 进入nginx安装目录:
  2. 修改conf/nginx.conf中的内容,如果启动nginx时指定了其他的.conf文件,请修改对应的文件。
text
      server {
        listen       8190;
        server_name  192.168.233.20;
        root /usr/local/nginx/html/aries/aries-dist;
        client_max_body_size 500m;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
		
        location /nacos/config {
            proxy_pass http://192.168.233.22:38848;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_connect_timeout 300s;
            proxy_send_timeout 300s;
            proxy_read_timeout 300s;
        }
      }

1.2.2 重启nginx

进入nginx/sbin目录,执行启动命令:

shell
./nginx

或者执行重启命令:

shell
./nginx -s reload

校验nginx是否启动成功,执行命令:

shell
ps -aux | grep nginx

1.3 服务使用

1.3.1 添加SDK依赖

Nacos-x配置中心SDK集成使用时,首先集成对应的SDK依赖包。

   <dependency>
     <groupId>com.dcits.nacos</groupId>
     <artifactId>spring-cloud-starter-nacosx-config</artifactId>
     <version>${version}</version>
   </dependency>

1.3.2 添加nacos-x-config配置

修改对应服务的租户、环境配置。

spring:
  cloud:
    nacos:
      # 配置中心
      config:
        enabled: false #true开启配置中心,从配置中心中获取配置,false不使用配置中心
        server-addr: dcits.cbs.nacos.sit1:38848
        group: online-batch.sit.dc01
        tenantId: online-batch
        workspace: sit

2.nacos-x-register 安装

nacos-x-registry分为oracle和mysql两个版本,对应数据库和应用均为2套,安装方式一致,下面以oracle版本安装为例:

2.1 获取nacos-x-register.zip的安装包

2.2 上传安装包至~/app-run安装目录下执行如下命令:

unzip nacos-x-register.zip

2.2.1 部署包结构图如下:

img.png

2.3 修改配置(application.properties)

定义服务对外暴露端口、服务名称、鉴权等配置。

2.4 修改日志文件(logback-spring.xml)

日志输出目录,与启动脚本指定目录保持一致。

2.5 修改JVM参数

调整对应环境的JVM参数。

2.6 集群构建(可选)

注册中心默认是单点启动,如果需构建集群化,增加集群配置文件,cluster.conf。

2.7 启动与检查

进入服务的bin目录下,执行启动命令;启动脚本参数说明如下:

启动参数说明
./start.sh -p uat启动uat环境服务,添加-Dspring.profiles.active=uat
./start.sh -d 18900启动Debug远程调试,远程调试端口,可自定义
./start.sh -j 16545启动Jmx指标监控,Jmx监听端口,可自定义
./start.sh -c控制台启动,适合容器方式启动
./start.sh -p uat -d 18900 -c启动uat环境、Debug、控制启动
./start.sh -t galaxy启动赋值Galaxy租户参数,添加-Dgalaxy.tenantId=galaxy
./start.sh -z dc01启动赋值Galaxy数据中心,添加-Dgalaxy.dataCenter=dc01
./start.sh -w dev启动赋值Galaxy工作空间,添加-Dgalaxy.workspace=dev
./start.sh -l B_LUNIT_01启动赋值Galaxy逻辑单元,添加-Dgalaxy.logicUnitId=B_LUNIT_01
./start.sh -y B_PUNIT_01启动赋值Galaxy物理单元,添加-Dgalaxy.phyUnitId=B_PUNIT_01
./start.sh -r /home/user/logs启动修改日志存储根目录,主要是stdout.log、gc.log的输出目录。默认”/apps/logs“,可通过启动脚本-r参数进行重定义
./start.sh -m clusterNacos启动模式:集群 or 单机。(默认单机)

2.7.1 单机启动

./start.sh –p [环境] –r [日志输出目录],按需增加启动参数;例如: ./start.sh –p sit –r /apps/logs。

2.7.2 集群启动

./start.sh –p [环境] –r [日志输出目录] –m cluster,按需增加启动参数;例如: ./start.sh –p sit –r /apps/logs –m cluster。

2.7.3 检查

执行完启动脚本后,检查服务启动结果执行如下命令查询服务后台进程,存在相应进程表示服务启动成功。

ps -ef | grep nacos-x-register

2.7.4 查看服务

可通过单机版页面查询服务是否正常:http:{ip}:{port}/nacos/

2.8 使用nginx代理

2.8.1 修改conf/nginx.conf中新增内容

2.8.2 重新加载nginx.conf配置

进入nginx/sbin目录,执行启动命令。

./nginx -s reload

2.8.3 校验nginx是否启动成功

ps -aux | grep nginx

2.9 服务使用

2.9.1 添加SDK依赖

Nacos-x注册中心SDK集成使用时,首先集成对应的SDK依赖包。

   <dependency>
     <groupId>com.dcits.nacos</groupId>
     <artifactId>spring-cloud-starter-nacosx-discovery</artifactId>
     <version>${version}</version>
   </dependency>

2.9.2 添加nacos-x-register配置

修改对应服务的租户、环境配置。

spring:
  cloud:
    nacos:
      # 配置中心
      discovery:
        enabled: false 
        server-addr: dcits.cbs.nacos.sit1:8848
        group: online-batch.sit.dc01
        tenantId: online-batch
        workspace: sit

2.10 配置就近访问

2.10.1 网关配置

  • 目前 1230 版本存在问题,需要修改 Jupiter 中 LoadBalancerDefaultConfiguration 的源码,增加以下分支处理,如下图所示:

  • 网关数据库中表 load_balancer 中新增最小并发负载均衡策略:
sql
INSERT INTO load_balancer (`load_balancer_id`, `load_balancer_name`, `load_balancer_class`)
VALUES (3, '最小并发', 'com.alibaba.cloud.nacos.loadbalancer.NacosLoadBalancer');

2.10.2 业务微服务配置

在配置文件 application.yml 中新增以下配置:

yaml
jupiter:
  #本中心优先访问
  loadbalancer:
    register-config: true
    default-class-name: com.alibaba.cloud.nacos.loadbalancer.NacosLoadBalancerClientConfiguration