环境说明:
- M1 Pro
- JDK 11
- Maven 3.8.3
- Nacos 2.2.2
前情提要
需要自己编译打包,不能下载编译后的文件!!!否则在集群部署时,会抛出以下异常:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl]: Constructor threw exception; nested exception is java.lang.UnsatisfiedLinkError: Can't load library: /var/folders/j7/kbbqmc456_v5fmrxpkf4__gw0000gn/T/librocksdbjni1596183689058414049.jnilib |
可以看到 Nacos 启动失败的原因是缺少依赖的本地库文件
librocksdbjni1596183689058414049.jnilib
。
这个问题通常是由于 Nacos 在使用 rocksdb 时发生的,而 rocksdb 本身依赖本地的 JNI 库。M1 Pro 是苹果自家的芯片,和传统的 x86 架构有所不同,可能导致在 M1 Pro 上找不到对应的本地库。
Nacos 安装、编译
1)前往Nacos Github,下载对应的源码包,此处选择2.2.2版本的源码包
2)解压,并进入文件夹内部(nacos-2.2.2),打开pom.xml
文件
3)修改pom.xml
,添加内容:
<properties> |
参考:https://github.com/alibaba/nacos/issues/8109
4)编译,安装
进入到nacos-2.2.2目录下(根目录)
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U |
参考:https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html
5)复制一份打包后的文件(可选)
cp -R ./distribution/target/nacos-server-2.2.2 ~/program/nacos |
📢注意:实际路径需要更改
6)进入到nacos-server-2.2.2/nacos/conf目录下,复制一份cluster.conf.example
文件,并重命名成cluster.conf
7)修改cluster.conf
文件
- 由于Nacos集群是奇数台机器,所以最少是3个nacos节点
- ip地址根据实际环境要做修改,可以使用
ifconfig
命令查看 - 同一ip端口之间要有一定的跳数,比如上述配置跳数是11
8)导入Nacos集群sql文件
- 创建数据库nacos
- 导入sql文件,地址:https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql
9)回到conf目录下,修改application.properties
文件
### Default web context path: |
📢注意:需要根据实际情况做相应的修改,比如ip、数据库配置等
10)复制两份nacos-server-2.2.2
,并做好一定的区分度,同时修改复制出来两份中application.properties
中的IP和端口号
11)启动集群环境
为了演示,此处只启动8848端口一个节点
运行bin目录下的startup.sh
即可,默认就是集群模式,若想要单机启动,需要加上参数-m standalone
sh ./bin/startup.sh |
可以使用以下命令查看启动日志
cat ./logs/start.out |
📢注意:
- MySQL服务要启动
- 设置的端口不能被占用
实际效果: