linux(centos7)搭建dubbo+zookeeper集群

时间:2024-03-25 13:23:13
一、在windows搭建单点测试
    在平时的开发过程中,如果我们的项目用到dubbo+zookeeper,我习惯在本地搭建一个单点,用于debug调试,因为win平台搭建单点,比较简单,网上也很多相关的文章,再次我就不再赘述,直接甩给大家一个链接(https://blog.csdn.net/sjw9507/article/details/79351474),大家可以自行参考。

二、在linux下搭建zookeeper集群(centos7)
    1.需要准备的组件
    linux(centos7)搭建dubbo+zookeeper集群以及一个tomcat,具体的版本根据自己的需求来选择,
    dubbo源码下载地址 :https://github.com/apache/incubator-dubbo/tree/2.5.x下载好源码后,咱们可以自己打包,打成dubbo运行的war包,也可以去网上找现成的war包,这里简单介绍下dubbo源码打war包。
    dubbo源码打war包:
       下载好源码,win+r,cmd,打开命令端,到源码目录中,进入dubbo-admin目录下,打包的前提是你在本机已经配置好了maven和jdk环境,运行打包命令:
        mvn clean package -Dmaven.test.skip=true 
        后面这个-Dmaven.test.skip=true是跳过dubbo中的测试方法,如果不跳过的话,在打包过程中它会运行test方法,有可能出错。打包完成后,dubbo-admin目录下会生成target文件夹,进去就可以看到咱们已经打包好了war包。
 dubbo-admin.war包准备好后,再把zookeeper的下载下来,zookeeper下载地址:http://www.apache.org/dist/zookeeper/zookeeper-3.4.12/  这里咱们选择以.tar.gz结尾的。
    准备一个tomcat,具体版本根据你JDK的环境来。tomcat 下载地址:https://tomcat.apache.org/download-80.cgi
    
    
    2.搭建(提示:以下各种包的名字我均用简写,具体名称还需要根据个人下载的版本为准!!!
     我们用xshell或者VMware连接、打开 我们的虚拟机,个人建议用xshell连接,在xshell中用xftp工具方便咱们的文件传输。这里我用了三台虚拟机搭建集群,咱们先连上第一台虚拟机后,进入到/home目录下:
    cd /home
    然后用xftp将准备好的zookeeper.tar.gz、tomcat.tar.gz传到/home目录下 ,咱们先解压tomcat:
    tar -zxvf  tomcat.tar.gz
    解压完之后,改下名字:
    mv tomcat-x.x.x dubbo-admin-tomcat
    进入到tomcat的weapps目录下
    cd dubbo-admin-tomcat/webapps
    删除除ROOT文件以外的所有文件,再进入ROOT文件下,删除所有文件,用xftp将准备好的dubbo-admin.war包传进来,然后到tomcat的bin目录下,启动tomcat解压war包:
    sh startup.sh
    tomcat启动成功后,再次进入ROOT目录下,这时你就会看到dubbo-admin.war包已经解压好了,这里就可以把dubbo-admin.war包干掉了。如果是自己尝试搭建zookeeper集群,这里没必要去修改dubbo的一些配置,他默认的zookeeper注册地址是127.0.0.1:2181,管控台的账号/密码是root/guest,dubbo搞好以后咱们先不去验证他是否启动正常,因为咱们的zookeeper还没配置,入过配置zookeeper集群,以三台机器为例,一主二从,我们可以将dubbo的tomcat部署到主的那台机器上,接下来,我们开始配置第一台zookeeper。
     回到/home目录下,解压zookeeper.tar.gz:
     tar -zxvf   zookeeper.tar.gz
     mv zookeeper-x.x.x zookeeper
     cd  zookeeper
     进入到解压好的zookeeper文件目录下,看一下目录结构,然后进入到conf文件目录下,将zookeeper的配置文件zoo_sample.cfg复制一份并命名为zoo.cfg:
      cp zoo_sample.cfg  zoo.cfg
      编辑配置文件:vim zoo.cfg  (如果没有安装vim命令,也可以用vi,也可以yum -install vim安装vim命令)
     原始的配置文件内容如下图:
      linux(centos7)搭建dubbo+zookeeper集群
      然后我们修改配置文件,如图:
        linux(centos7)搭建dubbo+zookeeper集群
      注意红框标出的内容是我们需要修改添加的内容,下面红框中的三个server是你搭建集群服务器的地址、集群之间的同通信端口以及选举leader的端口,关于这些配置详解,我在这里给大家一个链接,大家可以详细了解下,https://www.cnblogs.com/rainy-shurun/p/5162328.html
       第一台机器配置好后,我们以相同的方法去配置第二台机器和第三台机器,接下来的两台机器只需要配置zookeeper就可以了。注意,三个server的配置信息,三台机器要一致。

3.测试
      这样配置好之后,理论上我们的zookeeper集群就搭建好了,但是我们会想到三塔服务器之间可能端口不同,没办法互相通信,还有咱们的dubbo-admin-tomcat启动后也有可能无法再网页*问,这里咱们就需要把配置过程中涉及到的端口在防火墙中暴露出来,我们先检查一下防火墙的端口暴露了哪一些:
     firewall-cmd --list-all
     三台机器,都部署了zookeeper,zookeeper涉及到了三个端口,一个是默认的服务注册端口2181,还有集群之间通信的端口2888以及选举leader的388端口,所以三台机器都需要暴露这三个端口,执行命令:
      firewall-cmd --zone=public --add-port=2181/tcp --permanent
      firewall-cmd --zone=public --add-port=2888/tcp --permanent
      firewall-cmd --zone=public --add-port=3888/tcp --permanent  
    暴露完接口后重新加载一下防火墙规则:
     firewall-cmd --reload
然后在查看一下防火墙暴露的端口是不是已经有了。咱们第一台机器还部署了dubbo-admin-tomcat,tomcat的默认端口号是8080,所以第一塔服务器要比其它两台多暴露一个8080端口:
      firewall-cmd --zone=public --add-port=8080/tcp --permanent  
      firewall-cmd --reload
    至此,该暴露的端口已经暴露完成,接下来就是启动测试了,先启动zookeeper,进入到zookeeper目录下的bin目录,
zkCleanup
清理ZooKeeper历史数据,包括事务日志文件和快照数据文件
zkCli
ZooKeeper的一个简单客户端
zkEnv
设置ZooKeeper的环境变量
zkServer
ZooKeeper服务器的启动、停止和重启脚本

    
    sh zkServer.sh start
       依次启动三台服务器的zookeeper,然后启动dubbo-admin-tomcat,打开网页,输入部署tomcat的那台机器的地址和端口号,地址:8080/root,输入dubbo的账号密码,登陆后台管理页面。
        如果服务器每次关机重启,咱们都要重新启动zookeeper和dubbo服务,那岂不是很麻烦?所以,这里我们要将zookeeper和dubbo服务加入开机自启动。
        zookeeper开机自启动有两种方法,第一种:直接修改/etc/rc.d/rc.local文件
        vim /etc/rc.d/rc.local
        在/etc/rc.d/rc.local文件中需要输入两行:
        export JAVA_HOME=/usr/java/jdk1.8.0_112
        /homel/zookeeper/bin/zkServer.sh start
        其中export JAVA_HOME=/usr/java/jdk1.8.0_112是必须要有的,否则开机启动不成功,大家根据自己JDK安装的位置自行更改。另一行/homel/zookeeper/bin/zkServer.sh start则是我们zookeeper的启动命令。配置好之后,重启虚拟机,会发现已经可以开机自启了。
        第二种:把zookeeper做成服务
        cd /etc/init.d/目录下,创建zookeeper文件 :
        touch zookeeper
        vim zookeeper
编辑内容:
#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.8.0_112
export PATH=$JAVA_HOME/bin:$PATH

#chkconfig:2345 20 90#description:zookeeper#processname:zookeepercase $1 in
start) su root /home/zookeeper/bin/zkServer.sh start;;
stop) su root /home/zookeeper/bin/zkServer.sh stop;;
status) su root /home/zookeeper/bin/zkServer.sh status;;
restart) su root /home/zookeeper/bin/zkServer.sh restart;;
*) echo "require start|stop|status|restart" ;;
esac
添加权限:
chmod +X zookeeper
配置成服务:
chkconfig --add zookeeper
开机启动:
chkconfig  zookeeper on

至此,zookeeper集群搭建完成!如果在以上内容中有错误之处,欢迎大家指正!