在 Linux 多节点安装配置 Apache Zookeeper 分布式集群
规划:
三台物理服务器就形成了(法定人数)。对于高可用性集群,您可以使用高于3的任何奇数。例如,如果设置5台服务器,则集群可以处理两个故障节点等。
物理服务器需要开启的端口 2888 , 3888 和 2181 上有入站连接。如果启用了 IPtables 或 Firewall,请确保启用指定的端口,因为zookeeper 需要通过这些端口进行通信。
OS:Centos 7.4 x64
Zookeeper-3.4.10
在本教程中,我们将在以下3台服务器部署zookeeper分布式群集:
10.10.204.63
10.10.204.64
10.10.204.65
先决条件:
在安装 Zookeeper 之前,你应该在系统中安装并配置好 JDK(Oracle Java8),这将与Zookeeper配合使用。
《Linux JAVA JDK JRE 环境变量安装与配置》
步骤1: 在各个实例上安装Zookeeper。
下载Zookeeper
# cd /tmp
# wget http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.10.tar.gz
解压它
# tar zxvf zookeeper-3.4.10.tar.gz
移动 Zookeeper 到 /usr/local/ 下
# mv zookeeper-3.4.10 /usr/local/
创建软连接
# ln -s /usr/local/zookeeper-3.4.10 /usr/local/zookeeper
拷贝配置文件
# cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
创建数据及日志存放目录
# mkdir -p /usr/local/zookeeper/data
# mkdir -p /usr/local/zookeeper/logs
新建用户
# groupadd zookeeper
# useradd -g zookeeper -s /sbin/nologin zookeeper
赋予Zookeeper目录权限
# chown -R zookeeper:zookeeper /usr/local/zookeeper-3.4.10 /usr/local/zookeeper
# chmod +755 /usr/local/zookeeper-3.4.10
步骤2:修改配置文件。
# vim /usr/local/zookeeper/conf/zoo.cfg默认值:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to “0” to disable auto purge feature
#autopurge.purgeInterval=1修改为:
#服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳。
tickTime=2000
#这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper 服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower 服务器)初始化连接时最长 能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
initLimit=10
#这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒(适用于3.4以上版本)。
syncLimit=5
#这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。
autopurge.snapRetainCount=3
#这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能(适用于3.4以上版本)。
autopurge.purgeInterval=1
maxClientCnxns=60
#修改数据目录(可以是任意目录)。
dataDir=/usr/local/zookeeper/data
#新增日志目录(可以是任意目录)。
dataLogDir=/usr/local/zookeeper/logs
#Zookeeper服务器监听的端口,以接受客户端的访问请求。
clientPort=2181
#新增以下内容。
server.1=10.10.204.63:2888:3888
server.2=10.10.204.64:2888:3888
server.3=10.10.204.65:2888:3888
步骤3:分别在各个Zookeeper实例中创建myid文件。
# echo "1" >> /usr/local/zookeeper/data/myid
# echo "2" >> /usr/local/zookeeper/data/myid
# echo "3" >> /usr/local/zookeeper/data/myid
步骤4:添加系统变量。
编辑:/etc/profile 文件,添加以下内容:
export ZOOKEEPER_HOME=/usr/local/zookeeper/
export PATH=$ZOOKEEPER_HOME/bin:$PATH执行以下命令使其系统变量永久生效:
# source /etc/profile
步骤5:创建系统单元文件。
在 /usr/lib/systemd/system 目录下创建 zookeeper.service ,并填写如下内容:
[Unit]
Description=zookeeper.service
After=network.target [Service]
Type=forking
Environment=ZOO_LOG_DIR=/usr/local/zookeeper/
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
ExecReload=/usr/local/zookeeper/bin/zkServer.sh restart
Restart=always
User=zookeeper
Group=zookeeper [Install]
WantedBy=multi-user.target
步骤6:启动Zookeeper。
重新加载配置信息:systemctl daemon-reload
启动zookeeper服务:systemctl start zookeeper.service
关闭zookeeper服务:systemctl stop zookeeper.service
查看进程状态及日志:systemctl status zookeeper.service
开机自启动:systemctl enable zookeeper.service
关闭自启动:systemctl disable zookeeper.service
步骤7:放行 2888、3888、2181 端口。
# firewall-cmd --permanent --zone=public --add-port=2888/tcp
# firewall-cmd --permanent --zone=public --add-port=3888/tcp
# firewall-cmd --permanent --zone=public --add-port=2181/tcp重载防火墙:
# firewall-cmd --reload
步骤8:查看Zookeeper状态
分别检测3台服务器的运行状态是否正常。
查看 10.10.204.63 节点;
[root@10-10-204-63 ~]# /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader查看 10.10.204.64 节点;
[root@10-10-204-64 ~]# /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower查看 10.10.204.65 节点;
[root@10-10-204-65 ~]# /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower服务器中ZooKeeper分别扮演者不同的角色,1台将处于 leader(领导)地位,另外2台将处于 follower (追随者)。如果您获得相同的结果,那么你已经正确地安装配置好了ZooKeeper集群服务器。
步骤9:在3台物理服务器中的任意一台使用客户端连接。
客户端连接信息如下所示:
[root@10-10-204-63 ~]# /usr/local/zookeeper/bin/zkCli.sh -server 10.10.204.64:2181
Connecting to 10.10.204.64:2181
2017-08-13 20:30:11,816 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
2017-08-13 20:30:11,863 [myid:] - INFO [main:Environment@100] - Client environment:host.name=103-28-204-63.10.10.204.63
2017-08-13 20:30:11,863 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_144
2017-08-13 20:30:11,875 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2017-08-13 20:30:11,883 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/java/jdk1.8.0_144/jre
2017-08-13 20:30:11,883 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper/bin/../build/classes:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/bin/../zookeeper-3.4.10.jar:/usr/local/zookeeper/bin/../src/java/lib/*.jar:/usr/local/zookeeper/bin/../conf:.:/usr/java/jdk1.8.0_144/jre/lib/rt.jar:/usr/java/jdk1.8.0_144/lib/dt.jar:/usr/java/jdk1.8.0_144/lib/tools.jar:/usr/java/jdk1.8.0_144/jre/lib
2017-08-13 20:30:11,884 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2017-08-13 20:30:11,884 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2017-08-13 20:30:11,884 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=
2017-08-13 20:30:11,884 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
2017-08-13 20:30:11,884 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
2017-08-13 20:30:11,885 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-514.21.2.el7.x86_64
2017-08-13 20:30:11,885 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
2017-08-13 20:30:11,885 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
2017-08-13 20:30:11,885 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/root
2017-08-13 20:30:11,893 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=10.10.204.64:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@69d0a921
Welcome to ZooKeeper!
2017-08-13 20:30:12,103 [myid:] - INFO [main-SendThread(10.10.204.64:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 10.10.204.64/10.10.204.64:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2017-08-13 20:30:12,768 [myid:] - INFO [main-SendThread(10.10.204.64:2181):ClientCnxn$SendThread@876] - Socket connection established to 10.10.204.64/10.10.204.64:2181, initiating session
2017-08-13 20:30:12,935 [myid:] - INFO [main-SendThread(10.10.204.64:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 10.10.204.64/10.10.204.64:2181, sessionid = 0x15dda7deb6c0000, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null
[zk: 10.10.204.64:2181(CONNECTED) 2] create /renwoledb 'renwole' #创建数据节点
Created /renwoledb
[zk: 10.10.204.64:2181(CONNECTED) 3] get /renwoledb #调出节点数据
renwole
cZxid = 0x500000002
ctime = Sun Aug 13 21:19:24 CST 2017
mZxid = 0x500000002
mtime = Sun Aug 13 21:19:24 CST 2017
pZxid = 0x500000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
整个zookeeper集群到此已经搭建并测试完成。如果 leader 节点出现故障,其他 follower (追随者)会投票选择新的 leader ,所以这就是我们想要的 Zookeeper 分布式集群。
转载请注明本文地址。
版权声明:本站原创文章,欢迎任何形式的转载。
转载请注明:在 Linux 多节点安装配置 Apache Zookeeper 分布式集群 | 任我乐
在 Linux 多节点安装配置 Apache Zookeeper 分布式集群的更多相关文章
- Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战
Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...
- Zookeeper分布式集群搭建
实验条件:3台安装linux的机子,配置好Java环境. 步骤1:下载并分别解包到每台机子的/home/iHge2k目录下,附上下载地址:http://mirrors.cnnic.cn/apache/ ...
- 一脸懵逼搭建Zookeeper分布式集群
1:首先将http://zookeeper.apache.org/ 下载好的zookeeper-3.4.5.tar.gz上传到三台虚拟机上,之前博客搭建好的(安装Zookeeper之前记得安装好你的j ...
- apache+tomcat分布式集群搭建
今天搭建apche+tomcat分布式集群,遇到很多问题,在网上找到的很多都不成功,然后和同事一起研究了一下,最终搭建成功了.做个笔记,以备自己以后参考. 1,下载apache.在下载Apache(2 ...
- ZooKeeper分布式集群安装
我特意选择了稳定版...... 奇数意思是说奇数和偶数对故障的容忍度是一致的....所以建议配置奇数个,并不是必须奇数... 一.master节点上安装配置 1.下载并解压ZooKeeper-3.4. ...
- Linux安装ElasticSearch与MongoDB分布式集群环境下数据同步
ElasticSearch有一个叫做river的插件式模块,可以将外部数据源中的数据导入elasticsearch并在上面建立索引.River在集群上是单例模式的,它被自动分配到一个节点上,当这个节点 ...
- CDH集群安装配置(三)- 集群时间同步(主节点)和 免密码登录
集群时间同步(主节点) 1. 查看是否安装ntp服务,如果没有安装 rpm -qa |grep ntpd查看命令 yum install ntp安装命令 2. 修改配置 vi /etc/ntp.con ...
- Hadoop+HBase+ZooKeeper分布式集群环境搭建
一.环境说明 集群环境至少需要3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以相互ping通,下面举例说明,配置节点IP分配如下: Hostname IP ...
- 详细版在虚拟机安装和使用hadoop分布式集群
集群模式: 一台master 192.168.85.2 一台slave 192.168.85.3 jdk jdk1.8.0_74(版本不重要,看喜欢) hadoop版本 2.7.2(版本不重要,2. ...
随机推荐
- 邻面合并(merging)
邻面合并(merging) 题目描述 给定一个N×MN×M的网格,每个格子上写有0或1.现在用一些长方形覆盖其中写有1的格子,长方形的每条边都要与坐标轴平行.要求:每个写着1的格子都要被覆盖,长方形不 ...
- LVS Mode&Method
LVS NAT 模式: Summary: 普通的NAT模式为DNAT,即只更改目的地址,不改源端口. LVS在转发报文时,将Client的源IP透传给Server,类似于透明传输. 优点: 1. 可提 ...
- 预编译scss以及scss和less px 转rem
预编译scss步骤: 1 搜索ruby并安装,点击 2 安装sass: 3 在hubuilder工具中设置预编译: 触发命令地址为ruby安装地址 命令参数为 %FileName% %FileBase ...
- pom.xml(Project Object Model) 文件简单介绍
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- .net web api ioc unity usage
1.use nuget to install unity.webapi 2.add configurations in application_start folder using Microsoft ...
- maven中的继承和聚合的关系
maven中的继承和聚合的关系:两者的目的是不一样的,聚合的目的是能够快速的构建项目,继承的目的是减少重复配置.聚合:定义一个聚合模块,然后在pom文件中添加<module></mo ...
- Selenium2+python自动化1(环境安装)
前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium2为基础,目前selenium3坑比较多,暂 ...
- 学习总结——JMeter做http接口压力测试
JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做 ...
- html table 使用总结
html中的table是一个历史相当悠久的标签,它能够很方便的实现数据的表格展示.虽然table是个很基础的标签,但是想用好还是对css相关知识有要求的. 由于table标签中自带的属性操作起来略为麻 ...
- HDU 1018 Big Number【斯特林公式/log10 / N!】
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...