原文链接:全网最新的nacos 2.1.0集群多节点部署教程-语雀
基本信息
源码编译环境
- 服务器 Alibaba Cloud Linux 3.2104 64位
- Maven apache-maven-3.8.4
- JDK 1.8.0_291编译成功
- java -version
- java version "1.8.0_202"
- Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
- Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
复制代码- java -version
- openjdk version "11" 2018-09-25
- OpenJDK Runtime Environment 18.9 (build 11+28)
- OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
复制代码 编译准备
通过vim /etc/profile编辑profile文件,配置JAVA_HOME,并通过source /etc/profile刷新配置。示例如下:- [root@aliyun ~]# cat /etc/profile
- # jdk8
- export JAVA_HOME=/data/source/jdk1.8.0_202
- # openjdk11
- #export JAVA_HOME=/usr/local/jdk-11
- export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
- export PATH=$JAVA_HOME/bin:$PATH
复制代码 通过vim ~/.bash_profile编辑.bash_profile文件,配置MAVEN_HOME,并通过source ~/.bash_profile刷新配置。示例如下:- #JAVA_HOME CONFIG IN /etc/profile
- #JAVA_HOME=/usr/local/jdk-11
- #JAVA_HOME=/data/source/jdk1.8.0_202
- #export JAVA_HOME
- MAVEN_HOME=/data/app/apache-maven-3.8.4
- PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin
- export PATH
复制代码 在/data/app/apache-maven-3.8.4/conf/settings.xml的mirrors节点添加aliyun maven镜像源。- <mirror>
- <id>alimaven</id>
- <name>aliyun maven</name>
- <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
- <mirrorOf>central</mirrorOf>
- </mirror>
复制代码 命令
编译打包
- cd /data/source
- # 从git拉取最新代码
- git clone https://github.com/alibaba/nacos.git
- cd nacos
- # 切换到master主分支,并通过git log确认当前commit为b584531331cc95054964ba4e33984f4cab9e582d
- git checkout master
- # cherry-pick 74c3355b712e74e8274ac038470dc3db411b7c9e,解决nacosAuthConfig jwtTokenManager之间的circular reference
- git cherry-pick 74c3355b712e74e8274ac038470dc3db411b7c9e
- # 编译
- mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
复制代码 mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U 【推荐】
mvn -Prelease-nacos clean install -U -DskipTests -Drat.skip=true
执行成功时,日志如下:- [INFO] Building tar: /data/source/nacos/distribution/target/nacos-server-2.1.0.tar.gz
- [WARNING] Encountered ModuleSet with no sources or binaries specified. Skipping.
- [INFO] Building zip: /data/source/nacos/distribution/target/nacos-server-2.1.0.zip
- [INFO] ------------------------------------------------------------------------
- [INFO] Reactor Summary for Alibaba NACOS 2.1.0 2.1.0:
- [INFO]
- [INFO] Alibaba NACOS 2.1.0 ................................ SUCCESS [ 4.612 s]
- [INFO] nacos-api 2.1.0 .................................... SUCCESS [ 12.877 s]
- [INFO] nacos-common 2.1.0 ................................. SUCCESS [ 13.351 s]
- [INFO] nacos-consistency 2.1.0 ............................ SUCCESS [ 6.605 s]
- [INFO] nacos-plugin 2.1.0 ................................. SUCCESS [ 0.228 s]
- [INFO] nacos-auth-plugin 2.1.0 ............................ SUCCESS [ 0.979 s]
- [INFO] nacos-sys 2.1.0 .................................... SUCCESS [ 2.045 s]
- [INFO] nacos-auth 2.1.0 ................................... SUCCESS [ 1.515 s]
- [INFO] nacos-core 2.1.0 ................................... SUCCESS [ 13.775 s]
- [INFO] nacos-encryption-plugin 2.1.0 ...................... SUCCESS [ 0.533 s]
- [INFO] nacos-config 2.1.0 ................................. SUCCESS [ 21.569 s]
- [INFO] nacos-cmdb 2.1.0 ................................... SUCCESS [ 0.916 s]
- [INFO] nacos-naming 2.1.0 ................................. SUCCESS [ 23.832 s]
- [INFO] nacos-address 2.1.0 ................................ SUCCESS [ 0.954 s]
- [INFO] nacos-client 2.1.0 ................................. SUCCESS [ 25.395 s]
- [INFO] nacos-plugin-default-impl 2.1.0 .................... SUCCESS [ 2.811 s]
- [INFO] nacos-istio 2.1.0 .................................. SUCCESS [ 8.047 s]
- [INFO] nacos-console 2.1.0 ................................ SUCCESS [ 4.740 s]
- [INFO] nacos-test 2.1.0 ................................... SUCCESS [ 0.382 s]
- [INFO] nacos-config-test 2.1.0 ............................ SUCCESS [ 0.364 s]
- [INFO] nacos-naming-test 2.1.0 ............................ SUCCESS [ 0.340 s]
- [INFO] nacos-core-test 2.1.0 .............................. SUCCESS [ 0.433 s]
- [INFO] nacos-example 2.1.0 ................................ SUCCESS [ 0.536 s]
- [INFO] nacos-distribution 2.1.0 ........................... SUCCESS [ 10.944 s]
- [INFO] ------------------------------------------------------------------------
- [INFO] BUILD SUCCESS
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 02:38 min
- [INFO] Finished at: 2022-07-14T22:55:27+08:00
- [INFO] ------------------------------------------------------------------------
复制代码 解压部署的jar包
- # copy 需要部署的jar包
- cp distribution/target/nacos-server-2.1.0.tar.gz /data/app/nacos-server-2.1.0.tar.gz
- cd /data/app
- # 解压
- tar -xvzf nacos-server-2.1.0.tar.gz
复制代码 配置调整
应用配置文件application.properties
修改DB连接串
将nacos/conf/application.properties的第33~41行DB配置信息根据实际情况修改,并取消注释- 31 #*************** Config Module Related Configurations ***************#
- 32 ### If use MySQL as datasource:
- 33 spring.datasource.platform=mysql
- 34
- 35 ### Count of DB:
- 36 db.num=1
- 37
- 38 ### Connect URL of DB:
- 39 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&allowPublicKeyRetrieval=true
- 40 db.user.0=nacos
- 41 db.password.0=nacos
复制代码 注意点
- DB名称: 名称可由服务器所采用的字符集中任意字母、数字、“_”和“ $”组成。如果需要其他字符,需要使用[`]包裹起来,例如db-nacos。已踩坑未验证
- db.url:增加allowPublicKeyRetrieval=true。 已踩坑已验证
修改服务端口
可先跳过,按顺序查看【批量服务端口】章节
启动文件startup.sh
根据硬件资源及实际情况,在nacos/bin/startup.sh文件中调整JVM参数- 93 #JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
- 94 JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx256m -Xmn64m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
复制代码 JVM参数
Xss:每个线程的stack大小(栈)
Xmx:JAVA HEAP的最大值、默认为物理内存的1/4
Xms:JAVA HEAP的初始值,server端最好Xms与Xmx一样
Xmn:JAVA HEAP young区的大小
XX:MetaspaceSiz:设定内存的永久保存区域
XX:MaxMetaspaceSiz:设定最大内存的永久保存区域
编码问题
- [root@aliyun app]# sh nacos/bin/startup.sh
- startup.sh: line 2: $'\r': command not found
- startup.sh: line 7: $'\r': command not found
- startup.sh: line 15: $'\r': command not found
- startup.sh: line 19: syntax error near unexpected token `$'in\r''
- 'tartup.sh: line 19: `case "`uname`" in
复制代码 则可以执行sed -i 's/\r//g' nacos/bin/*全局替换回车符。
原因
脚本是在Windows下编辑完成后上传Linux上执行的,Windows下的换行是回车符+换行符,也就是\r\n,而Linux下是换行符\n。Linux下不识别\r为回车符,所以导致每行的配置都多了个\r,因此是编码的问题。
日志
启动日志
- [root@aliyun app]# sh nacos/bin/startup.sh
- /data/source/jdk1.8.0_202/bin/java -Djava.ext.dirs=/data/source/jdk1.8.0_202/jre/lib/ext:/data/source/jdk1.8.0_202/lib/ext -server -Xms128m -Xmx256m -Xmn64m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/app/nacos/logs/java_heapdump.hprof -XX:-UseLargePages -Dnacos.member.list= -Xloggc:/data/app/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/data/app/nacos/plugins/health,/data/app/nacos/plugins/cmdb,/data/app/nacos/plugins/selector -Dnacos.home=/data/app/nacos -jar /data/app/nacos/target/nacos-server.jar --spring.config.additional-location=file:/data/app/nacos/conf/ --logging.config=/data/app/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
- nacos is starting with cluster
- nacos is starting,you can check the /data/app/nacos/logs/start.out
复制代码 服务日志
[code][root@aliyun app]# tail -f nacos/logs/start.out nacos/logs/nacos.log ==> nacos/logs/start.out nacos/logs/nacos.log logs/nacos.log logs/start.out logs/nacos.log logs/start.out logs/nacos.log |