nacos1.4.2集成springboot

1. 官网

https://nacos.io/zh-cn/docs/quick-start.html

2. 下载Nacos

  1. 输入网址:https://github.com/alibaba/nacos

  2. 选择Naocs版本 1.4.2

3. 安装Nacos

3.1 Windows下安装

  • 解压到需要安装的文件夹下即为安装。

3.2 Linux下安装

  • 将Nacos的nacos-server-1.4.2.tar.gz 上传至需要安装的文件夹下并且使用 tar -zxvf nacos-server-1.4.2.tar.gz 命令解压即为安装。

4. 创建数据库

  1. 创建数据库例如:nacos_config
  2. 进入文件夹:nacos -> conf 打开 nacos-mysql.sql 文件
  3. 将脚本复制到类似Navicat工具的执行窗口中,执行脚本,生成数据库表格。

5. 修改配置

5.1 数据库配置

  1. 进入文件夹:nacos -> conf 打开 application.properties 文件

  2. 找到:Connect URL of DB:区域对应的数据库配置:

    #*************** Config Module Related Configurations ***************#
    ### If use MySQL as datasource:			指定数据库类型
    spring.datasource.platform=mysql     
    
    ### Count of DB:    连接的数据个数
    db.num=1
    
    ### Connect URL of DB:  数据库配置以 192.168.1.110 为例
    db.url.0=jdbc:mysql://192.168.1.110:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    db.user.0=root
    db.password.0=root
    
    1. db.url.0:数据库相关信息只需要修改地址、端口、数据库名称

    2. db.user.0:连接数据库的用户名

    3. db.password.0:连接数据库的密码

5.2 启动参数配置

  1. 开发环境下进入文件夹 nacos -> bin 打开 startup.cmd(linux是startup.sh)设置启动模式,开发环境一般使用单机模式。

    集群模式:set MODE="cluster"

    单机模式:set MODE="standalone"

  2. 开发环境可以修改参数,节省资源,修改 NACOS_JVM_OPTS 对应的参数

    单机模式:

    if %MODE% == "standalone" (
        echo "nacos is starting with standalone"
    	  set "NACOS_OPTS=-Dnacos.standalone=true"
        set "NACOS_JVM_OPTS=-Xms512m -Xmx512m -Xmn256m"
    )
    
    修改为:
    
    if %MODE% == "standalone" (
        echo "nacos is starting with standalone"
    	  set "NACOS_OPTS=-Dnacos.standalone=true"
        set "NACOS_JVM_OPTS=-Xms128m -Xmx128m -Xmn128m"
    )
    

    集群模式:

    if %MODE% == "cluster" (
        echo "nacos is starting with cluster"
    	  if %EMBEDDED_STORAGE% == "embedded" (
    	      set "NACOS_OPTS=-DembeddedStorage=true"
    	  )
    
        set "NACOS_JVM_OPTS=-server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%BASE_DIR%\logs\java_heapdump.hprof -XX:-UseLargePages"
    )
    
    可以根据需要调整-Xms、-Xmx、-Xmn、-XX:MetaspaceSize、-XX:MaxMetaspaceSize
    -Xms、-Xmx、-Xmn:参数设置一般为 2:2:1 比例
    
    if %MODE% == "cluster" (
        echo "nacos is starting with cluster"
    	  if %EMBEDDED_STORAGE% == "embedded" (
    	      set "NACOS_OPTS=-DembeddedStorage=true"
    	  )
    
        set "NACOS_JVM_OPTS=-server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%BASE_DIR%\logs\java_heapdump.hprof -XX:-UseLargePages"
    )
    

6. 启动和停止

6.1 Windows下启动

  1. 启动:进入文件夹 nacos -> bin 双击 startup.cmd 脚本
  2. 停止:进入文件夹 nacos -> bin 双击 shutdown.cmd 脚本

6.2 Linux下启动

  1. 启动:进入文件夹 nacos -> bin 执行startup.sh 脚本 -> ./startup.sh
  2. 停止:进入文件夹 nacos -> bin 执行shutdown.sh 脚本 -> ./shutdown.sh

6.3 登录Nacos

  • 输入地址:http://ip:8848/nacos

  • IP:nacos安装的服务器地址

  • 8848:默认端口为8848,可以在conf目录的 application.properties 文件中进行修改

  • 默认登录的用户名密码

    • 用户名:nacos

    • 密码:nacos

7. Nacos开启鉴权

  1. 进入修改文件夹 nacos -> conf 修改 application.properties 配置文件

    nacos.core.auth.enabled=false
    
    修改为
    
    nacos.core.auth.enabled=true
    
  2. 设置 nacos.core.auth.default.token.secret.key

  3. 设置nacos.core.auth.server.identity.key 和 nacos.core.auth.server.identity.value

8. Spring Boot 集成Nacos

8.1 maven坐标

  • 版本需要根据springcloud版本和springboot版本选择

  • spring cloud:Hoxton.SR11

  • spring boot:2.3.8.RELEASE

  • spring cloud alibaba:2.2.6.RELEASE

  • 版本管理

<!-- spring-cloud -->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-dependencies</artifactId>
	<version>Hoxton.SR11</version>
	<type>pom</type>
	<scope>import</scope>
</dependency>

<!-- spring-boot -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-dependencies</artifactId>
	<version>2.3.8.RELEASE</version>
	<type>pom</type>
	<scope>import</scope>
</dependency>

<!-- spring-cloud-alibaba -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-alibaba-dependencies</artifactId>
	<version>2.2.6.RELEASE</version>
	<type>pom</type>
	<scope>import</scope>
</dependency>
  • 需要使用到nacos服务
<!-- 服务注册 -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!-- nacos配置 -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

9. Nacos 做注册中心

9.1 maven坐标

<!-- 服务注册 -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

9.2 配置文件

spring:

  # nacos 配置
  cloud:
    nacos:

      # 注册中心
      discovery:
        server-addr: 192.168.1.110:8848                   # 注册中心地址 ip:port
        namespace: fd21153b-4920-473c-bd41-2966a36bf1a5   # 命名空间
        group: DEV_GROUP                                  # 分组
        username: nacos                                   # 用户名
        password: nacos                              # 密码

9.3 主启动类

  • 注册到nacos添加以下注解
@EnableDiscoveryClient
  • 调用其他服务提供的对外接口添加以下注解
@EnableFeignClients

9.4 服务列表

  • 启动springboot工程,登录到nacos管理界面,服务管理 -> 服务列表

  • 查询列表中显示已经注册到nacos中的服务

10. Nacos做配置中心

将配置文件放在配置中心管理可以实现配置文件共用,避免重复配置,方便维护。

10.1 maven坐标

<!-- nacos配置 -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

9.2 配置文件

  1. 创建 bootstrap.yml 配置文件
  2. 将nacos注册配置和nacos读取nacos配置中心的配置写在 bootstrap.yml文件中,application.yml 中只存储激活那种环境下的配置(开发、测试、生产)
  • bootstrap.yml
spring:

  # nacos 配置中心文件读取
  cloud:
    nacos:
      config:
        server-addr: 192.168.1.110:8848                   # 配置中心地址
        username: nacos                                   # 用户名
        password: nacos                              # 密码
        namespace: fd21153b-4920-473c-bd41-2966a36bf1a5   # 命名空间
        extension-configs: 
        
          # 读取多个配置文件,每个 - data-id 对应代码配置中心中的一个配置文件

          # produce-dev.yaml
          - data-id: produce-dev.yaml   # nacos中Data Id名称
            group: DEV_GROUP            # 配置文件所在的分组
            refresh: true               # 配置文件支持实时刷新
            
          # macos注册中心配置
          - data-id: nacos-dev.yaml
            group: DEV_GROUP
            refresh: true               

          # redis配置
          - data-id: redis-dev.yaml
            group: DEV_GROUP
            refresh: true

          # rocketmq 配置
          - data-id: rocketmq-dev.yaml
            group: DEV_GROUP
            refresh: true

          # minio 配置
          - data-id: minio-dev.yaml
            group: DEV_GROUP
            refresh: true
  • application.yml
spring:
  profiles:
    active: dev

11. public(保留空间)、命名空间(namespace)、分组(group)、Data Id

是Nacos用来划分配置范围的概念:

  1. public(保留空间):Nacos的默认命名空间,不指定名称空间时,默认指定此空间

  2. 命名空间(namespace):最大的概念,用来区分环境,配置中心可以创建多个 命名空间

    1. dev:开发环境

    2. test:测试环境

    3. pro:生成环境

  3. 分组(group):一个命名空间下可以范围多个组,一个组下可以有多个 Data Id

  4. Data Id:对应 配置管理 -> 配置列表 中的文件,文件内容是具体的配置

  5. 可以通过指定 命名空间(namespace) -> 分组(group) -> Data Id 确定一个唯一的配置文件

  6. 大小关系:命名空间(namespace) -> 分组(group) -> Data Id

例如:创建一个开发环境的命名空间,在开发环境下创建不同的分组,不同的分组下还可以创建不同的配置文件。

12. Nacos高可用

12.1 设置集群启动模式

  • 启动文件修改 startup.cmd 或者 startup.sh;所有节点nacos都需要修改
set MODE="cluster"

12.2 修改端口号

  • 根据需要修改 application.properties配置文件的端口号;需要节点都需要安装实际节点占用端口配置

    ### Default web server port:
    server.port=8848
    

12.3 配置集群文件 cluster.conf

  • 复制一份 cluster.conf.example 并且修改文件名为 cluster.conf

  • 设置其他所有nacos的ip和端口

    • 例如:配置本地三个nacos端口分别为7777、8888、9999;所有节点都需要配置
    127.0.0.1:7777
    127.0.0.1:8888
    127.0.0.1:9999
    
  • 启动所有nacos节点,集群搭建完成

  • 可以在nacos控制界面中的 集群管理 -> 节点列表 中查看详情

posted on 2023-05-29 09:32  秃头靓仔-001  阅读(343)  评论(0编辑  收藏  举报