Nacos (一) 安装高可用的集群服务

Nacos
placeholder image
admin 发布于:2023-01-27 15:11:06
阅读:loading

基本介绍

Nacos是什么以及为什么要用它之类的不作为重点讨论,本文仍然是以实践为主,从0到1搭建一个高可用的Nacos Server集群环境。在学习Nacos之初下载的最新版本为“nacos-server-2.1.1”,彼时是2022年9月18日,但截至现在整理博客时已然被更新至“nacos-server-2.2.0”,一方面在赞美官网的更新速度,另一方面这个版本应该也能算得上是比较新颖的吧。

实际上好的中间件必然是搭配着简洁的部署安装,所以单纯的部署Nacos Server并不是一个特复杂的事情,闭着眼睛去下载安装包吧,可转至“https://github.com/alibaba/nacos”下载,就以我这里的2.1.1版本为例。解压后它实际上也是个Spring Boot项目,至于如何配置则是对Spring Boot项目打包后的维护展开,比如打包后的Nacos Server包含bin、conf、target三个目录,分别是启停脚本、配置文件、可执行jar,一般重点关注配置文件conf即可。

环境准备

(1)主机 Windows 10,ip地址为:192.168.244.1,搭载 MySQL 5.7.26 版本;

(2)CentOS 虚拟机一,ip地址为:192.168.244.134,每个机器分配2G内存和20G硬盘,下同;

(3)CentOS 虚拟机二,ip地址为:192.168.244.138;

(4)CentOS 虚拟机三,ip地址为:192.168.244.139;

(5)三台CentOS7安装最新版本jdk-18_linux-x64_bin.tar.gz,并配置对应的JAVA_HOME、CLASSPATH、PATH等环境变量;

(6)本机Windows和三台CentOS7分别关闭防火墙(也可以开启防火墙,放行指定端口),能够正常访问互通;

配置实践

(1)以 134 这台机器为例子,解压nacos-server-2.1.1.tar.gz文件,解压后的存储路径为“/app/nacos-server/”,后文此路径将以 %NACOS_HOME% 替代;

(2)修改%NACOS_HOME%/bin/startup.sh脚本(若是Windows修改.cmd文件),此步骤为可选进行,因为默认的初始内存和最大内存均为2g,若机器的配置稍低可适当的降低此处的内存占用,找到该文件的93行,将-Xms2g -Xmx2g修改为-Xms1g -Xmx1g或512m即可;

(3)使用MySQL持久化存储数据,默认使用Derby数据库(Java内置的小型数据库),修改%NACOS_HOME%/conf/application.properties文件,找到“# spring.datasource.platform=mysql”参数,将注释取消,同时同样将“db.”开头的其它参数给取消注释即可,需要先创建数据库再创建表,建表语句在%NACOS_HOME%/conf/nacos-mysql.sql,更改后的相关参数参考如下:

### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=2

### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.244.1:3306/chendd-nacos
db.user.0=root
db.password.0=123456

db.url.1=jdbc:mysql://192.168.244.1:3306/chendd-nacos-bak
db.user.1=root
db.password.1=123456

注意了,这里我在部署过程中专门为了验证数据持久化的高可用专门找了两个MySQL的数据库服务,验证多个数据源可以数据同步,就有了上述的db.num=2,分别配置了db.xx.0和db.xx.1两组数据源。实际上这俩数据库的数据并不会同步,所以实际应用过程中只使用1组即可,即db.url.1的删除,数据库数据的高可用应从数据库层面自行同步。暂未搞清楚此处设计的多数据源的用意。

(4)配置Nacos Server集群,找到%NACOS_SERVER%/conf/cluster.conf.example文件,拷贝一份并重命名为cluster.conf,删掉里面的所有的内容,写上对应机器的IP和端口即可,若使用的是默认端口则可不指定端口,只写IP即可,参考example示例中的写法,如当前的集群配置如下:

192.168.244.134:8848

192.168.244.138:8848

192.168.244.139:8848

(5)启动命令区分单机和集群的启动,单机启动的命令为:“sh startup.sh -m standalone”,集群启动则不需要参数即可;

(6)访问地址为http://192.168.244.134:8848/nacos,登录的用户名和密码均为nacos;

注意事项

重要的事情持续说,可与前文中的内容互补;

(1)使用MySQL存储Nacos的数据,故本机MySQL Server直接使用root用户对外使用,需要开启mysql.user表中的host字段可被远程访问;

2)开启Nacos的集群需要三台CentOS互相访问,故需要关闭防火墙;

3)由于Nacos启动脚本startup.sh中设置了2g的启动内存,但创建CentOS时只分配了2g大小,故更改了启动脚本中的内存分配为1g(93行);

4)启动脚本区分单节点启动和集群模式启动,默认./startup.sh为集群模式启动,单节点启动使用./startup.sh -m standalone;

5)一些在线搜索的资料中db.num设置了多个后,共用同一个db.user和db.password,但本次下载的版本中亲测的结果是db.url.0、db.user.0和db.user.1均是为两个不同的参数(假设db.num=2),而且经过验证如果设置了多个数据库后,从页面访问处创建用户或角色后,db.url.1中对应的表中并无数据,所以在学习之初期阶段先留着这个疑问。

6)关注单节点启动和集群模式启动控制台输出的默认提示启动成功和输出的日志文件路径中的运行结果;有些时候可以多登上半分钟后来验证Nacos是否真正启动成功;

7)集群模式中,会自动增加当前机器的参数,参考如下图所示:

Nacos启动.jpg

其它总结

(1)Nacos集群模式对外部公开可使用Nginx的方式提供负载均衡的方式,不过个人在实践过程中直接配置了多台机器并未采用Nginx代理的方式;

(2)需要集群模式生效在启动时需要使用集群模式对应的的命令启动;

(3)配置的格式可不需要端口号,默认为8848端口;

(4)若为集群模式启动,则可不需要配置当前nacos的ip和端口,会自动增加当前机器进入集群;

(5)集群模式启动过程中的日志文件监控会多次输出“年月日 时分秒.毫秒 INFO Nacos is starting...”;

(6)集群模式启动的控制台功能中可通过集群管理---节点列表来查看各个节点的Ip数据及服务状态,参考如下图所示:

集群节点列表.jpg

(7)完整的集群配置转至百度网盘下载,可使用Beyond Compare等文件对比软件查看更改,如下:

image.png

链接:https://pan.baidu.com/s/1cOiusDzMUKMi7FJ9Q9H1Vw 

提取码:6io8


 点赞


 发表评论

当前回复:作者

 评论列表


留言区