zookeeper集群搭建

系统版本html

slave1java

[root@192 bin]# cat /etc/centos-releaselinux

CentOS Linux release 7.2.1511 (Core)apache

[root@192 bin]# uname -avim

Linux 192.168.1.102 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linuxcentos

 

slave1slave2服务器

[root@192 bin]# cat /etc/centos-releaseoracle

CentOS release 6.7 (Final)函数

[root@192 bin]# uname -a测试

Linux 192.168.1.103 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

 

IP

slave1 192.168.1.102/24

slave2 192.168.1.103/24

slave3 192.168.1.105/24

 

主机名称到IP地址映射配置:(全部机器都要设置)

vi /etc/hosts

    192.168.1.102   slave1

    192.168.1.103   slave2

    192.168.1.105   slave3

测试映射连通性:

[root@192 bin]# ping slave1

[root@192 bin]# ping slave2

[root@192 bin]# ping slave3

开始安装:

slave1端:

[root@192 ~]# mkdir /opop

[root@192 ~]# cd /opop

[root@192 opop]# yum -y install wget

[root@192 opop]# wget

http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz?AuthParam=1510054639_b19a5f91ff21950bbc82421241aecebc    #下载jdk1.8.0_151

[root@192 opop]# tar -zxvf jdk-8u151-linux-x64.tar.gz

[root@192 opop]# mv jdk1.8.0_151/ jdk1.8

[root@192 opop]# vi /etc/profile     #在最底下添加设置jdk的环境变量

      #set zookeeper environment

      export JAVA_HOME=/opop/jdk1.8

      export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

      export PATH=$JAVA_HOME/bin/:$PATH

[root@192 opop]# source /etc/profile     #使变量当即生效

[root@192 opop]# java -version       #检查java有没成功装上(查看java的版本)

[root@192 opop]# wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz         #下载zookeeper3.4.8

[root@192 opop]# tar -zxvf zookeeper-3.4.8.tar.gz

[root@192 opop]# cd zookeeper-3.4.8/conf

[root@192 conf]# cp zoo_sample.cfg zoo.cfg

[root@192 conf]#  vi zoo.cfg

      tickTime=2000            #默认项

      initLimit=10           #默认项

      syncLimit=5           #默认项

      dataDir=/tmp/zookeeper/data   #修改项

      clientPort=2181 #默认项

      server.1=slave1:2888:3888       #新加项,2888端口号是zookeeper服务之间通讯的端口

      server.2=slave2:2888:3888      #新加项,3888端口是zookeeper与其余应用程序通讯的端口

      server.3=slave3:2888:3888     #新加项

      maxClientCnxns=60       #按开启项

释:initLimit:配置zookeeper接收客户端(这里所说的客户端不是用户链接zookeeper服务器的客户端,而是指zookeeper服务器集群中链接到LeaderFollower服务器)初始化链接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳时间长度后zookeeper服务器尚未收到客户端的返回消息,那么代表这个客户端链接失败。总的时间长度就是5*2000=10秒。

syncLimit:配置LeaderFollower之间发送消息,请求和应答时间长度最长不能超过多少个ticketTime的时间长度,总的时间长度就是2*2000=4秒。

server.A=B:C: D 其中A是一个数字,表示这是第几号服务器。B是这台服务器的IP地址。C表示这台服务器与集群中的Leader服务器交换信息的端口。D表示的是万一集群中的Leader服务器挂了,须要一个端口来从新进行选举,选出一个新的Leader,这个端口就是用来执行选举时服务器相互通讯的端口。若是是伪集群的配置方式,因为B都是同样,因此不一样的zookeeper实例通讯端口号不能同样,因此要给他们分配不一样的端口号。

[root@192 opop]# scp -r /opop/zookeeper-3.4.8 slave2:/opop/

[root@192 opop]# scp -r /opop/zookeeper-3.4.8 slave3:/opop/

[root@192 opop]# scp -r /opop/jdk1.8/ slave2:/opop/

[root@192 opop]# scp -r /opop/jdk1.8/ slave3:/opop/

 

[root@192 opop]# mkdir -p /tmp/zookeeper/data/     #zoo.cfg文件中的dataDir指定的目录

[root@192 opop]# echo 1 /tmp/zookeeper/myid        #建立一个myid文件,里面内容为一个数字用来标识当前主机

释:编辑myid文件,并在对应的IP的机器上输入对应的编号。如在zookeepermyid文件内容就是1.若是只在单点上进行安装配置,那么只有一个server.1

[root@192 opop]# cat /tmp/zookeeper/myid     #查看myid

[root@192 opop]# cd zookeeper-3.4.8/bin/

[root@192 opop]# ./zkServer.sh start         #启动zookeeper

[root@192 opop]# tail -500f zookeeper.out     #查看zookeeper服务输出信息

slave2slave3端:

注:由于slave1端已经将包发送到slave2slave3了,so。。。。

[root@192 ~]# iptables -F

[root@192 ~]# setenforce 0

[root@192 ~]# mkdir /opop

[root@192 ~]# cd /opop

[root@192 opop]# mkdir -p /tmp/zookeeper

[root@192 opop]# echo 2 > /tmp/zookeeper/myid

[root@192 opop]# vim /etc/profile

      #set zookeeper environment

      export JAVA_HOME=/opop/jdk1.8

      export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

      export PATH=$JAVA_HOME/bin/:$PATH

[root@192 opop]# source /etc/profile

[root@192 opop]# java -version

[root@192 opop]# vim /opop/zookeeper-3.4.8/conf/zoo.cfg

      tickTime=2000              #默认项

      initLimit=10             #默认项

      syncLimit=5            #默认项

      dataDir=/tmp/zookeeper        #修改项

      clientPort=2181          #默认项

      server.1=slave1:2888:3888    #新加项

      server.2=slave2:2888:3888      #新加项

      server.3=slave3:2888:3888   #新加项

      maxClientCnxns=60       #按需打开项

[root@192 opop]# cd zookeeper-3.4.8/bin/

[root@192 bin]#  ./zkServer.sh start        #启动zookeeper

[root@192 bin]#  ./zkServer.sh status     #查看状态

 

#附:装了一次jdk9.0.1zookeeper3.4.9centos7上作出了点QuorumPeerMain的问题,这个牵扯到main函数(c语言),至于这个问题咱们不去深研究。

后来换成jdk1.8.0zookeeper3.4.8完成搭建zookeeper集群。

官方解释:http://zookeeper.apache.org/doc/trunk/zookeeperProgrammers.html

ZooKeeper会话

ZooKeeper客户端经过使用语言绑定建立服务的句柄来创建与ZooKeeper服务的会话。一旦建立完成,句柄将以CONNECTING状态启动,而且客户端库尝试链接到组成ZooKeeper服务的服务器之一,此时它将切换到CONNECTED状态。在正常的操做过程当中将处于这两个状态之一。若是发生不可恢复的错误,例如会话到期或身份验证失败,或者应用程序显式关闭了句柄,则句柄将移至CLOSED状态。下图显示了ZooKeeper客户端可能的状态转换:

 

要建立客户端会话,应用程序代码必须提供一个链接字符串,其中包含一个逗号分隔的hostport对列表,每一个对应于一个ZooKeeper服务器(例如“127.0.0.1:4545”或“127.0.0.1:3000,127.0.0.1 3001,127.0.0.13002" )。ZooKeeper客户端库将选择一个任意的服务器并尝试链接到它。若是此链接失败,或者客户端因为某种缘由而与服务器断开链接,则客户端将自动尝试列表中的下一个服务器,直到(从新)创建链接。

 

#####  至于zookeeper的集群原理去网上仔细看几遍相信屏幕前的你都能懂   good luck ~~########

相关文章
相关标签/搜索