基于zookeeper和dubbo构建高可用服务

来源:互联网 发布:逆战帮豆无限抽软件 编辑:程序博客网 时间:2024/06/05 18:41

一、zookeeper安装

1、下载zookeeper,访问地址:http://www.apache.org/dyn/closer.cgi/zookeeper/,本次下载3.2.6版本。也可以访问北理工镜像站进行下载。

2、下载后为gz格式文件,上传至服务器/usr/local/目录下,解压缩

cd /usr/local/

tar -zxvf zookeeper-3.3.6.tar.gz

有关优化配置等内容,不在次文档之列,具体可以参考:

http://www.linuxidc.com/Linux/2012-06/62304.htm

另外还有zookeeper监控工具等:https://www.oneapm.com/ci/zookeeper.html

3、启动zookeeper,进入/usr/local/zookeeper-3.3.6/bin/目录,启动zookeeper。

cd /usr/local/zookeeper-3.3.6/bin

./zkServer.sh start

二、dubbo安装

1、下载dubbo

为了便于监控dubbo服务,本次下载dubbo-admin服务。

可以通过github下载源码后编译,也可以下载对应war包。

源码下载地址:https://github.com/alibaba/dubbo/releases

war下载地址:http://dubbo.io/Download-zh.htm  (如果下载失败,可以通过csdn下载)

2、启动dubbo

dubbo-admin是dubbo的监控平台,集成了dubbo服务的简单可视化管理功能,需要通过tomcat启动。

建议新建一个tomcat,设置不同访问端口,将dubbo-admin.war拷贝至${dubbo_tomcat_home}/webapps/目录下

启动tomcat

${dubbo_tomcat_home}/bin/startup.sh

三、服务的构建

dubbo的使用分为提供者(provider)、消费者(customer),dubbo与spring能够完美结合。

1、提供方配置

新增dubbo配置文件(spring-dubbo-provider.xml),内含如下内容:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">    <dubbo:application name="interfaceweb-provder" />    <!-- 消息中心地址 -->    <dubbo:registry id="zookeeper" address="zookeeper://123.57.56.94:2181" default="true"/>    <!--<dubbo:registry id="localhost" address="N/A" default="false"/>-->    <dubbo:protocol name="dubbo" port="20880" host="123.57.56.94"/>    <dubbo:provider timeout="600000"/>    <dubbo:consumer timeout="600000"/>    <!-- 声明接口 -->    <bean id="forwardService" class="com.weiyun.interfaceweb.serviceimpl.ForwardServiceImpl"/>    <dubbo:service ref="forwardService" interface="com.weiyun.interfaceweb.service.ForwardService" registry="zookeeper"/></beans>

以上配置文件将dubbo服务注册到了123.57.56.94服务器的2181端口上(此端口为zookeeper的默认端口)。

2、消费方配置

新增dubbo配置文件(spring-dubbo-customer.xml),内含如下内容

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">    <dubbo:application name="dubbo-consumer" />    <!-- 消息中心地址 -->    <dubbo:registry id="zookeeper" address="zookeeper://192.168.0.59:2181" default="true"  />    <dubbo:consumer timeout="600000"/>    <!--<dubbo:registry check="false" />-->    <!--<dubbo:consumer check="false"/>-->    <!--<dubbo:protocol name="dubbo" port="20880" />-->    <!-- 连接到哪个本地注册中心 -->    <!--<dubbo:registry id="localhost" address="zookeeper://localhost:2181"/>-->    <!-- 声明接口 -->    <dubbo:reference id="forwardService" interface="com.weiyun.interfaceweb.service.ForwardService" check="false"/>    <dubbo:reference id="accountService" interface="com.wybb.soa.account.service.AccountService" check="false"/>                     <!--registry="localhost" url="dubbo://127.0.0.1:20880/com.weiyun.interfaceweb.service.ForwardService"/>--></beans>

以上配置文件引入了192.168.0.59服务器的2181端口所提供的服务

四、服务的启动

dubbo服务提供者的启动分为两种情况:web项目和非web项目。web项目可通过发布至容器(tomcat等)中进行启动;非web项目需要打包成jar格式进行启动。tomcat启动不再赘述,jar启动时注意,linux下通过java -jar启动的服务将直接将信息打印至当前控制台,当窗口关闭后服务自动停止,因此需要后台运行jar,可用如下命令:

nohup java -jar interfaceweb.jar &

也可以加入java内存设置参数 nohup java -Xms256m -Xmx1024m interfaceweb.jar &

消费端的启动不再赘述。

五、常用命令

zookeeper的启动:/usr/local/zookeeper/bin/zkServer.sh

dubbo-admin的启动:/usr/local/dubbo-admin-tomcat/bin/startup.sh

dubbo服务的启动:nohup java -jar/home/dubbo/jar/interfaceweb.jar &

监控dubbo服务情况:tail -f /home/dubbo/jar/nohup.out

监控dubbo-admin的注册服务:http://${服务地址}:${端口}/dubbo   默认用户名:root,默认密码:root

六、常见问题

1、将provider的jar上传至dubbo-admin服务器,能够正常注册,注册后在dubbo-admin管理控制台中显示提供者ip为外网ip,并且与本机ip无任何关系。

解决办法:dns设置问题,需要手动设置spring-dubbo-provider.xml,加入host指向:

 <dubbo:protocol name="dubbo" port="20880" host="123.57.56.94"/>

2、provider启动提示端口绑定(bind)

单台服务器注册多个服务时,需要将服务设置为不同端口

<dubbo:protocol name="dubbo" port="20881" host="123.57.56.94"/><dubbo:protocol name="dubbo" port="20882" host="123.57.56.94"/>

3、注册服务时多次提示注册错误

建议重启dubbo-admin-tomcat。

其他问题可参看http://dubbo.io/FAQ-zh.htm






0 0
原创粉丝点击