10、Hyperf 3 微服务系列 - 安装 Nacos
hi,我是温新,一名 PHPer
Hyperf 3 微服务代码已上传至 Github:https://github.com/ziruchu/hyperf3-microservice-code
学习目标:安装 Nacos
说明:我的使用的是 Rocky Linux 9.1
什么是 Nacos
一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
官方文档:https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html
安装 java
Nacos 需要安装 java 环境,不然会报错,老实安装吧。
报错信息如下:
Try 'dirname --help' for more information.
ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !!
# 解决方法如下
第一步:安装 java
# 安装 java
sudo dnf -y install java
第二步:配置 JAVA_HOME
JAVA_HOME ?这是什么鬼?一起来配它吧!
# 1 查找 java 位置
$ which java
/usr/bin/java
$ ll /usr/bin/java
lrwxrwxrwx. 1 root root 22 Mar 7 15:00 /usr/bin/java -> /etc/alternatives/java
$ ll /etc/alternatives/java
lrwxrwxrwx. 1 root root 65 Mar 7 15:00 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-11.0.18.0.10-2.el9_1.x86_64/bin/java
$ ll /usr/lib/jvm/java-11-openjdk-11.0.18.0.10-2.el9_1.x86_64
total 12
drwxr-xr-x. 2 root root 123 Mar 7 14:59 bin
lrwxrwxrwx. 1 root root 74 Jan 18 18:28 conf -> /etc/java/java-11-openjdk/java-11-openjdk-11.0.18.0.10-2.el9_1.x86_64/conf
drwxr-xr-x. 73 root root 4096 Mar 7 14:59 legal
drwxr-xr-x. 5 root root 4096 Mar 22 15:52 lib
-rw-r--r--. 1 root root 1268 Jan 18 18:26 release
$ sudo vim /etc/profile
# 添加如下内容,然后保存退出
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-2.el9_1.x86_64/
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
$sudo source /etc/profile
安装 Nacos
第一步:安装 Nacos
# 1 下载 Nacos 与安装
wget https://github.com/alibaba/nacos/releases/download/2.2.1/nacos-server-2.2.1.tar.gz
tar -zxvf nacos-server-2.2.1.tar.gz
mv nacos /usr/local/software/
第二步:配置秘钥
在2.2.0.1版本后,社区发布版本将移除以文档如下值作为默认值,需要自行填充,否则无法启动节点。
自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。什么意思呢?随便找个 base64 在线加密,然后加密的长度不低于 32 位。
cd nacos
$ sudo vim conf/application.properties
# 添加添加秘钥后保存退出
nacos.core.auth.plugin.nacos.token.secret.key=MTIzNDU2MTIzMTMxMTIzMTMxMTIyMzEyMzEyMTIzIzMTQxMjQxMjQxMjE0MTI0MTQyMTxMjQxMg==
关于权限,查询官方文章说明:https://nacos.io/zh-cn/docs/v2/guide/user/auth.html
启动 Nacos
$ cd /usr/local/software/nacos/bin
# 以单机的形式启动 Nacos
$ sudo ./startup.sh -m standalone
/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-2.el9_1.x86_64//bin/java -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Xlog:gc*:file=/usr/local/software/nacos/logs/nacos_gc.log:time,tags:filecount=10,filesize=100m -Dloader.path=/usr/local/software/nacos/plugins,/usr/local/software/nacos/plugins/health,/usr/local/software/nacos/plugins/cmdb,/usr/local/software/nacos/plugins/selector -Dnacos.home=/usr/local/software/nacos -jar /usr/local/software/nacos/target/nacos-server.jar --spring.config.additional-location=file:/usr/local/software/nacos/conf/ --logging.config=/usr/local/software/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
nacos is starting with standalone
nacos is starting,you can check the /usr/local/software/nacos/logs/start.out
$ sudo cat /usr/local/software/nacos/logs/start.out
/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-2.el9_1.x86_64//bin/java -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Xlog:gc*:file=/usr/local/software/nacos/logs/nacos_gc.log:time,tags:filecount=10,filesize=100m -Dloader.path=/usr/local/software/nacos/plugins,/usr/local/software/nacos/plugins/health,/usr/local/software/nacos/plugins/cmdb,/usr/local/software/nacos/plugins/selector -Dnacos.home=/usr/local/software/nacos -jar /usr/local/software/nacos/target/nacos-server.jar --spring.config.additional-location=file:/usr/local/software/nacos/conf/ --logging.config=/usr/local/software/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
,--.
,--.'|
,--,: : | Nacos 2.2.1
,`--.'`| ' : ,---. Running in stand alone mode, All function modules
| : : | | ' ,'\ .--.--. Port: 8848
: | \ | : ,--.--. ,---. / / | / / ' Pid: 1525
| : ' '; | / \ / \. ; ,. :| : /`./ Console: http://192.168.31.90:8848/nacos/index.html
' ' ;. ;.--. .-. | / / '' | |: :| : ;_
| | | \ | \__\/: . .. ' / ' | .; : \ \ `. https://nacos.io
' : | ; .' ," .--.; |' ; :__| : | `----. \
| | '`--' / / ,. |' | '.'|\ \ / / /`--' /
' : | ; : .' \ : : `----' '--'. /
; |.' | , .-./\ \ / `--'---'
'---' `--`---' `----'
2023-03-22 17:33:52,276 INFO Tomcat initialized with port(s): 8848 (http)
2023-03-22 17:33:52,453 INFO Root WebApplicationContext: initialization completed in 3517 ms
访问 Nacos:http://192.168.31.90:8848/nacos/#/login
默认账号与密码都是:nacos
Nacos 持久化到 MySQL
Nacos 默认使用 Apache Derby 数据库(Derby 是 Java 编写的内存数据库)存储数据,在实际的生产环境中会使用 MySQL 进行持久化存储。官方已经给出相关的数据库与表文件。
$ ll conf | grep .sql
-rw-r--r--. 1 502 games 1224 Mar 13 11:54 1.4.0-ipv6_support-update.sql
-rw-r--r--. 1 502 games 8939 Mar 17 18:25 derby-schema.sql
-rw-r--r--. 1 502 games 10825 Mar 17 18:25 mysql-schema.sql # 后面导入该文件
第一步:创建数据库
新建一个名为 hyperf-nacos-config
的数据库;
第二步:导入数据到该数据库
我这里使用 navicat 导入。
第三步:修改 Nacos 服务配置数据库
$ sudo vim conf/application.properties
# 这些配置默认是注释的,打开注释并配置 mysql
spring.datasource.platform=mysql
db.num=1
# 注意 ? 号后跟着数据库名
db.url.0=jdbc:mysql://127.0.0.1:3306/hyperf-nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnico
de=true&useSSL=false&serverTimezone=UTC
db.user.0=hyperf
db.password.0=123456
第四步:重启启动服务
$ sudo cd /usr/local/software/nacos/bin/
$ sudo ./shutdown.sh
$ sudo ./startup.sh -m standalone
这个地方挺坑的,如果启动后打开管理界面失败,那么请多等 1 分钟左右,然后去查看 /usr/local/software/nacos/logs/start.out
有没有报错。若没有报错就耐心等待吧。
第五步:新增命名空间
web 管理界面打开后,新建一个命名空间,填写的信息如下:
命名空间ID(不填则自动生成): hyperf
命名空间名: hyperf
描述: 用于测试 nacos
创建完成后,查看 tenant_info
数据表,会发现刚刚新增的命名空间记录。
本篇文章到此结束,我是温新。
番外篇
关于 Nacos,安装完成后,启动后体验后,第二天再次启动时,问题来了,如下:
nacos Error creating bean with name 'memoryMonitor' defined in URL
配置文件我什么都没有动过,启动都要报错,这确实让人.....做法上网查询答案,问题是没有一个是对得上我这个环境的。
然而,关于解决方法,似乎更加让人觉得 Nacos 很有玄学在里面。
起初,我是这样启动的:然后就报了一推错:
cd /usr/local/software/nacos/bin
sh startup.sh -m standalone
解决方法:就是改成当前目录下,然后启动成功了。
cd /usr/local/software/nacos/bin
./startup.sh -m standalone