zookeeper+dubbo 服务器伪集群搭建

1. JDK1.7环境变量配置:

可以看到系统自带的OpenJDK版本信息 : java –version
查看支持的JDK版本 : yum -y list java*
解压 : tar -zxvf jdk-7u80-linux-x64.tar.gz
配置环境变量 : vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_80
export JAVA_BIN=/usr/java/jdk1.7.0_80/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATHSPH
环境配置立即生效 : source /etc/profile

2. Tomcat7.0.94

tar -zxvf apache-tomcat-7.0.94.tar.gz
配置环境变量 : cd /etc/profile
export CATALINA_HOME=/usr/local/apache-tomcat-7.0.94
环境配置文件生效 : source /etc/profile
修改配置文件 : vim conf/server.xml
启动tomcat测试 : ./startup.sh -> 212.129.137.111:8010

3. zookeeper3.4.5

解压 : tar -zxvf zookeeper-3.4.5.tar.gz
复制多个配置文件重新并命名 : 
cp zoo_sample.cfg zoo1.cfg
cp zoo_sample.cfg zoo2.cfg
cp zoo_sample.cfg zoo3.cfg
创建zK Data路劲 : 
mkdir ZKData 
mkdir data1
mkdir data2
mkdir data3

创建zk Log路劲 :
mkdir ZKLog
mkdir Log1
mkdir Log2
mkdir Log3
data1/data2/data3路劲下面创建myid文件 :
echo 1 > myid
echo 2 > myid
echo 3 > myid

修改zoo1.cfg/zoo2.cfg/zoo3.cfg配置文件 :
dataDir=/usr/local/zookeeper-3.4.5/ZKData/data1
dataDir=/usr/local/zookeeper-3.4.5/ZKData/data2
dataDir=/usr/local/zookeeper-3.4.5/ZKData/data3
dataLogDir=/usr/local/zookeeper-3.4.5/ZKLog/Log1
dataLogDir=/usr/local/zookeeper-3.4.5/ZKLog/Log2
dataLogDir=/usr/local/zookeeper-3.4.5/ZKLog/Log3
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

server.A=B:C:D 具体含义:
A是一个数字,表示这个是第几号服务器,
B是这个服务器的ip地址
C第一个端口用来集群成员的信息交换,表示的是这个服务器与集群中的Leader服务器交换信息的端口
D是在leader挂掉时专门用来进行选举leader所用
这个A的数字就是对应我们在data目录下创建的myid文件里面的值

配置文件参数意思 : 
tickTime:这个时间(单位:毫秒)是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir:保存数据的目录
dataLogDir:保存日志文件的目录
clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口

#ZK环境变量 并 生效
        export ZOOKEEPER_INSTALL=/usr/local/zookeeper-3.4.5
        export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
        source /etc/profile
启动zK服务器 : zkServer.sh start conf/zoo1.cfg
查看ZK状态 : zkServer.sh status conf/zoo1.cfg
启动ZK客户端 : zkCli.sh -server 127.0.0.1:2181

4. dubbo.war

上传到tomcat -> webapps目录下
dubbo.properties
启动tomcat

执行完以上过程,可以进入到ZK客户端各个端口查看注册进来的dubbo信息.这样就完成了一个伪集群的搭建.正式集群搭建无非就是多几台服务器ip,基本思路差的不多

ZK补充

zk的master选举 ?

原理:
服务器争抢创建标志为Master的临时节点
服务器监听标志为Master的临时节点,当监测到节点删除事件后展开新的一轮争抢
某个服务器成功创建则为Master

zk集群为什么是基数个?

首先需要了解到集群有可能存在的一种情况,就是脑裂.这种情况发生在节点通信不可达的情况下,集群就会分裂成好几个小集群,然后每一组小集群会会各自选举出属于自己的master节点,导致出现多个master节点.

来看下面关于奇数个节点和偶数个节点脑裂的各种情况 :

假如zk集群有5个节点,脑裂后成了AB2个小集群
a).A:一个 B:四个 AB可互换
b).A:两个 B:三个 AB可互换
假如zk集群有4个节点,脑裂后成了CD2个小集群
c). C:一个 D:三个 CD可互换
d). C:两个 D:两个
AB中的ab总有一个小集群是可用节点数 > 总结点数/2,ZK集群还是可以选举leader,仍然可以对外提供服务,但还是有一部分节点会失效
CD中的c满足leader选举条件,但是d中的AB不满足leader选举条件可用节点数 > 总结点数/2,会有可能导致zk彻底不提供服务,存在不能用的可能性

假如zookeeper集群1 ,有3个节点,3/2=1.5 , 即zookeeper想要正常对外提供服务(即leader选举成功),至少需要2个节点是正常的。换句话说,3个节点的zookeeper集群,允许有一个节点宕机
假如zookeeper集群2,有4个节点,4/2=2 , 即zookeeper想要正常对外提供服务(即leader选举成功),至少需要3个节点是正常的。换句话说,4个节点的zookeeper集群,也允许有一个节点宕机
集群1与集群2都有 允许1个节点宕机 的容错能力,但是集群2比集群1多了1个节点。在相同容错能力的情况下,本着节约资源的原则,zookeeper集群的节点数维持奇数个更好一些

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值