超硬核!dubbo安装和部署

1,302

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是HadoopHbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容。

本机环境: JDK:1.8

Maven:apache-maven-3.2.1

zookeeper:zookeeper-3.4.6

Tomcat:apache-tomcat-7.0.62

Dubbo-admin:dubbo-admin-2.5.4-SNAPSHOT.war 这是我自己本地打包生成的(下载地址:download.csdn[.NET](lib.csdn.net/base/dotnet ".NET知识库")/detail/evankaka/9054273)

一、zookeeper安装与启动

​ 首先需要安装JdK,从OracleJava网站下载,安装很简单,就不再详述。其中zookeeper的下载地址是www.apache.org/dyn/closer.…

​ 在你执行启动脚本之前,还有几个基本的配置项需要配置一下,Zookeeper 的配置文件在 conf 目录下,这个目录下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是将 zoo_sample.cfg 改名为 zoo.cfg,因为 Zookeeper 在启动时会找这个文件作为默认配置文件。下面详细介绍一下,这个配置文件中各个配置项的意义。

# The number of milliseconds of each tick  
tickTime=2000  
# The number of ticks that the initial   
# synchronization phase can take  
initLimit=10  
# The number of ticks that can pass between   
# sending a request and getting an acknowledgement  
syncLimit=5  
# the directory where the snapshot is stored.  
# do not use /tmp for storage, /tmp here is just   
# example sakes.  
dataDir=D:\\Java\\Tool\\zookeeper-3.4.6\\tmp  
# the port at which the clients will connect  
clientPort=2181  
# the maximum number of client connections.  
# increase this if you need to handle more clients  
#maxClientCnxns=60  
#  
# Be sure to read the maintenance section of the   
# administrator guide before turning on autopurge.  
#  
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance  
#  
# The number of snapshots to retain in dataDir  
#autopurge.snapRetainCount=3  
# Purge task interval in hours  
# Set to "0" to disable auto purge feature  
#autopurge.purgeInterval=1  

dataDir=/tmp/zookeeper  

改成如下:

<pre name="code" class="html">dataDir=D:\\Java\\Tool\\zookeeper-3.4.6\\tmp</pre>  

这里可以改成自己喜欢的
其中,

    tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。  
    dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。  
    dataLogDir:顾名思义就是 Zookeeper 保存日志文件的目录  
    clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。  
  
当这些配置项配置好后,你现在就可以启动 Zookeeper 了,启动后要检查 Zookeeper 是否已经在服务,可以通过 netstat – ano 命令查看是否有你配置的 clientPort 端口号在监听服务  

单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如:D:\Java\Tool\zookeeper-3.4.6下,Zookeeper 的启动脚本在 bin 目录下,Windows 下的启动脚本是bin文件下的如,D:\Java\Tool\zookeeper-3.4.6\bin\ zkServer.cmd。

启动如下:

输入JPS,出现如下,也说明启动成功

上面的黑色框框不关,就表示注册中心一直开关的,一定要记得注册中心要在程序运行之前就打开,而且是一直开着的

二、Dubbo-admin管理平台的安装

1.1、dubbo-admin 本地编译打包

​ 因为zookeeper只是一个黑框,我们无法看到是否存在了什么提供者或消费者,这时就要借助Dubbo-Admin管理平台来实时的查看,也可以通过这个平台来管理提者和消费者。

dubbo-admin.war可在网上百度去下载,但是我下载了好几个war包,发布上去服务启动都报错,这个时候大概是我们系统的JDK和编译dubbo-admin.war的JDK版本不同导致的了。所以我之后直接下载了dubbo-master的源代码,然后自己编译了一个war包,这样就不会存在启动报错的问题了。(这里强烈建议自己编译一个,网上找的基本都不行,试了很多个,最后还是自己来搞)其中自己电脑编译的过程如下,一定在安装maven和jdk!

dubbo的所有源码可在github.com/alibaba/dub…

解压后的文件内容,这里你其它的都不用去管,只管dubbo-admin.

因为这里只需要编译Dubbo-Admin,所以打开Cmd,然后进入解压路径 E:\下载\dubbo-master\dubbo-master\dubbo-admin,有人把整个工程都编译了,其实没有必要,只需要编译dubbo-admin即可,有什么依赖的,maven会自动帮你解决。整个过程如下:

首先,通过cmd进入目录,输入命令

然后输入命令

mvn package -Dmaven.skip.test=true  

这里要自己把maven的环境变量配置好,这里的-Dmaven.skip.test表示不打包测试包。然后结果如下,表示打包成功

再打开项目的文件所在位置:E:\下载\dubbo-master\dubbo-master\dubbo-admin\target

target表示构建的本地路径,打开,里面有个文件dubbo-admin-2.5.4-SNAPSHOT.war表示打包成功,这个文件得放在Tomcat下才能运行。

这里我已上传这个war包,**下载地址:**download.csdn[.net](lib.csdn.net/base/dotnet ".NET知识库")/detail/evankaka/9054273

1.2、dubbo-admin安装

       dubbo-admin已打包成功,接下来就容易很多了

1. 安装
将 dubbo-admin-2.5.4-SNAPSHOT.war 拷入 tomcat webapps中
2. 配置
修改tomcat的端口8088,修改方法如下,打到conf下的文件 server.xml,因为zookeeper会用到8080的端口,所以为了不冲突,把Tomcat的端口改一下。记得一定要改!!!

然后修改

3、启动一下Tomcat,让它把war解压了

过程如下

然后启动

发现webapp下多了一个文件夹

再把 Tomcat给关了,直接stop,上面的按钮

4、修改dubbo.properties

D:\Java\Tool\apache-tomcat-7.0.62\webapps\dubbo-admin-2.5.4-SNAPSHOT\WEB-INF

是否是如下内容:

dubbo.registry.address=zookeeper://127.0.0.1:2181  
dubbo.admin.root.password=root  
dubbo.admin.guest.password=guest  

如果是,就不用改,这里的127.0.0.1对应的是自己的电脑IP,因为这里zookeeper也在自己电脑上,所以要这么写才行。一般情况下都是不需要改的,因为初始都是本地的IP地址。但还是看看比较安全

5. 访问:

这下全部都配置好了,首先,一定要先启动zookeeper启动后再去启动tomcat!一定要先启动zookeeper启动后再去启动tomcat!一定要先启动zookeeper启动后再去启动tomcat!重要的事情三遍!

启动zookeeper

启动tomcat

访问http://localhost:8088/dubbo-admin-2.5.4-SNAPSHOT/ 一定要注意名一定要和你webapp下的工程名一样!!

弹出如下:

输入用户名和密码都是root

就会看到:

出现以下界面说明安装配置成功,登录密码为root/root

这下子就大功告成了,可以开始来使用了~~~~~~~~

注:

实际操作中,dubbo-admin部署到tomcat报错了

解决方法:

原来是我用的jdk版本太高,jdk8, dubbo默认用的spring版本比较旧,冲突导致,作如下修改即可

ERROR context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uriBrokerService': Cannot create inner bean '(inner bean)' of type [com.alibaba.citrus.service.uribroker.impl.URIBrokerServiceImpl$URIBrokerInfo] while setting bean property 'brokers' with key [0]; nested excepti
on is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#25': Cannot create inner bean 'server' of type [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker] while setting constructor argument; nested exception is org.springframework.beans.fact
ory.BeanCreationException: Error creating bean with name 'server': Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property 'URIType'
is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:230)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:287)

1、webx的依赖改为3.1.6版;

 <dependency>
        <groupId>com.alibaba.citrus</groupId>
        <artifactId>citrus-webx-all</artifactId>
        <version>3.1.6</version>
    </dependency> 

2、添加velocity的依赖,我用了1.7;

 <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>1.7</version>
    </dependency> 

3、对依赖项dubbo添加exclusion,避免引入旧spring

 <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>${project.parent.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
        </exclusions>
    </dependency> 

4、webx已有spring 3以上的依赖,因此注释掉dubbo-admin里面的spring依赖

 <!--<dependency>-->
        <!--<groupId>org.springframework</groupId>-->
        <!--<artifactId>spring</artifactId>-->
    <!--</dependency>--> 

重新编译dubbo放tomcat运行,成功启动!