1. 官网
https://nacos.io/zh-cn/docs/quick-start.html
2. 下载Nacos
-
选择Naocs版本 1.4.2
- Linux版:nacos-server-1.4.2.tar.gz
- Windows版:nacos-server-1.4.2.zip
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. 创建数据库
- 创建数据库例如:nacos_config
- 进入文件夹:nacos -> conf 打开 nacos-mysql.sql 文件
- 将脚本复制到类似Navicat工具的执行窗口中,执行脚本,生成数据库表格。
5. 修改配置
5.1 数据库配置
-
进入文件夹:nacos -> conf 打开 application.properties 文件
-
找到: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
-
db.url.0:数据库相关信息只需要修改地址、端口、数据库名称
-
db.user.0:连接数据库的用户名
-
db.password.0:连接数据库的密码
-
5.2 启动参数配置
-
开发环境下进入文件夹 nacos -> bin 打开 startup.cmd(linux是startup.sh)设置启动模式,开发环境一般使用单机模式。
集群模式:set MODE="cluster"
单机模式:set MODE="standalone"
-
开发环境可以修改参数,节省资源,修改 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下启动
- 启动:进入文件夹 nacos -> bin 双击 startup.cmd 脚本
- 停止:进入文件夹 nacos -> bin 双击 shutdown.cmd 脚本
6.2 Linux下启动
- 启动:进入文件夹 nacos -> bin 执行startup.sh 脚本 -> ./startup.sh
- 停止:进入文件夹 nacos -> bin 执行shutdown.sh 脚本 -> ./shutdown.sh
6.3 登录Nacos
-
输入地址:http://ip:8848/nacos
-
IP:nacos安装的服务器地址
-
8848:默认端口为8848,可以在conf目录的 application.properties 文件中进行修改
-
默认登录的用户名密码
-
用户名:nacos
-
密码:nacos
-
7. Nacos开启鉴权
-
进入修改文件夹 nacos -> conf 修改 application.properties 配置文件
nacos.core.auth.enabled=false 修改为 nacos.core.auth.enabled=true
-
设置 nacos.core.auth.default.token.secret.key
-
设置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 配置文件
- 创建 bootstrap.yml 配置文件
- 将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用来划分配置范围的概念:
-
public(保留空间):Nacos的默认命名空间,不指定名称空间时,默认指定此空间
-
命名空间(namespace):最大的概念,用来区分环境,配置中心可以创建多个 命名空间
-
dev:开发环境
-
test:测试环境
-
pro:生成环境
-
-
分组(group):一个命名空间下可以范围多个组,一个组下可以有多个 Data Id
-
Data Id:对应 配置管理 -> 配置列表 中的文件,文件内容是具体的配置
-
可以通过指定 命名空间(namespace) -> 分组(group) -> Data Id 确定一个唯一的配置文件
-
大小关系:命名空间(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控制界面中的 集群管理 -> 节点列表 中查看详情