springcloud入门——Nacos服务配置及集群

本文详细介绍了如何搭建和使用Nacos作为微服务配置中心,包括基础配置服务中心的建立,Nacos界面配置的多环境管理,以及Nacos集群的部署模式,如单机、集群和多集群。通过Namespace、Group和DataID实现配置隔离和环境区分,并提供了实际操作步骤和配置示例。
摘要由CSDN通过智能技术生成

目录

1.基础配置服务中心

2.Nacos界面配置

3.Nacos集群

1.基础配置服务中心

新建cloudalibaba-config-nacos-client3377,修改pom文件:

Nacos为了同springcloud-config无缝迁移,需要两个yml文件。且在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。

springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

bootstrap.yml,存放全局信息:

application.yml存放自己的:

主启动类及控制类:

接下来,我们需要在nacos添加配置信息,其配置规则如下:

本例中如下:

设置页面如下:

新建成功。测试访问:http://localhost:3377/config/info

且Nacos直接支持自动刷新。

2.Nacos界面配置

问题 - 多环境多项目管理

实际开发中,通常一个系统会准备dev开发环境、test测试环境、prod生产环境。

如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?

一个大型分布式微服务系统会有很多微服务子项目,每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境…那怎么对这些微服务配置进行管理呢?

Namespace+Group+Data lD三者关系:

类似Java里面的package名和类名最外层的namespace是可以用于区分部署环境的,Group和DatalD逻辑上区分两个目标对象。

默认情况:Namespace=public,Group=DEFAULT_GROUP,默认Cluster是DEFAULT

Namespace主要用来实现隔离。比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。

Group可以把不同的微服务划分到同一个分组里面去Service就是微服务:一个Service可以包含多个Cluster (集群)。

Cluster是对指定微服务的一个虚拟划分。比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ) ,给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。

最后是Instance,就是微服务的实例。

DataID:

我们可以通过指定spring.profile.active和配置文件的DatalD来使不同环境下读取不同的配置。

新建test环境下的配置文件,指定dataid为 nacos-config-client-test.yaml:

修改我们的yml文件,启用测试环境:

进行测试,访问成功。

Group分组方案:

通过Group实现环境区分 - 新建Group。

我们在Nacos新建两个配置文件,相同名字分属不同分组:

修改我们的boopstrap.yml和application.yml文件,启用分组和INFO环境:

测试,访问配置文件nacos-config-client-info.yaml文件配置信息成功。

Namespace空间方案:

我们新建两个命名空间:

修改我们的boopstrap.yml文件,启用命名空间:

3.Nacos集群

Nacos支持三种部署模式:

  • 单机模式-用于测试和单机试用。
  • 集群模式-用于生产环境,确保高可用。
  • 多集群模式-用于多数据中心场景。

以下是官网的集群架构图:

实际搭建情况如下:

默认Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。

单机模式支持mysql:

nacos增加了支持mysql数据源能力,具体的操作步骤:

  • 安装数据库,版本要求:5.6.5+
  • 初始化mysq数据库,数据库初始化文件: conf/nacos-mysql.sql
  • 修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=roo
db.password=root

再以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql。

集群配置:

配置3台nacos集器的不同服务端口号,设置3个端口:

复制出cluster.conf

注意,这个IP不能写127.0.0.1,必须是Linux命令hostname -i能够识别的IP。

编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口:

平时单机版的启动,都是./startup.sh即可

但是,集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。

执行方式 - startup.sh - p 端口号

Nginx的配置,由它作为负载均衡器

修改nginx的配置文件 - nginx.conf

修改内容

按照指定启动

截止到此处,1个Nginx+3个nacos注册中心+1个mysql配置完毕

测试:

启动3个nacos注册中心 startup.sh - p 端口号

查看nacos进程启动数ps -ef | grep nacos | grep -v grep | wc -l

启动nginx

./nginx -c /usr/local/nginx/conf/nginx.conf

查看nginx进程ps - ef| grep nginx

测试通过nginx访问nacos - http://192.168.111.144:1111/nacos/#/login

微服务入驻:

结果:

总结:

要在Spring Cloud项目中使用Nacos配置MySQL,你需要进行以下步骤: 1. 如果项目的 Boot版本小于2.4.0,需要在项目中创建`bootstrap.properties`文件,并在该文件中添加Nacos配置信息,包括Nacos的地址、配置文件名、文件扩展名、用户名和密码。例如: ``` spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.name=nacos-datasource spring.cloud.nacos.config.file-extension=yaml spring.cloud.nacos.config.username=nacos spring.cloud.nacos.config.password=nacos ``` 这些配置将被用于从Nacos获取MySQL的配置信息。 2. 接下来,在项目的`application.properties`文件中添加Nacos服务发现配置,包括Nacos的地址、用户名和密码。例如: ``` spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.username=nacos spring.cloud.nacos.discovery.password=nacos ``` 这些配置将被用于在Spring Cloud中启用Nacos服务发现功能。 3. 最后,在`application.properties`文件中添加MySQL的配置信息,包括数据库连接URL、用户名和密码。例如: ``` # db mysql spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=1234 ``` 这些配置将被用于连接MySQL数据库。 完成上述步骤后,你的Spring Cloud项目将能够通过Nacos获取MySQL的配置信息并连接到MySQL数据库。记得启动Nacos,并访问Nacos管理页面来确保配置的正确性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【On NacosSpringCloud 方式使用 Nacos](https://blog.csdn.net/qq_34264849/article/details/125516126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [SpringCloud 使用与Nacos](https://blog.csdn.net/m0_63300795/article/details/127662046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值