• 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集群部署完成。登录格式:域名+/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文件有没有成功加载pml文件中配置的数据:

    idea----clean----install

    去看项目中target下的bootstrap有没有印上相应的值。

    五、发布测试环境

    打包成功后会在install中生成对应服务的jar包。

    把生成的jar包放到对应的服务器上。

    操作MobaXterm。

    先进入到对应的服务器,ps -ef| grep java 查看存活线程。

    找到对应的服务进入到对应目录下面。

     找到启动文件。cat查看启动文件。没有kill命令需要执行 kill -9 命令杀掉线程重新发布。 启动文件中可能会有$1 $2 这种参数,需注意。

    至此,nacos配置中心部署完成。

  • 相关阅读:
    天下没有不会这么回事!不会就学——北漂18年(28)
    Python Module_sys/random
    Python Module_sys/random
    redis 主从切换
    第一章 数据引用与匿名存储
    第12章 对象上
    zabbix 发送邮件配置
    第10章 包 名字空间,变量和函数
    perl 类 对象 方法
    perl数据结构输出 Data::Dumper
  • 原文地址:https://www.cnblogs.com/wmy666/p/15761866.html
Copyright © 2020-2023  润新知