Nacos安装部署及与SpringCloud整合使用作为配置中心

一、Nacos安装部署

下载Nacos安装包:https://github.com/alibaba/nacos/releases

解压后目录结构如下:

启动脚本在bin目录下:

1、单机安装

windows下:

1
startup.cmd -m standalone

Linux下:

1
startup.sh -m standalone

下面以windows安装为例演示:

启动成功后,访问:http://127.0.0.1:8848/nacos/, 用户名/密码 默认:nacos/nacos

2、集群安装

以windows安装为例

将解压后的文件夹再复制2份,共3份,使用本地测试,本地IP为192.168.0.105,使用不同端口来区分

nacos-1: 192.168.0.105:8848
nacos-2: 192.168.0.105:8849
nacos-3: 192.168.0.105:8850

修改conf/cluster.conf(没有的话,新增一个)内容如下:

1
192.168.0.105:8848 192.168.0.105:8849 192.168.0.105:8850

nacos-1、nacos-2、nacos-3 都修改为以上内容;

新增mysql数据库:nacos,将conf/nacos-mysql.sql 脚本导入到nacos数据库中;

修改conf/application.properties配置文件(3个文件夹下server.port都相应调整下):

1
2
3
4
5
6
7
server.port=8848
spring.datasource.platform=mysql
db.num=1

db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=nacos
db.password=nacos

配置修改完成后,分别到nacos-1/bin, nacos-2/bin, nacos-3/bin 文件夹下,使用命令启动

1
startup.cmd -m cluster

集群启动成功后,可以在nacos后台查看:

二、与SpringCloud整合

新建maven项目:springcloud-nacos

添加依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

在bootstrap.yml(一定是bootstrap.yml文件,不是application.yml文件)文件配置以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
spring:
application:
name: nacos
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
prefix: nacos
profiles:
active: dev

在上面的配置中,配置了nacos config server的地址,配置的扩展名是ymal(目前仅支持ymal和properties)。注意是没有配置server.port的,sever.port的属性在nacos中配置。上面的配置是和Nacos中的dataId 的格式是对应的,nacos的完整格式如下:

1
${prefix}-${spring.profile.active}.${file-extension}

prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

进入Nacos Console,新建一个Data ID。

新建启动类如下:

1
2
3
4
5
6
7
8
9
10
11
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class NacosApplication {
public static void main(String[] args) {
SpringApplication.run(NacosApplication.class, args);
}
}

新建Controller,加上@RefreshScope注解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope
public class ConfigController {

@Value("${username}")
private String username;

@RequestMapping("username")
public String getConfig() {
return username;
}
}

启动NacosApplication ,从控制台可以看出,tomcat端口号从nacos中读取8081。

此时访问:http://127.0.0.1:8081/username,可以看到返回配置的内容:Jason,此时修改nacos中 username的值,会立即同步到应用中。


Nacos安装部署及与SpringCloud整合使用作为配置中心
https://river106.cn/posts/bf2eb98.html
作者
river106
发布于
2020年6月14日
许可协议