一、在windows搭建单点测试
在平时的开发过程中,如果我们的项目用到dubbo+zookeeper,我习惯在本地搭建一个单点,用于debug调试,因为win平台搭建单点,比较简单,网上也很多相关的文章,再次我就不再赘述,直接甩给大家一个链接(https://blog.csdn.net/sjw9507/article/details/79351474),大家可以自行参考。
二、在linux下搭建zookeeper集群(centos7)
1.需要准备的组件
以及一个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命令)
原始的配置文件内容如下图:
然后我们修改配置文件,如图:
注意红框标出的内容是我们需要修改添加的内容,下面红框中的三个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集群搭建完成!如果在以上内容中有错误之处,欢迎大家指正!