使用dubbo服务中踩过的坑。。。。。

环境:
centos7
jdk8
tomcat8
dubbo2.7.1
zookeeper3.4

1,一开始使用jdk12,由于dubbo重新更新之后管理中心改变了,貌似没有使用tomcat项目,所以只有使用旧版的管理中心,最初使用的是2.5.3的管理中心,但是jdk12和jdk8都不兼容,然后百度找了半天找到了兼容jdk8的2.5.4版。

2,2.7.1版的duboo也只支持到jdk8。

3,将dubbo服务提供者项目使用assembly插件打包,我使用的也是dubbo-monitor-simple-2.5.3旧版监控中心,但是打包上传到服务器之后一直启动失败,查看logs/stdout.log,发现错误是找不到或无法加载主类com.alibaba.dubbo.container.Main,我检查了半天xml配置文件和pom配置文件,还是一样的问题,然后太晚了就睡了,睡着之前灵光一闪,想起来dubbo2.7.1已经更改了包名,现在是org.apache.dubbo,第二天早上起来在项目里一搜索,果然启动文件里的包名是错误的,改成新的重新打包就行了。

4,我把其他项目上传部署之后启动一直报错,大概的意思是找不到dubbo服务提供者,127.0.0.1:20880连接失败,管理中心中也警告127.0.0.1无法访问,但是我虚拟机的IP地址根本不是这个。然后又找万能的百度,果然有很多dubbo注册服务IP混乱的问题,大概是在dubbo注册中心注册服务时,由于dubbo的判断条件,直接把提供者的内网IP作为了提供者的IP,这样导致注册的dubbo永远无法被外部访问到,用ifconfig查看有一个lo的网卡IP地址为127.0.0.1,然后有百度很久的解决办法,失败了很多次,最后终于试出来一种成功的办法。
首先更改服务提供者的主机名,用hostname查看所有的虚拟机主机名默认都是localhost.localdomain,centos7永久修改主机名的方法变成了已经很简单的命令,不同于之前的版本:hostnamectl set-hostname xxx。然后hostname再次查看主机名,如果没变就使用service network restart重启网卡,再查看如果还没变可能就要重启虚拟机了。。
但是这样做项目启动还是和之前一样的情况,此时需要在注册中心的服务器上修改/etc/hosts文件:vim /etc/hosts
然后再最后一行加上服务提供者的主机IP地址 服务提供者的主机名(依据自己的虚拟机配置),此时重启zookeeper注册中心,./zkServer restart,然后再重新启动服务提供者来注册服务,现在管理中心的服务提供者IP地址已经正确指向了你的提供者服务器,重新启动项目所在的tomcat,项目启动成功。

你可能感兴趣的:(使用dubbo服务中踩过的坑。。。。。)