Spirngboot实现Nacos作为配置中心
一、Nacos(Nacos官方文档)
Nacos是阿里旗下的一款开源软件,支持服务注册与发现、配置管理以及微服务管理的组件。Nacos的目标是为了取代过去常用的注册中心(Zookeeper、Eureka等),以及配置中心(Spring Cloud Config等)。Nacos集成了注册中心和配置中心的功能。
基于此,虽然是SpirngBoot项目,服务注册与发现用不上,但是可以使用Nacos配置中心的功能,对项目的配置文件进行动态管理。
二、nacos依赖
<!-- nacos配置中心依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
springcloud相关依赖如下:
<!-- spring-cloud-alibaba依赖库 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
注意:springcloud-alibaba依赖版本需和nacos版本对应。(版本对应关系)
附:
注册中心依赖如下:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
注意:查询资料时发现有如下问题:
SpringBoot项目bootstrap.yml配置文件不加载:
bootstrap.yml需要引入springcloud的包才会加载。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
<version>${spring-cloud-context.version}</version>
</dependency>
此问题我并没有遇到,如遇到此问题可按如上方式进行尝试解决。
三、Nacos搭建
1、Nacos下载。去到官网下载各个版本的压缩包。下载地址。我用的是1.4.2版本。最新版本目前为2.0.3。
本地:下载.zip文件解压到本地使用。Linux:下载.tar.gz文件部署到Linux环境解压使用。
如何启动Nacos服务查询官方文档。上面都有说明。
2、搭建测试环境集群。
首先建立三台测试服务器。如192.168.1.1,192.168.1.2, 192.168.1.3。
先将下载好的nacos-server-1.4.2.tar.gz文件上传到三台测试服务器上。
unzip nacos-server-1.3.0.zip 或者 tar -xvf nacos-server-1.3.0.tar.gz解压上传的压缩文件。
解压之后,进到conf文件夹下,有一个cluster.conf.example文件。可以cp cluster.conf.example cluster.conf将原文件备份保存,然后创建一个新的cluster.conf文件使用。
ps:此处如不做备份,则使用cluster.conf文件需要将原来的.example后缀删除使用.conf文件。
cat cluster.conf命令查看此文件,在此文件中,请每行配置成ip:port形式。如:
# ip:port
192.168.1.1:8848
192.168.1.2:8848
192.168.1.3:8848
3、启动服务器。
启动服务器之前还有一步操作,需要执行一个使用外置数据源的sql脚本,此脚本在下载的nacos压缩包中自带,直接建立数据库执行就好。
执行脚本结束后,需要修改conf文件夹下的application.properties配置文件。放开如下注释。
修改mysql数据库配置。
此时直接执行sh.startup.sh启动命令会报如下错误。
解决方案。用vi命令配置jdk。
此时配置添加完成,执行启动命令,执行成功。
4、相关配置。
下载下来的nacos默认此处为false。我们要将此处权限修改为true。如果为false则登录nacos时无需验证用户名和密码。
此处可以配置为false。nacos增长的日志太快,且有大部分是无效日志。如需要则打开。
修改nacos-logback.xml,将没用的日志注释掉,要不日志太多了。
<?xml version="1.0" encoding="UTF-8"?> <!-- ~ Copyright 1999-2018 Alibaba Group Holding Ltd. ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. --> <configuration scan="true" scanPeriod="10 seconds"> <springProperty scope="context" name="logPath" source="nacos.logs.path" defaultValue="${nacos.home}/logs"/> <property name="LOG_HOME" value="${logPath}"/> <appender name="cmdb-main" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${nacos.home}/logs/cmdb-main.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${nacos.home}/logs/cmdb-main.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="naming-server" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/naming-server.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/naming-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="async-naming-server" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>1024</queueSize> <neverBlock>true</neverBlock> <appender-ref ref="naming-server"/> </appender> <appender name="naming-raft" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/naming-raft.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/naming-raft.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="async-naming-raft" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>1024</queueSize> <neverBlock>true</neverBlock> <appender-ref ref="naming-raft"/> </appender> <appender name="naming-distro" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/naming-distro.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/naming-distro.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="async-naming-distro" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>1024</queueSize> <neverBlock>true</neverBlock> <appender-ref ref="naming-distro"/> </appender> <appender name="naming-event" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/naming-event.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/naming-event.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="async-naming-event" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>1024</queueSize> <neverBlock>true</neverBlock> <appender-ref ref="naming-event"/> </appender> <appender name="naming-push" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/naming-push.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/naming-push.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="naming-rt" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/naming-rt.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/naming-rt.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%msg%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="naming-performance" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/naming-performance.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/naming-performance.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <!--config module logback config--> <appender name="dumpFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/config-dump.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/config-dump.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="pullFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/config-pull.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/config-pull.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>20MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>128MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="fatalFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/config-fatal.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/config-fatal.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>20MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>128MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="memoryFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/config-memory.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/config-memory.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>20MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>128MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="pullCheckFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/config-pull-check.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/config-pull-check.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%msg%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="clientLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/config-client-request.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/config-client-request.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date|%msg%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="traceLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/config-trace.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/config-trace.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date|%msg%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="notifyLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/config-notify.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/config-notify.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="startLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/config-server.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/config-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="rootFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/nacos.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/nacos.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="nacos-address" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/nacos-address.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/nacos-address.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="istio-main" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/istio-main.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/istio-main.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="core-auth" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/core-auth.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/core-auth.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="protocol-raft" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/protocol-raft.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/protocol-raft.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="protocol-distro" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/protocol-distro.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/protocol-distro.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="nacos-cluster" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/nacos-cluster.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/nacos-cluster.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="alipay-jraft" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/alipay-jraft.log</file> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/alipay-jraft.log.%d{yyyy-MM-dd}.%i</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>512MB</totalSizeCap> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <Pattern>%date %level %msg%n%n</Pattern> <charset>UTF-8</charset> </encoder> </appender> <logger name="com.alibaba.nacos.address.main" additivity="false"> <level value="INFO"/> <appender-ref ref="nacos-address"/> </logger> <logger name="com.alibaba.nacos.cmdb.main" additivity="false"> <level value="INFO"/> <appender-ref ref="cmdb-main"/> </logger> <logger name="com.alibaba.nacos.naming.main" additivity="false"> <level value="INFO"/> <appender-ref ref="async-naming-server"/> </logger> <logger name="com.alibaba.nacos.naming.raft" additivity="false"> <level value="INFO"/> <appender-ref ref="async-naming-raft"/> </logger> <logger name="com.alibaba.nacos.naming.distro" additivity="false"> <level value="INFO"/> <appender-ref ref="async-naming-distro"/> </logger> <logger name="com.alibaba.nacos.naming.event" additivity="false"> <level value="INFO"/> <appender-ref ref="async-naming-event"/> </logger> <logger name="com.alibaba.nacos.naming.push" additivity="false"> <level value="INFO"/> <appender-ref ref="naming-push"/> </logger> <logger name="com.alibaba.nacos.naming.rt" additivity="false"> <level value="INFO"/> <appender-ref ref="naming-rt"/> </logger> <logger name="com.alibaba.nacos.naming.performance" additivity="false"> <level value="INFO"/> <appender-ref ref="naming-performance"/> </logger> <logger name="com.alibaba.nacos.config.dumpLog" additivity="false"> <level value="INFO"/> <appender-ref ref="dumpFile"/> </logger> <logger name="com.alibaba.nacos.config.pullLog" additivity="false"> <level value="INFO"/> <appender-ref ref="pullFile"/> </logger> <logger name="com.alibaba.nacos.config.pullCheckLog" additivity="false"> <level value="INFO"/> <appender-ref ref="pullCheckFile"/> </logger> <logger name="com.alibaba.nacos.config.fatal" additivity="false"> <level value="INFO"/> <appender-ref ref="fatalFile"/> </logger> <logger name="com.alibaba.nacos.config.monitorLog" additivity="false"> <level value="INFO"/> <appender-ref ref="memoryFile"/> </logger> <logger name="com.alibaba.nacos.config.clientLog" additivity="false"> <level value="info"/> <appender-ref ref="clientLog"/> </logger> <logger name="com.alibaba.nacos.config.notifyLog" additivity="false"> <level value="INFO"/> <appender-ref ref="notifyLog"/> </logger> <logger name="com.alibaba.nacos.config.traceLog" additivity="false"> <level value="info"/> <appender-ref ref="traceLog"/> </logger> <logger name="com.alibaba.nacos.config.startLog" additivity="false"> <level value="INFO"/> <appender-ref ref="startLog"/> </logger> <logger name="com.alibaba.nacos.istio.main" additivity="false"> <level value="DEBUG"/> <appender-ref ref="istio-main"/> </logger> <logger name="com.alibaba.nacos.core.auth" additivity="false"> <level value="DEBUG"/> <appender-ref ref="core-auth"/> </logger> <logger name="com.alibaba.nacos.core.protocol.raft" additivity="false"> <level value="INFO"/> <appender-ref ref="protocol-raft"/> </logger> <logger name="com.alipay.sofa.jraft" additivity="false"> <level value="INFO"/> <appender-ref ref="alipay-jraft"/> </logger> <logger name="com.alibaba.nacos.core.protocol.distro" additivity="false"> <level value="INFO"/> <appender-ref ref="protocol-distro"/> </logger> <logger name="com.alibaba.nacos.core.cluster" additivity="false"> <level value="INFO"/> <appender-ref ref="nacos-cluster"/> </logger> <springProfile name="standalone"> <logger name="org.springframework"> <appender-ref ref="CONSOLE"/> <level value="INFO"/> </logger> <logger name="org.apache.catalina.startup.DigesterFactory"> <appender-ref ref="CONSOLE"/> <level value="INFO"/> </logger> <logger name="org.apache.catalina.util.LifecycleBase"> <appender-ref ref="CONSOLE"/> <level value="ERROR"/> </logger> <logger name="org.apache.coyote.http11.Http11NioProtocol"> <appender-ref ref="CONSOLE"/> <level value="WARN"/> </logger> <logger name="org.apache.tomcat.util.net.NioSelectorPool"> <appender-ref ref="CONSOLE"/> <level value="WARN"/> </logger> </springProfile> <logger name="com.alibaba.nacos.core.listener.StartingApplicationListener"> <appender-ref ref="CONSOLE"/> <level value="INFO"/> </logger> <logger name="com.alibaba.nacos.common.notify.NotifyCenter"> <appender-ref ref="CONSOLE"/> <level value="INFO"/> </logger> <logger name="com.alibaba.nacos.sys.file.WatchFileCenter"> <appender-ref ref="CONSOLE"/> <level value="INFO"/> </logger> <logger name="com.alibaba.nacos.common.executor.ThreadPoolManager"> <appender-ref ref="CONSOLE"/> <level value="INFO"/> </logger> <root> <level value="INFO"/> <appender-ref ref="rootFile"/> </root> </configuration>
Nacos集群部署完成。登录格式:域名+/nacos 登录。管理员用户名密码默认都为nacos。进入可视化界面可进行修改。
ps:发现一篇讲解更详细的博文。戳。
四、代码配置
本项目结构如图。
在父依赖中配置profiles做环境区分。
<!--开发环境-->
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
<profileActiveNacosServerAddr>192.168.1.1:8848,192.168.1.2:8848,192.168.1.3:8848</profileActiveNacosServerAddr>
<profileNacosNameSpace>lmes-dev</profileNacosNameSpace>
<profileNacosConfigNameSpace>生成的namespaceid</profileNacosConfigNameSpace>
<profileNacosUsername>用户名</profileNacosUsername>
<profileNacosPassword>密码</profileNacosPassword>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
每个服务中需添加bootstrap.yml文件。
配置如下:
spring:
application: #微服务名称
name: lmes-agentmanagement
main:
allow-bean-definition-overriding: true -----不知道干啥的 之后有需要可进行分析
cloud:
nacos:
username: @profileNacosUsername@
password: @profileNacosPassword@
# nacos配置中心配置
config:
server-addr: @profileActiveNacosServerAddr@
file-extension: yml
group: @profileActive@
namespace: @profileNacosConfigNameSpace@
extension-configs:
- data-id: lmes-agentmanagement
group: @profileActive@
refresh: true
父依赖pom文件中还需要添加如下配置:
<build>
<resources>
<resource>
<filtering>true</filtering> ----- true表示文件中可以获取到pom文件中的配置。
<directory>src/main/resources</directory> -----作用域到这个文件夹下面的文件
<excludes>
<exclude>config/application*.yml</exclude> -----exclude排除某些文件 include包括某些文件
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>JAR</layout>
<finalName>${project.name}-server</finalName>
<outputDirectory>../install/servers/${project.artifactId}</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
检测bootstrap.yml文件有没有成功加载pom文件中配置的数据:
idea----clean----install
去看项目中target下的bootstrap有没有印上相应的值。
五、发布测试环境
打包成功后会在install中生成对应服务的jar包。
把生成的jar包放到对应的服务器上。
操作MobaXterm。
先进入到对应的服务器,ps -ef| grep java 查看存活线程。
找到对应的服务进入到对应目录下面。
找到启动文件。cat查看启动文件。没有kill命令需要执行 kill -9 命令杀掉线程重新发布。 启动文件中可能会有$1 $2 这种参数,需注意。
至此,nacos配置中心部署完成。