文章目录
Nacos中的几个名词
Nacos 是Dynamic Naming and Configuration Service的缩写。一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心。
对于Nacos配置管理,通过Namespace、Group、Data ID 能够定位到一个配置集
配置集 Data ID
在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置信息,如一个配置集可能包含了数据库等配置项。每个配置集都可以定义一个有意义的名称
配置项:配置集中包含的一个个配置内容就是配置项。它代表一个具体的可配置的参数与其值域,通常以 key=value 的形 式存在。例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。
配置分组(Group)
配置分组是对配置集进行分组,通过一个有意义的字符串来标识,不同的配置分组下可以有相同的配置集。配置分组的名称默认是DEFAULT_GROUP
命名空间(Namespace)
命名空间可用于进行不同环境的配置隔离。如隔离开发、测试和生产环境。不同的命名空间下可以存在相同名称的配置分组(Group)或配置集(Data ID)
通常情况下 命名空间+dataId+group可以为唯一确认一个配置文件
Nacos的安装
Nacos单机环境搭建
从GitHub上下载源码
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
进入nacos对应版本下 执行命令
cd nacos-server-1.2.1/nacos/bin
-- standalone代表单机模式
sh startup.sh -m standalone
nacos启动默认端口是8848, 上下文是/nacos 默认用户名密码是nacos/nacos
在浏览器访问即可进入nacos管理界面,如
http://localhost:8848/nacos
关闭nacos服务器命令
sh $Nacos_HOME/bin/shutdown.sh
Nacos集群搭建
这里以三个Nacos节点来搭建集群
1、我们可以复制之前已经解压好的nacos文件夹,分别命名为nacos、nacos1、nacos2
2、在所有nacos目录的conf目录下都有cluster.conf.example
,将其命名为cluster.conf
,并配置每个节点的ip:port
127.0.0.1:8848
127.0.0.1:8849
127.0.0.1:8850
3、以集群模式启动
在每个$NACOS_HOME/bin下执行命令
./startup.sh -m cluster
4、启动成功后,可在127.0.0.1:8848、127.0.0.1:8849、127.0.0.1:8850任一节点访问nacos
持久化nacos配置数据
默认情况下 Nacos中的配置数据是存放在基于内存的detby数据库的,为了防止服务器宕机后数据丢失,因此需要将配置数据持久化至数据库。
而Nacos是支持MySQL数据库的,具体配置如下:
1、新建数据库,比如数据库名称是nacos,导入数据库的初始化文件,文件是$NACOS_HOME/conf/nacos-mysql.sql
2、修改$NACOS_HOME/conf/application.properties
,增加mysql数据库相关配置
### 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?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
3、随后重启nacos服务器即可
安装中遇到的问题
问题:mac升级到bigsur后,nacos中startup.sh启动失败,查看nacos中start.out日志记录发现如下报错
nohup: /Library/Internet: No such file or directory
解答:这个问题其实跟mac环境有关,mac自带有一个jdk,如下所示有两个,第一个就是系统自带的而第二个是自己安装的jdk
/usr/libexec/java_home -v
-- 系统自带
java_home: option requires an argument -- v
-- 自己安装的
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
问题的关键就在于nacos所匹配到的jdk为系统自带的,也就是上面第一个,而它的路径Internet Plug-Ins中存在一个空格,这个空格会导致shell脚本失效。目前看应该和bigsur有关。
解决方式是在startup.sh中手动指定自己的JAVA_HOME
比如将
export JAVA_HOME
export JAVA="$JAVA_HOME/bin/java"
改为
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
export JAVA="$JAVA_HOME/bin/java"
然后重新执行启动命令即可