您的位置:首页 > 运维架构 > Linux

Linux下zookeeper集群环境搭建

2018-01-26 00:47 716 查看
首先准备搭建环境所需要的安装包,我选择的jdk7.65和zookeeper 3.4.8的版本。
jdk-7u65-linux-x64.tar.gz (下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html )
zookeeper-3.4.8.tar.gz (下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.8/)

1.JDK安装
一般Linux的发行版本有预装openjdk,这里安装标准sun公司的jdk。
1.1查看当前机器安装的jdk
     rpm -qa | grep jdk
     出现如下结果表示是openjdk
java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64
java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64

     这种情况先卸载openjdk, 执行如下命令:
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64

1.2安装标准jdk
     将jdk的jar包复制到 /usr/local/java 目录下并执行如下命令解压:
     tar -zxvf jdk-7u65-linux-x64.tar.gz
1.3 配置Java环境变量 
     打开 /etc/profile 文件 :vim /etc/profile
     在文件末尾追加如下内容:
JAVA_HOME=/usr/local/java/jdk1.7.0_65
JRE_HOME=/usr/local/java/jdk1.7.0_65/jre
PATH=$JAVA_HOME/bin:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
CLASSPATH=.:$JAVAHOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export JAVA_HOME JRE_HOME PATH CLASSPATH

     执行如下命令使配置生效: source /etc/profile

1.4检查jdk是否安装成功

     执行如下命令: java -version
     出现如下结果表示Java环境安装成功



2.Zookeeper安装
2.1 zookeeper配置
     解压zookeeper的安装包zookeeper-3.4.8.tar.gz,进入主目录。将conf目录下的zoo_sample.cfg文件复制一份并命名为zoo.cfg,操作命令如下: cp conf/zoo_sample.cfg conf/zoo.cfg
     新建一个数据存储目录 data:mkdir data
     打开zookeeper的配置文件conf/zoo.cfg并配置如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/sfapp/zookeeper-3.4.8/data
clientPort=2181
server.1=10.118.70.165:2888:3888
server.2=10.118.70.166:288
4000
8:3888
server.3=10.118.70.167:2888:3888

    以同样的配置将zookeeper安装到其他两台机器上。
    在dataDir目录下(即上面配置的目录/home/sfapp/zookeeper-3.4.8/data)创建一个 myid 文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中的X即为这个数字标识。
     在10.118.70.165机器上的/home/sfapp/zookeeper-3.4.8/data目录下新建文件 myid ,写入内容 1;
     在10.118.70.166机器上的/home/sfapp/zookeeper-3.4.8/data目录下新建文件 myid ,写入内容 2;
     在10.118.70.167机器上的/home/sfapp/zookeeper-3.4.8/data目录下新建文件 myid ,写入内容 3;
2.2 启动zookeeper
     建好后分别在每台机器上启动zookeeper,启动命令如下: bin/zkServer.sh start
     查看zookeeper的日志文件,主目录下的zookeeper.out文件,发现前面两台机器的启动日志里有如下异常:
2017-11-09 19:34:48,084 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@400] - Cannot open channel to 3 at election address /10.202.7.165:3888
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:381)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:354)
at org.apache.zookeeper.server.quorum.FastLeaderElectionMessengerMessengerWorkerSender.process(FastLeaderElection.java:452)
at org.apache.zookeeper.server.quorum.FastLeaderElectionMessengerMessengerWorkerSender.run(FastLeaderElection.java:433)
at java.lang.Thread.run(Thread.java:745)

     因为启动第一台机器时,它会去连接其它的两台机器,由于启动顺序的先后,导致连接不成功,所以当所有机器上的zookeeper全部起来后就不会出现改类日志。
2.3 验证zookeeper
     在各个zookeeper节点上执行如下命令,查看当前zookeeper的状态 :  bin/zkServer.sh status
     10.118.70.165上的结果为:
ZooKeeper JMX enabled by default
Using config: /home/sfapp/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: follower

     10.118.70.166上的结果为:

ZooKeeper JMX enabled by default
Using config: /home/sfapp/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: leader


     10.118.70.167上的结果为:
ZooKeeper JMX enabled by default
Using config: /home/sfapp/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: follower

    此时表明zookeeper集群配置成功。10.202.7.66上的zookeeper被选举为leader,而其他两台机器为follower。
    检查三台机器是否均已启动,可通过jps查看,有QuorumPeerMain进程代表当前机器zookeeper已经启动(但启动成功与否无法判断)
执行如下连接命令即可连接到该zookeeper集群: bin/zkCli.sh -server 10.118.70.165:2181,10.118.70.166:2181,10.118.70.167:2181
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: