1、引言
Dubbo是阿里公司开源给Apache的一款Java的RPC框架,最近因为疫情待在家里,所以准备来学习一下,在Dubbo安装之前,一般推荐安装Dubbo自家的一个监控中心Dubbo Admin,就是这么个简单的安装,搞了我整整差不多三个小时,当中也遇到很多奇奇怪怪的问题,所以今天写下这篇博客记录一下。
顺带说一下,本文的安装环境是腾讯云的基础款服务器,使用的系统是centos7.6,一核心2G内存。
2、正式安装
2.1 安装Zookeeper
因为Dubbo是一款RPC服务,所以需要首先安装一个注册中心,官方推荐的注册中心使用的是Zookeeper,所以这里我也按着网上的教程安装了Zookeeper,这一步比较简单,直接把我参考的博客贴在这里。
https://www.cnblogs.com/huangjianping/p/8012580.html
Zookeeper这里就安装完了,实际上这里有一个坑,之后会说到。
2.2 安装Dubbo Admin
安装Dubbo Admin的步骤也很简单,直接照着官方Git下的步骤指示来就可以,不过需要JDK环境,以及Maven环境。
这里就碰到了第一个坑,centos下yum install maven的版本极其的古老,一开始没注意,果然一到maven编译的环节就死掉了,不得不卸载maven然后重新安装新版本的maven。
第二个坑:
[INFO] Installing node version v9.11.1
[INFO] No proxies configured
[INFO] No proxy was configured, downloading directly
在mvn clean package的过程中,会提示安装nodejs的v9.11.1版本,然后这个版本不知道是因为源的关系还是网络原因,每次都下载不了,会提示上面这几句信息之后就卡着不动了,而且仿佛还非这个版本不可,中间我曾经尝试直接安装了最近的node版本,大概是v12.16,安装完成之后再去重新编译,仍然会显示上面那几句话,在经历换源等一系列操作无果之后,之后我发现日志中直接给出了v9.11.1的下载路径地址,我尝试性的使用了wget命令直接下载,没想到就秒下,随后我把下载下来的安装包放在编译时需要的那个文件夹下(日志中也会给出),然后在编译,这一个错误就没有了
第三个坑:
第三个坑也是困扰我最久的一个坑,在编译到Dubbo-Admin-UI的时候,会出现如下这个错误
Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.6:npm (npm run build...
大致意思就是在运行npm run build这个命令的时候出现了错误,这里由于给的日志信息较少,可以进一步使用mvn clean package -e 命令来查看更详细的错误日志。
一开始,我在一个博客下看到了和我相同的错误,就是下面这篇
https://blog.csdn.net/iwts_24/article/details/90739373
文章意思是只是ui层的编译出问题了,所以可以去dubbo-admin-ui文件夹下直接运行npm run build查看具体发生了什么问题,然后我就去运行了,没想到直接编译通过了,这就很疑惑了,然后回到mvn clean package命令下,还是报错,头大
因为看到这篇博客里写的他的错误是
building for production...Killed
所以我也相应的去检索了下这个问题的解决方法试了试,网上说的是
按照他人的说法是,服务器内存不够用了,这样就给他配置一个单独的内存出来就解决了
解决方法
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1
然后这个问题就解决了
这个原因我觉得很奇怪,就算我用的云端服务器,内存的确很小,但是也不应该出现编译不了的问题。看到有人分析说编译的时候峰值会需要大约3G的内存,估计大家使用4G以上的内存的机器来编译就不会出现这个错误,如果出现了可以考虑上面这种解决方案。
到此为止,整个项目的编译已经全部完成了
3、运行
运行的话使用如下两个命令
mvn --projects dubbo-admin-server spring-boot:run
OR
cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.1.jar
在运行这里遇到了最后一个坑
运行之后首先提示8080端口被占用,这里我没有多想,直接使用lsof -i:8080命令找出并杀死了使用8080端口的进程(后面发现就是这一步做错了),杀死完成之后,端口不占用了,但是提示连接Zookeeper超时,这就很奇怪,我刚刚才装的Zookeeper啊,之前还好好的,怎么了就挂了。
这时候就想起我刚才杀死了一个使用8080端口的进程,不会就是Zookeeper吧。
果不其然,去查了一下官方的手册
发现这是Zookeeper3.5的新特性:
这是Zookeeper AdminServer,默认使用8080端口,它的配置属性如下:
我们可以修改在zoo.cfg中修改AdminServer的端口:
admin.serverPort=8888
保存后,再次启动
这一步其实也可以修改Dubbo Admin的端口,只需要保证Dubbo Admin和Zookeeper的端口号不相同即可(这两个需要一起使用的服务非要用默认的相同的端口号就离谱......)
这一步完成之后,整个Dubbo Admin就安装完成了,访问机器的8080端口就可以看到服务的管理控制台。