微服务架构系列之Nacos 集群环境搭建
集群模式与日常扩容类似,群源可通过 Nginx 转发至多个节点,原理如下所示:
若为简便起见,集集群可使用直连 ip 模式,群源配置如下:
PS:若仅为学习目的原理linux源码分析赵炯,可直接在本地启动 3 个实例,集集群通过修改端口即可。群源本文将以三台服务器为例,原理带大家搭建环境,集集群实际上这种方式更为简单。群源
一、原理环境准备
Nacos 单节点,集集群即我们之前使用的群源 standalone 模式,默认使用嵌入式数据库实现数据存储,原理不便于观察数据存储的基本情况,0.7 版本后增加了支持 MySQL 数据源能力。集群搭建时,我们需要将 Nacos 与 MySQL 进行数据对接。若要搭建高可用集群环境,至少需满足以下条件:
二、linux命令代码源码下载源码或安装包
可通过源码和发行包两种方式获取 Nacos。
1、源码方式
从 Github 上下载源码。
2、发行包方式
您可以从 github.com/alibaba/naco... 下载最新稳定版本的 nacos-server 包。
三、配置集群配置文件
解压安装包。
在 Nacos 解压目录 nacos/conf 下,复制配置文件 cluster.conf.example 并重命名为 cluster.conf,每行配置成 ip:port。(请配置 3 个或 3 个以上节点)
四、配置 MySQL 数据库
Nacos 在 0.7 版本之前,默认使用嵌入式数据库 Apache Derby 存储数据(内嵌的数据库会随 Nacos 一同启动,无需额外安装);0.7 版本及以后,增加了对 MySQL 数据源的支持。
五、MySQL 数据源
环境要求:MySQL 5.6.5+(生产使用建议至少主备模式,或采用高可用数据库)
1、初始化 MySQL 数据库
创建数据库 nacos_config。
SQL 源文件地址:github.com/alibaba/naco...,系统登录源码大全或在 nacos-server 解压目录 conf 下找到 nacos-mysql.sql 文件,运行该文件,结果如下:
2、application.properties 配置
修改 nacos/conf/application.properties 文件中的以下内容。
最终修改结果如下:
如果你和我一样使用的是 MySQL 8.0+ 版本,那么启动 Nacos 时肯定会报错。莫慌,在 Nacos 安装目录下新建 plugins/mysql 文件夹,并放入 8.0+ 版本的 mysql-connector-java-8.0.xx.jar,重启 Nacos 即可,启动时会提示更换了 MySQL 的 driver-class 类。
六、启动服务器 Linux/Unix/Mac
在 Nacos 的解压目录 nacos/bin 下启动。
启动命令(无参数模式,为集群模式):
七、查看启动记录
可通过 /nacos/logs/nacos.log(详细日志)或 /nacos/conf/start.out(启动记录)的输出内容查看是否启动成功。
查看命令:
启动成功输出结果:
八、访问
访问以下链接,默认用户名/密码是 nacos/nacos:
从下图可以看出,集群节点共有三个,rocketmq源码学习笔记其中 ...: 为 leader。
九、关闭服务器
Linux/Unix/Mac
十、测试
1、直连 ip 模式
发布配置
选择配置管理的配置列表页面,点击最右侧 + 按钮新建配置。
获取配置
bootstrap.yml
使用之前的控制层代码,访问:work host`参数启动容器,确保容器能够使用宿主机的IP和端口进行通信。以下是启动容器的详细步骤。
在测试验证阶段,可以确认Nacos集群已成功建立,并且数据能够正确持久化至Mysql数据库。通过执行相应的测试操作,可以确保集群的稳定性和可用性。 此外,为了进一步优化部署,可以考虑使用Docker安装Nginx。以单机Nginx配置转发代理为例,步骤与传统的网页进去是源码部署方式类似。具体而言,需要编辑nginx配置文件(/root/nginx/conf/nginx.conf),以实现Nginx与Nacos集群的通信。 最后,通过访问`http://..1.:/nacos`,可以验证Nginx配置是否正确生效,从而实现对Nacos集群的高效访问。Nacos配置中心集群原理及源码分析
Nacos作为配置中心,采用无中心化节点设计,通过增加虚拟IP实现热备,确保服务节点高可用性。
Nacos集群结构中,Mysql作为中心数据仓库,数据被写入到本地磁盘,以提高性能。当配置发生变更,服务端每隔6小时全量数据dump到本地文件,保证数据一致性。
配置数据变更事件由AsyncNotifyService监听,处理同步事件。变更请求通过task.url访问NacosServer,dumpService.dump实现配置更新。
任务管理采用生产者消费者模式,任务被保存到队列,由线程执行。NacosDelayTaskExecuteEngine类中,初始化延期执行的任务,具体任务为ProcessRunnable。
ProcessRunnable读取数据库最新数据,更新本地缓存和磁盘。此设计确保Nacos配置中心高效、稳定运行。
手撕Nacos源码剖析,建议收藏
Nacos源码剖析 深入学习Nacos,解析源码,重点关注以下两点: 源码环境搭建从官方项目克隆Nacos源码,检出1.4.1版本,导入IDEA。
在本地MySQL中创建nacos-config数据库,执行resources/META-INF/nacos-db.sql脚本创建表。
修改console模块下的application.properties文件,配置相关参数。
启动console模块的启动类,非集群模式启动Nacos服务端。
访问本地Nacos服务:http://localhost:/nacos。
Nacos客户端功能 Nacos客户端集成在应用服务内,通过依赖引入实现服务注册、发现、下线及订阅功能。客户端核心功能包括服务注册、服务发现、服务下线与服务订阅。
客户端与服务端交互,主要聚焦服务注册、服务下线、服务发现与服务订阅。
服务注册注册服务时,客户端执行定时任务设置心跳监测,同时向服务端注册服务。
服务注册中,远程请求通过NacosRestTemplate封装,调用callServer()执行。
服务发现通过NamingService.getAllInstances()方法实现服务发现。
获取服务信息首先从缓存查找,若无数据,则向Nacos服务端请求更新。
服务下线服务下线操作简化,主要取消心跳检测与服务下线接口请求。
服务订阅客户端创建线程池,封装监听器,监听指定服务实例信息变化。
通过NamingService.subscribe()方法实现服务订阅,注册监听器,接收实例信息更新。
CentOS7-nacos安装及部署集群
配置JDK环境变量
在 `/etc/profile` 文件中进行配置(若已配置,可略过)
使用 `vi` 或其他文本编辑器打开文件,添加或修改JDK环境变量
保存并执行 `source /etc/profile` 来应用更改
运行 `java -version` 检查JDK是否正确配置
准备nacos包
下载nacos-server-2.0.2.tar.gz
解压缩文件
使用`tar -zxvf`命令进行解压
修改配置文件application.properties
在节点1和节点2上执行此操作
在`cluster.conf`文件中配置集群节点
节点1配置:..1.:
节点2配置:..1.:
修改nacos启动文件startup.sh
定位至`/opt/nacos/bin`目录
根据需要修改启动文件以指定端口`-Dserver.port=${ EMBEDDED_STORAGE}`
启动nacos服务器
节点1:进入`/opt/nacos/bin`目录,运行`sh startup.sh -p `
节点2:重复上述步骤
搭建nacos集群
搭建Nacos集群的步骤如下:首先,服务器端口应设置为,确保部署在同一服务器的不同实例使用不同的端口。需注意Nacos在2.0版本后引入端口偏移量规则,若连续端口中有端口被占用,最少间隔两个端口以避免端口冲突。配置本地IP时,根据需要输入对应的IP地址,以防止启动后Nacos自动创建新的VIP。数据库地址需使用服务器的外网IP,避免内网环境下出现数据库连接问题。确保配置正确无误后,集群模式启动三个Nacos实例,并访问管理页面,检验实例是否正常运行。
在集群模式下启动Nacos实例时,代理端口是必要的,以确保网页可以访问,同时Springboot应用能够成功注册。为实现这一目标,需要进行如下配置:查询并确认JDK安装位置,然后修改启动脚本以确保在任何情况下都能正确调用Java命令。
完成启动脚本配置后,使用以下命令配置Nacos服务:编辑系统服务文件,添加服务描述、服务类型、执行启动和停止命令、以及设置为自启动模式。最后,通过`systemctl`工具完成服务的加载、启用、启动和停止操作,确保Nacos服务在系统启动时自动运行。
至此,Nacos集群搭建完成,接下来即可进行集群管理、配置管理和服务发现等关键功能的测试与验证。
2024-12-28 16:05
2024-12-28 16:00
2024-12-28 15:52
2024-12-28 15:21
2024-12-28 15:09