10、Hyperf 3 微服务系列 - 安装 Nacos

作者: 温新

分类: 【Hyperf 3 微服务系列】

阅读: 1731

时间: 2023-05-29 15:18:00

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
请登录后再评论