- SpringCloud Alibaba Nacos服务注册和配置中心
- 一、Nacos介绍
- 二、Nacos 安装
- 三、Nacos 作为服务注册中心
- 四、Nacos 替换Config做服务配置中心
- 1. 基础配置
- 2. 分组配置
- 3. 命名空间
- 五、Nacos 集群和持久化配置
为什么叫Nacos?
前四个字母分别为Naming和Configuration的前俩个字母,最后一个s为Service。
Nacos是什么呢?
一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。Nacos:Dynamic Naming and Configuration Service。Nacos就是注册中心+配置中心的组合。等价于:Nacos = Eureka + Config + Bus
Nacos能干嘛?
- 替代Eureka做服务注册中心
- 替代Config做服务配置中心
去哪里下载?
Nacos中文官网
如何引用Nacos?
二、Nacos 安装com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
这里我采用的是docker安装
- 下载nacos镜像
docker pull nacos/nacos-server:1.1.4
- 运行下载的镜像
docker run -d -p 8848:8848 --env MODE=standalone --name nacos nacos/nacos-server:1.1.4
- 测试访问:ip地址:8848/nacos
- 首先我们需要知道,该引入什么样的依赖,根据官方文档可知,我们的父级项目引入依赖:
com.alibaba.cloud spring-cloud-alibaba-dependencies2.1.0.RELEASE pom import
- 创建子模块cloudalibaba-provider-payment9001
- POM添加Nacos依赖
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
- yml配置信息
server: port: 9001 spring: application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: 114.55.56.149:8848 # 配置Nacos地址 management: endpoints: web: exposure: include: "*"
- 主启动类
package com.atguigu.springcloud.alibaba; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class PaymentMain9001 { public static void main(String[] args){ SpringApplication.run(PaymentMain9001.class,args); } }
- 控制层
package com.atguigu.springcloud.alibaba.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class PaymentController { @Value("{server.port}") private String serverPort; @GetMapping(value = "/payment/nacos/{id}") public String getPayment(@PathVariable("id") Integer id){ return "nacos registry, serverPort: " + serverPort + "t id : " + id; } }
-
测试启动9001后,访问http://114.55.56.149:8848/nacos,发现出现了我们配置的服务名
-
复制9001创建9002子项目,启动后发现实例变为2
点开后详情如下:
服务提供者创建后,我们在创建服务的消费者cloudalibaba-consumer-nacos-order83 -
pom
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
- yml
server: port: 83 spring: application: name: nacos-order-consumer cloud: nacos: discovery: server-addr: 114.55.56.149:8848 # 配置Nacos地址 service-url: nacos-user-service: http://nacos-payment-provider
- 主启动类
package com.atguigu.springcloud.alibab; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @EnableDiscoveryClient @SpringBootApplication public class OrderNacosMain83 { public static void main(String[] args){ SpringApplication.run(OrderNacosMain83.class,args); } }
- RestTemplate类,用于负载均衡,因为Nacos也是支持负载均衡的,依赖中引入了Ribbon
package com.atguigu.springcloud.alibab.config; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
- 控制层
package com.atguigu.springcloud.alibab.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; @RestController @Slf4j public class OrderNacosController { @Resource private RestTemplate restTemplate; @Value("${service-url.nacos-user-service}") private String serverURL; @GetMapping(value = "/consumer/payment/nacos/{id}") public String paymentInfo(@PathVariable("id") Long id){ return restTemplate.getForObject(serverURL+"/payment/nacos/" + id,String.class); } }
- 测试,启动消费者83项目后我们查看服务注册列表如下:
浏览器访问地址localhost:83/consumer/payment/nacos/13,我们访问多次后,发现交替访问服务提供者9001和9002 ,实现了负载均衡。
Nacos支持AP和CP模式的切换
C是所有节点在同一时间看到的数据是一致的;而A的定义是所有的请求都会受到响应。
何时选择使用何种模式?
一般来说,如果不需要存储服务级别的信息且服务实例时通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如Spring cloud 和Dobbo服务,都是用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。
如果需要在服务级别编辑或者存储配置信息,那么CP是必须的,K8S服务和DNS服务则适用于CP模式。CP模式下则支持注册持久化实例,此时则是以Raft协议来集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不在,则会返回错误。
通过请求:
curl -X PUT '$NACOS-SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP’
关于CAP的详细介绍可以点击此处
四、Nacos 替换Config做服务配置中心 1. 基础配置- 创建子项目cloudalibaba-config-nacos-client:3377
- POM添加依赖
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-configcom.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
- 主启动类
package com.atguigu.springcloud.alibaba; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class NacosConfigClientMain3377 { public static void main(String[] args){ SpringApplication.run(NacosConfigClientMain3377.class,args); } }
- yml配置,本次有俩个yml文件
- application.yml:用于自己的独立的配置信息
spring: profiles: active: dev # 表示开发环境
2. bootstrap.yml:用于配置中心的公有的配置信息
server: port: 33877 spring: application: name: nacos-config-client cloud: nacos: discovery: server-addr: 114.55.56.149:8848 # 配置Nacos服务注册中心地址 config: server-addr: 114.55.56.149:8848 # 配置Nacos配置中心地址 file-extension: yaml # 指定yaml格式的配置
如何获取Nacos配置中心的配置呢?
官网给出来了一套公式: $ {spring.application.name} -$ {spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。
- spring.profile.active 即为当前环境对应的profile。当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}
- file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file.extension 来配置。目前支持properties和 yml 类型。
- 通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新。
本案例中配置翻译为:nacos-config-client-dev.yaml
如何在nacos服务中心添加远程配置呢?
- 登陆Nacos客户端,访问如下菜单. 填写我们的配置,点击发布
- 看到多处一行我们添加的配置信息
测试:配置好,启动3377模块,访问:http://localhost:3377/config/info,获取到了我们配置中心的配置信息。
我们编辑远程配置中心,将version改为2
没有重启3377的情况下再次访问:http://localhost:3377/config/info,发现获取到了最新的配置信息,实现了动态刷新!
多环境多项目管理所面临的的问题:
- 实际开发中,通常一个系统会准备dev开发环境,test测试环境,prod生产环境。如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?
- 一个大型分布式微服务系统会有很多微服务子项目,每个微服务项目又都会有相应的开发环境,测试环境,预发环境,正式环境…那怎么对这些微服务配置进行管理呢?
Nacos的图形化管理界面:
-
配置管理
-
命名空间
命名空间是由 Namespace + Group + Data ID 组成,这三者是什么关系呢,为什么这么组成呢?
- 类似Java里面的package名和类名,最外层的namespace是可以用于区分部署环境,Group和DataID逻辑上区分俩个目标对象
- 三者的情况为:
默认情况:Namespace=public,Group=DEFAULT_GROUP,默认Cluster是DEFAULT
Nacos默认的命名空间是public,Namespace主要用来实现隔离。比如说我们现在有三个环境:开发,测试,生产环境,我们就可以创建三个Namespace,不同的Namesapce之间是隔离的。
Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里去。
Service就是微服务;一个Service可以包含多个Cluster(集群),Nacos默认Cluster的DEFAULT,Cluster是对指定微服务的一个虚拟划分。比如说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ),给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。
最后就是Instance,就是微服务的实例。
根据 Namespace + Group + Data ID 我们可以实时的切换配置文件,比如我们再建一个远程配制文件:
然后我们修改application.yml文件信息:
无需重启的情况下即可获得我们新建的配置文件信息:
分组该如何用呢?
我们再次创建俩条Nacos配置文件,他们的Data ID相同,但是分组不相同
代码中如何确定我们需要加载Nacos中XX分组的配置信息呢?
只需要在配置信息中加入如下代码即可确定:
同样无需重启下即可获取到想要的分组下的配置信息。
Nacos中会有一个默认的命名空间public:
我们配置列表下的配置信息默认都是在该命名空间下的。现在我们创建俩个新的命名空间:
这时候我们在服务里列表下也多了俩个命名空间:
那么我们如何在代码配置中选择我们要加载的命名空间呢,我们需要到需要加载的命名空间的ID:
然后把命名空间的ID复制到配置文件中即可:
集群架构部署图:
默认Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持Mysql存储。
Nacos支持三种部署模式:
- 单机模式:用于测试和单机使用。
- 集群模式:用于生产环境,确保高可用。
- 多集群模式:用于多数据中心场景。
Nacos默认自带的是嵌入式数据库Derby。 如果我们做Nacos的集群,Nacos集群数据的统一性上就会有问题,所以我们需要切换Mysql。
本次使用docker做Nacos的集群,以及每台Nacos的数据库都配置同一台Mysql数据库。
- 拉取mysql镜像
docker pull mysql:5.7
- 运行mysql镜像
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql101 mysql:5.7
- 查看mysql容器运行状态
4. 使用Navicat连接数据库,做后续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 '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(20) 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'; 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='增加租户字段'; 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 '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(20) 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'; 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 '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(20) 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'; 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'; 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 '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_group_id` (`group_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表'; 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 '2010-05-05 00:00:00', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00', `src_user` text, `src_ip` varchar(20) 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='多租户改造'; 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 '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' 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 ); INSERT INTO users (username, password, enabled) VALUES ('nacos', 'a$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE); INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
- 拉取Nacos镜像
docker pull nacos/nacos-server:1.1.4
- 创建第一台Nacos容器并切换数据库为我们刚刚运行的mysql
docker run -d -e MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_MASTER_SERVICE_HOST=114.55.56.149 -e MYSQL_MASTER_SERVICE_PORT=3310 -e MYSQL_MASTER_SERVICE_USER=root -e MYSQL_MASTER_SERVICE_PASSWORD=123456 -e MYSQL_MASTER_SERVICE_DB_NAME=nacos -e MYSQL_SLAVE_SERVICE_HOST=114.55.56.149 -p 8849:8848 --name nacos002 nacos/nacos-server:1.1.4
- SPRING_DATASOURCE_PLATFORM 要切换的数据库类型。
- MYSQL_MASTER_SERVICE_HOST 要切换的数据库IP地址
- MYSQL_MASTER_SERVICE_DB_NAME 要切换的数据库名称
- MYSQL_SLAVE_SERVICE_HOST 也需要配置,因为通过查看nacos容器内的 config/application.properties 文件,会发现这此值未设置默认值,所以会导致启动报错,容器启动不起来,这里可以与主数据库一致。
- 启动另一台Nacos
docker run -d -e MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_MASTER_SERVICE_HOST=114.55.56.149 -e MYSQL_MASTER_SERVICE_PORT=3310 -e MYSQL_MASTER_SERVICE_USER=root -e MYSQL_MASTER_SERVICE_PASSWORD=123456 -e MYSQL_MASTER_SERVICE_DB_NAME=nacos -e MYSQL_SLAVE_SERVICE_HOST=114.55.56.149 -p 8850:8848 --name nacos003 nacos/nacos-server:1.1.4
- 查看下俩太Nacos 是否启动起来了
- 测试,访问8849,并创建配置test。
然后访问8850,发现可以加载到在8849创建的额test
以及查看我们的nacos数据库发现多了一条test数据:
即实现了Nacos集群以及使用同一台mysql数据库。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)