zookeeper3.4.5集群部署及dubbo2.5.3入门例子
一、基础信息配置1、1 虚拟机硬件配置
https://s3.运维网.com/wyfs02/M01/91/AD/wKiom1j3ZP7S2rWGAAG4RdJxtME209.png-wh_500x0-wm_3-wmp_4-s_612398657.png
https://s5.运维网.com/wyfs02/M01/91/AC/wKioL1j3ZP-j7NADAAFY1xOg0Jc425.png-wh_500x0-wm_3-wmp_4-s_4174140840.png
https://s3.运维网.com/wyfs02/M02/91/AD/wKiom1j3ZQGxZX-eAAFL46Euey4930.png-wh_500x0-wm_3-wmp_4-s_3664016836.png
https://s3.运维网.com/wyfs02/M02/91/AC/wKioL1j3ZQKyUQ-zAAFBoSRdDHg775.png-wh_500x0-wm_3-wmp_4-s_2736248115.png
https://s5.运维网.com/wyfs02/M02/91/AD/wKiom1j3ZQOjma6zAAFJ46pP1HA149.png-wh_500x0-wm_3-wmp_4-s_537828443.png
1、2虚拟机软件配置(准备三台机器)
1、2、1 公共配置
# cat /etc/redhat-release
CentOS release 6.7 (Final)
# uname -r
2.6.32-573.el6.x86_64
# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
1、2 、2三台机器各自配置
1、2、2、1 ZK11机器
# hostname
zk11
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=zk11
#对外提供IP,这里简称外网IP
# ifconfig eth0|awk -F '[ :]+' 'NR==2{print $4}'
10.0.0.11
#对内提供IP,这里简称内网IP
# ifconfig eth1|awk -F '[ :]+' 'NR==2{print$4}'
172.16.1.11
1、2、2、2 ZK12机器
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=zk12
# ifconfig eth0|awk -F '[ :]+' 'NR==2{print $4}'
10.0.0.12
# ifconfig eth1|awk -F '[ :]+' 'NR==2{print$4}'
172.16.1.12
1、2、2、3 ZK13机器
# hostname
zk13
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=zk13
# ifconfig eth0|awk -F '[ :]+' 'NR==2{print$4}'
10.0.0.13
# ifconfig eth1|awk -F '[ :]+' 'NR==2{print$4}'
172.16.1.13
1、2、3建立安装部署文件目录
#各个安装包上传目录
# mkdir -p /home/llyweb/tools/
#各个安装包软链接目录
# mkdir /application/
二、Zookeeper3.4.5部署
2、1三台机器共同配置
2、1、1上传JDK以及zookeeper
# pwd
/home/llyweb/tools
# ll jdk-7u79-linux-x64.tar.gzzookeeper-3.4.5.tar.gz
-rw-r--r-- 1 root root 153512879 Apr 18 15:22jdk-7u79-linux-x64.tar.gz
-rw-r--r-- 1 root root 16402010 Apr 18 15:19 zookeeper-3.4.5.tar.gz
2、1、2安装JDK及配置环境变量
参考“java的maven工程部署到linux的前半部分,
http://ylcodes01.blog.运维网.com/5607366/1774050”
2、1、3三台机器共同操作配置
# pwd
/home/llyweb/tools
# tar -zxf zookeeper-3.4.5.tar.gz
# ls -ld zookeeper-3.4.5
drwxr-xr-x 11 root root 4096 Apr 18 15:33 zookeeper-3.4.5
# ln -s/home/llyweb/tools/zookeeper-3.4.5/ /application/zookeeper
# mkdir data
# ls -ld/application/zookeeper/data/
drwxr-xr-x 3 root root 4096 Apr 18 17:42/application/zookeeper/data/
# pwd
/application/zookeeper/conf
# cp zoo_sample.cfg zoo.cfg
#编辑zoo.cfg文件
#修改dataDir为
dataDir=/application/zookeeper/data
#最下面加入
server.1=10.0.0.11:2888:3888
server.2=10.0.0.12:2888:3888
server.3=10.0.0.13:2888:3888
2、2 各个机器配置
2、2、1 ZK11-10.0.0.11配置
# echo "1" >/application/zookeeper/data/myid
2、2、2 ZK12-10.0.0.12配置
# echo "2" >/application/zookeeper/data/myid
2、2、3 ZK13-10.0.0.13配置
# echo "3" >/application/zookeeper/data/myid
2、2、4注意事项
上述三者机器的写入/application/zookeeper/data/myid中的数字1、2、3一定要对应
“2、1、3三台机器共同操作配置”中的
server.1=10.0.0.11:2888:3888
server.2=10.0.0.12:2888:3888
server.3=10.0.0.13:2888:3888
2、3测试部署
2、3、1分别启动三台机器
# /bin/sh/application/zookeeper/bin/zkServer.sh start
JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# /bin/sh /application/zookeeper/bin/zkServer.shstart
JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# /bin/sh/application/zookeeper/bin/zkServer.sh start
JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
2、3、2检查三台机器状态
#zookeeper推荐奇数型集群配置,下述三者机器的主节点不一定是哪台,在执行下述命令的时候可能会报错,猜测是还没检测好节点,稍等一会即可看到下述成功标识。
# /bin/sh/application/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Mode: follower
# /bin/sh/application/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Mode: leader
# /bin/sh/application/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Mode: follower
# ps -ef|grep zookeeper|grep -v grep
root 2625 10 19:42 pts/2 00:00:01 /application/jdk/bin/java-Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp/application/zookeeper/bin/../build/classes:/application/zookeeper/bin/../build/lib/*.jar:/application/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/application/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/application/zookeeper/bin/../lib/netty-3.2.2.Final.jar:/application/zookeeper/bin/../lib/log4j-1.2.15.jar:/application/zookeeper/bin/../lib/jline-0.9.94.jar:/application/zookeeper/bin/../zookeeper-3.4.5.jar:/application/zookeeper/bin/../src/java/lib/*.jar:/application/zookeeper/bin/../conf:.:/application/jdk/lib/dt.jar:/application/jdk/lib/tools.jar-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=falseorg.apache.zookeeper.server.quorum.QuorumPeerMain/application/zookeeper/bin/../conf/zoo.cfg
# ps -ef|grep zookeeper|grep -v greproot 2317 10 19:42 pts/1 00:00:01 /application/jdk/bin/java-Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp/application/zookeeper/bin/../build/classes:/application/zookeeper/bin/../build/lib/*.jar:/application/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/application/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/application/zookeeper/bin/../lib/netty-3.2.2.Final.jar:/application/zookeeper/bin/../lib/log4j-1.2.15.jar:/application/zookeeper/bin/../lib/jline-0.9.94.jar:/application/zookeeper/bin/../zookeeper-3.4.5.jar:/application/zookeeper/bin/../src/java/lib/*.jar:/application/zookeeper/bin/../conf:.:/application/jdk/lib/dt.jar:/application/jdk/lib/tools.jar-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=falseorg.apache.zookeeper.server.quorum.QuorumPeerMain/application/zookeeper/bin/../conf/zoo.cfg
# ps -ef|grep zookeeper|grep -v greproot 2297 10 19:41 pts/1 00:00:01 /application/jdk/bin/java-Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp/application/zookeeper/bin/../build/classes:/application/zookeeper/bin/../build/lib/*.jar:/application/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/application/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/application/zookeeper/bin/../lib/netty-3.2.2.Final.jar:/application/zookeeper/bin/../lib/log4j-1.2.15.jar:/application/zookeeper/bin/../lib/jline-0.9.94.jar:/application/zookeeper/bin/../zookeeper-3.4.5.jar:/application/zookeeper/bin/../src/java/lib/*.jar:/application/zookeeper/bin/../conf:.:/application/jdk/lib/dt.jar:/application/jdk/lib/tools.jar-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=falseorg.apache.zookeeper.server.quorum.QuorumPeerMain/application/zookeeper/bin/../conf/zoo.cfg
2、3、3停止三台机器(仅测试)
# /bin/sh/application/zookeeper/bin/zkServer.sh stop
JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
# ps -ef|grep zookeeper|grep -v grep
# /bin/sh/application/zookeeper/bin/zkServer.sh start
JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# /bin/sh/application/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running. #出现2、3、2提到的情况
# /bin/sh/application/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /application/zookeeper/bin/../conf/zoo.cfg
Mode: follower
2、3、4命令测试
# cd bin/
# /bin/sh zkCli.sh
ls #显示下述是表示不支持此操作
#下述是zookeeper中所有的命令
ZooKeeper -server host:port cmd args
connecthost:port
get path
ls path
set pathdata
rmr path
delquota[-n|-b] path
quit
printwatches on|off
create [-s][-e] path data acl
stat path
close
ls2 path
history
listquotapath
setAcl pathacl
getAcl path
sync path
redo cmdno
addauthscheme auth
delete path
setquota-n|-b val path
ls /zookeeper
ls /zookeeper/quota
[]
create /test1 test1
Created /test1
get /test1
test1
cZxid = 0x600000003
ctime = Tue Apr 18 19:50:10 CST 2017
mZxid = 0x600000003
mtime = Tue Apr 18 19:50:10 CST 2017
pZxid = 0x600000003
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
create /test1/test2test2
Created /test1/test2
get /test1/test2
test2
cZxid = 0x600000004
ctime = Tue Apr 18 19:50:27 CST 2017
mZxid = 0x600000004
mtime = Tue Apr 18 19:50:27 CST 2017
pZxid = 0x600000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
set /test1/test2 test22
cZxid = 0x600000004
ctime = Tue Apr 18 19:50:27 CST 2017
mZxid = 0x600000005
mtime = Tue Apr 18 19:50:40 CST 2017
pZxid = 0x600000004
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
get /test1/test2
test22
cZxid = 0x600000004
ctime = Tue Apr 18 19:50:27 CST 2017
mZxid = 0x600000005
mtime = Tue Apr 18 19:50:40 CST 2017
pZxid = 0x600000004
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
create/test1/test2/test3 test3
Created /test1/test2/test3
delete /test1
Node not empty: /test1
delete/test1/test2/test3
ls /test1/test2
[]
ls /test1
#zk12机器操作
get /test1
test1
cZxid = 0x600000003
ctime = Tue Apr 18 19:50:10 CST 2017
mZxid = 0x600000003
mtime = Tue Apr 18 19:50:10 CST 2017
pZxid = 0x600000004
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 1
#zk13机器操作
get /test1/test2
test22
cZxid = 0x600000004
ctime = Tue Apr 18 19:50:27 CST 2017
mZxid = 0x600000005
mtime = Tue Apr 18 19:50:40 CST 2017
pZxid = 0x600000008
cversion = 2
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
#zk11机器操作
rmr /test1
get /test1
Node does not exist: /test1
三、DUBBO2.5.3部署
3、1上传Tomcat和dubbo-admin.war
3、2安装部署dubbo
3、2、1部署Tomcat
参考“java的maven工程部署到linux的前半部分,
http://ylcodes01.blog.运维网.com/5607366/1774050”
3、1、2只在ZK11机器部署dubbo
3、1、2、1dubbo-admin.war说明
dubbo-admin.war可在下载dubbo源码后,通过maven编译生成对应版本的dubbo-admin.war,也可搜索出已打包好的dubbo-admin.war。
3、1、2、2部署dubbo-admin.war
# rm -rf/application/tomcat/webapps/ROOT/*
# unzip dubbo-admin.war -d/application/tomcat/webapps/ROOT/
# pwd
/application/tomcat/webapps/ROOT/WEB-INF
# cp dubbo.propertiesdubbo.properties.ori
# cat dubbo.properties
dubbo.registry.address=zookeeper://10.0.0.11:2181?backup=10.0.0.12:2181,10.0.0.13:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
3、1、2、3启动Tomcat并访问dubbo
#在启动此Tomcat之前记得在/etc/hosts的最后加入127.0.0.1 zk11
# /bin/sh/application/tomcat/bin/startup.sh >/dev/null 2>&1
# ps -ef|grep java|grep -v grep
root 2708 10 19:47 pts/2 00:00:04 /application/jdk/bin/java-Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp/application/zookeeper/bin/../build/classes:/application/zookeeper/bin/../build/lib/*.jar:/application/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/application/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/application/zookeeper/bin/../lib/netty-3.2.2.Final.jar:/application/zookeeper/bin/../lib/log4j-1.2.15.jar:/application/zookeeper/bin/../lib/jline-0.9.94.jar:/application/zookeeper/bin/../zookeeper-3.4.5.jar:/application/zookeeper/bin/../src/java/lib/*.jar:/application/zookeeper/bin/../conf:.:/application/jdk/lib/dt.jar:/application/jdk/lib/tools.jar-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=falseorg.apache.zookeeper.server.quorum.QuorumPeerMain/application/zookeeper/bin/../conf/zoo.cfg
root 2934 1 58 20:07 pts/0 00:00:49 /application/jdk/bin/java-Djava.util.logging.config.file=/application/tomcat/conf/logging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/application/tomcat/endorsed-classpath/application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar-Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat-Djava.io.tmpdir=/application/tomcat/temp org.apache.catalina.startup.Bootstrapstart
https://s1.运维网.com/wyfs02/M02/91/AD/wKiom1j3ZSnzYp3uAADcrFPNvt4427.png-wh_500x0-wm_3-wmp_4-s_3782922423.png
四、Java整合DUBBO
4、1服务端test1和客户端test2目录结构
https://s3.运维网.com/wyfs02/M00/91/AC/wKioL1j3ZUSCbMQJAAGgAdKB5pY665.png-wh_500x0-wm_3-wmp_4-s_3582587789.png
4、2服务端test1代码配置
4、2、1Java代码部分
package com.unj.dubbotest.provider;
import java.util.List;
public interface DemoService {
StringsayHello(String name);
public ListgetUsers();
}
package com.unj.dubbotest.provider;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class DemoServiceImpl implements DemoService{
public StringsayHello(String name) {
return"Hello " + name;
}
publicList getUsers() {
List list = new ArrayList();
User u1 =new User();
u1.setName("jack");
u1.setAge(20);
u1.setSex("男");
User u2 =new User();
u2.setName("tom");
u2.setAge(21);
u2.setSex("女");
User u3 =new User();
u3.setName("rose");
u3.setAge(19);
u3.setSex("女");
list.add(u1);
list.add(u2);
list.add(u3);
returnlist;
}
}
package com.unj.dubbotest.provider;
import java.io.Serializable;
/**
* 一定要实现序列化接口Serializable
* @author pc
*
*/
public class User implements Serializable{
private staticfinal long serialVersionUID = 1L;
private Stringname;
private Integerage;
private Stringsex;
public StringgetName() {
return name;
}
public voidsetName(String name) {
this.name =name;
}
public StringgetSex() {
return sex;
}
public voidsetSex(String sex) {
this.sex =sex;
}
public IntegergetAge() {
return age;
}
public voidsetAge(Integer age) {
this.age =age;
}
}
package com.unj.dubbotest.provider;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
public staticvoid main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = newClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
context.start();
System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
}
}
4、2、2XML代码部分
applicationContext.xml
pom.xml
4.0.0
test1
test1
0.0.1-SNAPSHOT
jar
test1
http://maven.apache.org
UTF-8
junit
junit
3.8.1
test
commons-logging
commons-logging
1.1.1
com.alibaba
dubbo
2.5.3
org.javassist
javassist
3.18.1-GA
log4j
log4j
1.2.15
com.sun.jdmk
jmxtools
com.sun.jmx
jmxri
jms
javax.jms
javax.mail
org.springframework
spring
2.5.6.SEC03
org.slf4j
slf4j-api
1.7.6
org.slf4j
slf4j-log4j12
1.6.1
org.apache.zookeeper
zookeeper
3.4.5
pom
com.101tec
zkclient
0.4
4、3客户端test2代码部分
4、3、1Java代码部分
package com.unj.dubbotest.provider;
import java.util.List;
public interface DemoService {
StringsayHello(String name);
public ListgetUsers();
}
package com.unj.dubbotest.provider;
import java.util.List;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
import com.unj.dubbotest.provider.DemoService;
public class Consumer {
public staticvoid main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = newClassPathXmlApplicationContext(
newString[] {"applicationContext.xml"});
context.start();
DemoServicedemoService = (DemoService) context.getBean("demoService"); //
Stringhello = demoService.sayHello("tom"); //
System.out.println(hello); //
//
List list = demoService.getUsers();
if (list !=null && list.size() > 0) {
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
//System.out.println(demoService.hehe());
System.in.read();
}
}
4、3、2XML代码部分
applicationContext.xml
pom.xml
4.0.0
test2
test2
0.0.1-SNAPSHOT
jar
test2
http://maven.apache.org
UTF-8
junit
junit
3.8.1
test
commons-logging
commons-logging
1.1.1
com.alibaba
dubbo
2.5.3
org.javassist
javassist
3.18.1-GA
log4j
log4j
1.2.15
com.sun.jdmk
jmxtools
com.sun.jmx
jmxri
jms
javax.jms
javax.mail
org.springframework
spring
2.5.6.SEC03
org.slf4j
slf4j-api
1.7.6
org.slf4j
slf4j-log4j12
1.6.1
com.github.adyliu
zkclient
2.0
org.apache.zookeeper
zookeeper
3.4.5
pom
test1
test1
0.0.1-SNAPSHOT
4、4运行服务
#记得一定先要clean install服务端Test1,再clean install客户端Test1
#先运行Test1服务端Provider,再运行Test2客户端Consumer
#结果为
Hello tom
com.unj.dubbotest.provider.User@4b93e13a
com.unj.dubbotest.provider.User@59a7cd99
com.unj.dubbotest.provider.User@17ab25cb
页:
[1]