在CentOS7上搭建ZooKeeper+Dubbo分布式服务
环境
- 系统: CentOS 7.3 x64
- JDK: JDK1.8 8u161
- Ant: apache-ant-1.10.1
- Maven: apache-maven-3.5.2
- Tomcat: apache-tomcat-8.5.24
- ZooKeeper: zookeeper 3.4.11
开始搭建
安装ZooKeeper
-
解压zookeeper-3.4.11.tar.gz,移动到/opt目录
tar zxvf zookeeper-3.4.11.tar.gz mv zookeeper-3.4.11 /opt/ -
编辑配置文件
cd /opt/zookeeper-3.4.11/conf cp zoo_sample.cfg zoo.cfg vim zoo.cfg # 替换下面内容 dataDir=/tmp/zookeeper/data dataLogDir=/tmp/zookeeper/logs -
创建zookeeper数据和日志目录
cd /tmp mkdir zookeeper cd zookeeper mkdir data logs -
启动zookeeper
cd /opt/zookeeper-3.4.11/bin ./zkServer.sh start -
下面是打包成rpm包安装方式,血泪史,可以不看跳过
下载必要的软件包
sudo yum install -y rpm-build rpmdevtools mock下载zookeeper-rpms: zookeeper-rpms包含了用于zookeeper构建RPM所需的一切,注意: 应下载用于zookeeper3.4.10的commit也就是58c775d这个commit,3.4.11的版本用这个仓库在centos7上有问题,暂未找到解决方法
然后按照说明进行
cd zookeeper-rpms rpmdev-setuptree spectool -g zookeeper.spec rpmbuild -bs --nodeps --define "_sourcedir $(pwd)" --define "_srcrpmdir $(pwd)" zookeeper.spec # 这里直接执行sudo mock zookeeper-3.4.10-1.src.rpm会失败,在zookeeper-rpms的Issues中找到解决方法,输入如下命令即可 sudo mock -r epel-7-x86_64 --old-chroot zookeeper-3.4.10-1.src.rpm打包好的文件在/var/lib/mock/epel-7-x86_64/result中
cd /var/lib/mock/epel-7-x86_64/result yum localinstall zookeeper-3.4.10-1.x86_64.rpm然后就可以输入命令启动zookeeper
zookeeper start下面是自行打包rpm,最后失败告终,血泪史中的血泪史
# zookeeper-3.4.11中包含的README_packaging.txt中所说,打包成rpm需要先安装cppunit和python-setuptools yum install cppunit yum install python-setuptools # 然后执行 ant rpm # 报错,在一个java文件中import了一个包,这个包找不到,包名忘了,谷歌无果,遂放弃zookeeper-3.4.11,下载zookeeper-3.4.10 # 然后执行 ant rpm # 同样报错,但不是一样的错误,好在能在谷歌上搜到出错原因,就是打包rpm还要依赖其他软件包,于是安装,安装后ant继续报错,继续谷歌,发现全是缺乏依赖的软件包,然后就报错->装软件->ant->报错->...循环,最后安装的软件列表如下 gcc gcc-g++ autoconf automake autogen cppunit-devel libtool python-devel rpm-build rpmdevtools mock # 最后还是报错,报文件找不到,放弃,谷歌寻找ZooKeeper打包rpm的方法,最后找到了https://github.com/skottler/zookeeper-rpms
运行dubbo-admin
-
解压dubbo-2.5.9.tar.gz,移动至/opt目录(我习惯放在/opt目录)
tar zxvf dubbo-2.5.9.tar.gz mv dubbo-dubbo-2.5.9 /opt -
在dubbo项目根目录,执行
mvn install -Dmaven.skip.test -
上一步执行后,会在dubbo-admin/target下生成war包,将其移动至tomcat目录
# 在tomcat目录下新建dubbo-admin目录 cd /opt/apache-tomcat-8.5.24/ mkdir dubbo-admin # 将之前生成的war包移动到这里 mv /opt/dubbo-dubbo-2.5.9/dubbo-admin/target/dubbo-admin-2.5.9.war ./ # 解压,指定解压后的目录名为ROOT unzip dubbo-admin-2.5.9.war -d ROOT # 可以把war包删了 rm -f dubbo-admin-2.5.9.war -
编辑dubbo-admin的配置文件
cd ROOT/WEB-INF/ vim dubbo.properties # 这里可以配置dubbo注册中心的类型及地址,dubbo的root用户和guest用户的密码 dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.admin.root.password=root dubbo.admin.guest.password=guest -
编辑tomcat配置文件
cd /opt/apache-tomcat-8.5.24/conf vim server.xml # 在<server></server>中添加一个Service节点 <Service name="dubbo-admin"> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8010" protocol="AJP/1.3" redirectPort="8445" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="dubbo-admin" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> -
启动tomcat
/opt/apache-tomcat-8.5.24/bin/startup.sh -
开放8081端口
# 我使用的防火墙是firewalld,用iptables的自行网上搜开放端口的方法 # 查看已经开放的端口 firewall-cmd --list-ports # 若没有8081端口,开放它 firewall-cmd --zone=public --add-port=8081/tcp --permanent # 重启防火墙 firewall-cmd --reload # 查看已经开放的端口 firewall-cmd --list-ports -
浏览器访问ip:8081即可看见Dubbo Admin页面

浙公网安备 33010602011771号