06-Nacos配置管理
一、Nacos配置管理
Nacos除了可以做注册中心,同样可以做配置管理来使用
1.1、统一配置管理
- 当微服务部署的实例越来越多,达到数十上百的时候,诸葛修改微服务配置就会让人抓狂,而且很容易出错
- 这时候就需要一种统一配置管理方案,可以几种管理所有实例的配置
- Nacos一方面可以将配置集中管理,另一方面可以在配置变更的时候,及时通知微服务,实现配置的热更新
1.1.1、在Nacos中添加配置文件
-
①、Nacos中添加统一配置
-
②、在弹出的表单中,填写配置信息(这里扩展名使用
yaml
)-
配置内容如下
-
pattern: dateformat: yyyy-MM-dd HH:mm:ss
-
注意事项
- 项目的核心配置,需要热更新的配置才有放到Nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好;通常是一些偶尔会变动的参数
1.1.2、从微服务拉取配置
-
微服务要拉取Nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动
-
但是如果尚未读取application.yml文件,又如何得到Nacos地址呢?
-
因此Spring引入了一种新的配置文件
- bootstrap.yaml文件:会在application.yml之前被读取,流程如下所示
-
拉取配置步骤
-
①、在user-service服务中,引入nacos-config的客户端依赖
-
<!--nacos配置管理依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
-
-
②、添加bootstrap.yaml文件
-
内容如下所示
- 1)服务名为userservice(名字中间没有短横)
- 2)指定激活的配置dev
- 3)指定
spring.cloud.nacos.server-addr
的服务地址:localhost:8848
- 4)指定
spring.cloud.nacos.config.file-extension
配置文件的扩展名为yaml
-
spring: application: name: userservice # 服务名称,要与文件名一致 profiles: active: dev # 开发环境,这里是dev cloud: nacos: server-addr: localhost:8848 # Nacos地址 config: file-extension: yaml # 文件后缀名 namespace: 88335441-8805-441a-9964-3628d17634ac
-
注意事项
- 这里配置bootstrap.yaml的文件的时候,如果此时在Nacos中发布的配置文件不在默认的public命名空间下,这里还需要添加namespace配置
-
这里会根据
spring.cloud.nacos.server-addr
获取nacos地址 -
再根据
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
作为文件id,来读取配置 -
在本例中,就是去读取
userservice-dev.yaml
文件
-
-
③、去掉application.yml中相关重复的配置
-
# 指定服务的名称 # application: # name: userservice # nacos 配置 cloud: nacos: # server-addr: localhost:8848 discovery: cluster-name: GZ # 集群名称 namespace: 88335441-8805-441a-9964-3628d17634ac # 命名空间的ID
-
-
④、读取nacos配置
-
在user-service中的UserController中添加业务逻辑,读取
pattern.dateformat
配置 -
@Value("${pattern.dateformat}") private String dateformat; @GetMapping("/now") public String getDate() { return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat)); }
-
-
⑤、访问不同的服务页面,可以看到效果如下所示
-
注意事项
- 有时启动的时候失败,提示${pattern.dateformat}注入失败,可以尝试重启Nacos服务器
- 如果出现以下警告信息也可以忽略
Ignore the empty nacos configuration and get it based on dataId[userservice] & group[DEFAULT_GROUP]
1.2、配置热更新
- Nacos配置管理的最终目的,是修改Nacos中的配置后,微服务无需重启即可让配置生效,也就是配置热更新
- 要实现配置热更新,可以使用以下两种方式
1.2.1、方式一
- 在@Value注入的变量所在类上添加@RefreshScope注解
- 实现步骤
- 1、在UserController上添加@RefreshScope注解,这个注解会重新加载实例对象,并且使用新的配置
- 2、重新启动UserController让新的代码起作用
- 3、这时再修改配置管理中的配置
- 4、在浏览器输入访问地址,查看新的配置是否起作用
1.2.2、方式二
-
使用@ConfigurationProperties注解代替@Value注解
-
1、去掉UserController上的@RefreshScope注解和@Value注解
-
2、在user-service服务的config包中添加一个类
-
①、添加Component注解
-
②、添加@ConfigurationProperties(prefix="pattern")注解
-
③、添加String dateformat属性
-
package cn.coolman.user.config; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Data @Component @ConfigurationProperties(prefix = "pattern") public class PatternProperties { private String dateformat; }
-
-
PS:
-
如果出现如下的红色警告
-
在pom.xml文件中添加如下坐标即可
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> </dependency>
-
-
-
3、在UserController中使用这个类,并且使用@Autowired注入
-
4、UserController完整代码如下所示
-
package cn.coolman.user.web; import cn.coolman.user.config.PatternProperties; import cn.coolman.user.pojo.User; import cn.coolman.user.service.UserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @Slf4j @RestController @RequestMapping("/user") //@RefreshScope public class UserController { @Autowired private UserService userService; // @Value("${pattern.dateformat}") // private String dateformat; @Autowired private PatternProperties patternProperties; @GetMapping("/now") public String getDate() { log.info("============" + patternProperties); // return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat)); return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat())); } }
-
-
5、重启UserApplication微服务
-
6、再修改Nacos的配置
-
7、在浏览器查看效果
-
-
小结
- Nacos配置中心的作用
- 统一管理配置
- 支持配置热更新
- 配置多环节的配置环境
- 如何读取Nacos配置中心的内容
- 创建一个bootstrap.yaml的配置文件,编写服务的名称,激活的环境,后缀名
- 在Controller注入配置信息或者创建一个配置类专门读取配置文件
- 如何才能支持热更新
- 方式一
- @RefreshScope
- 方式二
- 创建一个单独配置类读取,使用@ConfigurationProperties读取
- 方式一
- Nacos配置中心的作用
1.3、配置共享
1.3.1、配置共享说明
- 应用场景
- 某个配置在开发、测试、生产环境中的配置是一样的,就可以使用共享配置
- 其实在微服务启动的时,会去Nacos读取多个配置文件,例如:
[spring.application.name]-[spring.profiles.active].yaml
:userservice-dev.yaml[spring.application.name].yaml
:userservice.yaml
- 而
[spring.application.name].yaml
不包含环境,因此可以被多个环境共享
1.3.2、测试配置共享
①、添加一个环境共享配置
-
在Nacos中添加一个userservice.yaml文件
-
pattern: envSharedValue: 大家一起共享!
-
-
这时候有两个配置文件存在
②、在user-service中读取共享配置
- 1)在user-service服务中,修改PatternProperties类,读取新添加的属性
- 2)在user-service服务中,修改UserController,添加一个方法,直接返回PatternProperties对象
③、运行两个UserApplication,使用不同的profile
- 1)修改bootstrap.yaml文件
- 2)修改UserApplication8082这个启动项,改变其profile值
- PS:这个test的profiles是不存在的
- 这样,UserApplication8081使用的profile是dev;UserApplication8082使用的profile是test
④、执行程序,查看运行结果
- 1)启动UserApplication8081和UserApplication8082
- 2)访问http://localhost:8081/user/prop
- 3)访问http://localhost:8082/user/prop
- 可以看出来,不管是dev,还是test环境,都读取到了envShareValue这个属性的值
1.3.3、配置共享的优先级
①、优先级说明
- 当Nacos、服务本地同时出现相同属性的时候,优先级有高低之分,如下图所示
②、演示
-
1)在PatternProperties中添加新的username属性
-
package cn.coolman.user.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Data @Component @ConfigurationProperties(prefix = "pattern") public class PatternProperties { private String dateformat; private String envSharedValue; private String username; }
-
-
2)在application.yml中添加新的username属性,查看浏览器运行效果
-
3)在Nacos配置管理中的userservice.yaml中添加新的username属性,查看浏览器运行效果
-
4)在userservie-dev.yml中添加新的username属性,查看浏览器运行效果
1.3.4、小结
- 如何才能共享信息给不同的环境去使用
- 创建一个以服务为名称的yaml文件,不需要指定具体的环境
- 配置文件的优先级
- 指定具体环境 > 共享环境 > 本地配置
1.4、搭建Nacos集群
1.4.1、集群结构图
-
官方给出的Nacos集群图如下所示
- SLB:负载均衡器,负责将我们的请求分发到不同的nacos节点
- 其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用Nginx
-
测试计划的集群结构如下所示
-
三个Nacos节点的地址
-
节点 实际服务器的IP地址 port nacos1 localhost 8845 nacos2 localhost 8846 nacos localhost 8847
-
1.4.2、搭建集群
①、初始化数据库
- Nacos默认数据存储在内嵌数据库Derby中,不属于生产可用的数据库
- 官方推荐的最佳实践是使用带有主从的高可用数据库集群,主从模式的高可用数据库可以参考之前的Mysql进阶分类随笔
- 在本次学习中,使用单点的数据库来学习
-
首先新建一个数据库,命名为
nacos_config
,这个表结构已经由官方提供了- PS:要使用mysql5.7以上的版本,5.5是运行不了的
-
CREATE DATABASE IF NOT EXISTS nacos; USE nacos; CREATE TABLE `config_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(255) DEFAULT NULL, `content` longtext NOT NULL COMMENT 'content', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', `app_name` varchar(128) DEFAULT NULL, `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', `c_desc` varchar(256) DEFAULT NULL, `c_use` varchar(64) DEFAULT NULL, `effect` varchar(64) DEFAULT NULL, `type` varchar(64) DEFAULT NULL, `c_schema` text, PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info'; /******************************************/ /* 数据库全名 = nacos */ /* 表名称 = config_info_aggr */ /******************************************/ CREATE TABLE `config_info_aggr` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(255) NOT NULL COMMENT 'group_id', `datum_id` varchar(255) NOT NULL COMMENT 'datum_id', `content` longtext NOT NULL COMMENT '内容', `gmt_modified` datetime NOT NULL COMMENT '修改时间', `app_name` varchar(128) DEFAULT NULL, `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段'; /******************************************/ /* 数据库全名 = nacos */ /* 表名称 = config_info_beta */ /******************************************/ CREATE TABLE `config_info_beta` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `content` longtext NOT NULL COMMENT 'content', `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta'; /******************************************/ /* 数据库全名 = nacos */ /* 表名称 = config_info_tag */ /******************************************/ CREATE TABLE `config_info_tag` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', `tag_id` varchar(128) NOT NULL COMMENT 'tag_id', `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `content` longtext NOT NULL COMMENT 'content', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag'; /******************************************/ /* 数据库全名 = nacos */ /* 表名称 = config_tags_relation */ /******************************************/ CREATE TABLE `config_tags_relation` ( `id` bigint(20) NOT NULL COMMENT 'id', `tag_name` varchar(128) NOT NULL COMMENT 'tag_name', `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', `nid` bigint(20) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`nid`), UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation'; /******************************************/ /* 数据库全名 = nacos */ /* 表名称 = group_capacity */ /******************************************/ CREATE TABLE `group_capacity` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群', `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值', `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_group_id` (`group_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表'; /******************************************/ /* 数据库全名 = nacos */ /* 表名称 = his_config_info */ /******************************************/ CREATE TABLE `his_config_info` ( `id` bigint(64) unsigned NOT NULL, `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `data_id` varchar(255) NOT NULL, `group_id` varchar(128) NOT NULL, `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `content` longtext NOT NULL, `md5` varchar(32) DEFAULT NULL, `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `src_user` text, `src_ip` varchar(50) DEFAULT NULL, `op_type` char(10) DEFAULT NULL, `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', PRIMARY KEY (`nid`), KEY `idx_gmt_create` (`gmt_create`), KEY `idx_gmt_modified` (`gmt_modified`), KEY `idx_did` (`data_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造'; /******************************************/ /* 数据库全名 = nacos */ /* 表名称 = tenant_capacity */ /******************************************/ CREATE TABLE `tenant_capacity` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID', `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数', `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表'; CREATE TABLE `tenant_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `kp` varchar(128) NOT NULL COMMENT 'kp', `tenant_id` varchar(128) default '' COMMENT 'tenant_id', `tenant_name` varchar(128) default '' COMMENT 'tenant_name', `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc', `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source', `gmt_create` bigint(20) NOT NULL COMMENT '创建时间', `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info'; CREATE TABLE `users` ( `username` varchar(50) NOT NULL PRIMARY KEY, `password` varchar(500) NOT NULL, `enabled` boolean NOT NULL ); CREATE TABLE `roles` ( `username` varchar(50) NOT NULL, `role` varchar(50) NOT NULL, UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE ); CREATE TABLE `permissions` ( `role` varchar(50) NOT NULL, `resource` varchar(255) NOT NULL, `action` varchar(8) NOT NULL, UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE ); INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE); INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
②、配置Nacos
-
1)创建一个目录名为:nacos-cluster
-
2)进入目录nacos-cluster目录,重新解压安装一份新的nacos
-
3)进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf
-
4)添加内容
-
127.0.0.1:8845 127.0.0.1:8846 127.0.0.1:8847
-
-
5)修改application.properties文件,修改数据库配置
-
### Default web server port: server.port=8845 #*************** Network Related Configurations ***************# ### If prefer hostname over ip for Nacos server addresses in cluster.conf: # nacos.inetutils.prefer-hostname-over-ip=false ### Specify local server's IP: nacos.inetutils.ip-address=127.0.0.1 #*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: spring.datasource.platform=mysql ### Count of DB: db.num=1 ### Connect URL of DB: # 数据库相关配置 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?serverTimezone=UTC db.user.0=root db.password.0=123
-
这里的数据库地址、用户名、密码根据自己的实际情况配置
-
③、启动
-
1)将Nacos该名称nacos1,并复制两份,分别命名为:nacos2、nacos3
-
2)然后分别修改三个文件夹中的application.properties(大约在21行)
-
nacos1
-
server.port=8845
-
-
nacos2
-
server.port=8846
-
-
nacos3
-
server.port=8847
-
-
-
3)打开三个cmd窗口,分别启动三个nacos节点,不需要带参数(因为默认是集群启动的方式,也可以双击cmd程序运行)
- 看到以下提示表示启动成功
INFO Nacos started successfully in cluster mode. use external storage
④、使用Nginx反向代理
-
1)将Nginx安装包解压到任意非中文目录下(可以自行到官网下载)
-
2)修改conf/nginx.conf文件,配置如下
-
upstream nacos-cluster { server 127.0.0.1:8845; server 127.0.0.1:8846; server 127.0.0.1:8847; } server { listen 80; server_name localhost; location /nacos { proxy_pass http://nacos-cluster; } }
-
可以直接粘贴到http元素的内部位置,不用删除以前的server配置
-
-
3)在命令行下输入:
start nginx.exe
启动nginx服务器,也可以双击运行,运行后查看任务管理器 -
4)在浏览器访问:http://localhost/nacos即可
-
5)查看
集群管理->节点列表
⑤、Java代码修改
-
1)修改userservice服务的bootstrap.yaml文件配置如下
-
spring: cloud: nacos: server-addr: localhost:80 # Nacos地址
-
-
2)重新启动UserApplication微服务
-
3)在nacos管理页面创建新的配置管理:userservice.yaml文件
-
4)在浏览器上访问,获取username属性的值
-
5)最后在mysql的nacos库的confi_info表中就会出现上面的配置信息
1.4.3、小结
- Nacos集群的作用
- 避免单机的nacos服务器宕机,导致服务注册与拉取都无法使用;集群也可以减轻单台nacos服务器的压力
- 实现nacos集群的方式
- ①、nacos集群数据共享是基于数据库实现的,需要先创建nacos数据库
- ②、修改配置文件
cluster.conf.example
修改为cluster.conf
- ③、同时配置
cluster.conf
文件中的集群的ip地址 - ④、修改
nacos.properties
文件,修改端口,指定本地ip地址,指定nacos集群使用的数据库信息 - ⑤、nginx集群nacos