Centos6安装配置Zookeeper

概述: 为什么要使用zookeeper?centos安装配置zookeeper,zookeeper的主要实际运用场景有4种,java+dubbo+zookeeper实现分布式服务.

原文地址:http://www.maoyupeng.com/how-to-install-zookeeper-on-centos6.html

zookeeper的实际运用场景

节选自夏天的森林的博文

场景一: 有一组服务器向客户端提供某种服务(例如:我前面做的分布式网站的服务端,就是由四台服务器组成的集群,向前端集群提供服务),我们希望客户端每次请求服务端都可以找到服务端集群中某一台服务器,这样服务端就可以向客户端提供客户端所需的服务。对于这种场景,我们的程序中一定有一份这组服务器的列表,每次客户端请求时候,都是从这份列表里读取这份服务器列表。那么这分列表显然不能存储在一台单节点的服务器上,否则这个节点挂掉了,整个集群都会发生故障,我们希望这份列表时高可用的。高可用的解决方案是:这份列表是分布式存储的,它是由存储这份列表的服务器共同管理的,如果存储列表里的某台服务器坏掉了,其他服务器马上可以替代坏掉的服务器,并且可以把坏掉的服务器从列表里删除掉,让故障服务器退出整个集群的运行,而这一切的操作又不会由故障的服务器来操作,而是集群里正常的服务器来完成。这是一种主动的分布式数据结构,能够在外部情况发生变化时候主动修改数据项状态的数据机构。Zookeeper框架提供了这种服务。这种服务名字就是:统一命名服务,它和javaEE里的JNDI服务很像。

场景二: 分布式锁服务。当分布式系统操作数据,例如:读取数据、分析数据、最后修改数据。在分布式系统里这些操作可能会分散到集群里不同的节点上,那么这时候就存在数据操作过程中一致性的问题,如果不一致,我们将会得到一个错误的运算结果,在单一进程的程序里,一致性的问题很好解决,但是到了分布式系统就比较困难,因为分布式系统里不同服务器的运算都是在独立的进程里,运算的中间结果和过程还要通过网络进行传递,那么想做到数据操作一致性要困难的多。Zookeeper提供了一个锁服务解决了这样的问题,能让我们在做分布式数据运算时候,保证数据操作的一致性。

场景三: 配置管理。在分布式系统里,我们会把一个服务应用分别部署到n台服务器上,这些服务器的配置文件是相同的(例如:我设计的分布式网站框架里,服务端就有4台服务器,4台服务器上的程序都是一样,配置文件都是一样),如果配置文件的配置选项发生变化,那么我们就得一个个去改这些配置文件,如果我们需要改的服务器比较少,这些操作还不是太麻烦,如果我们分布式的服务器特别多,比如某些大型互联网公司的hadoop集群有数千台服务器,那么更改配置选项就是一件麻烦而且危险的事情。这时候zookeeper就可以派上用场了,我们可以把zookeeper当成一个高可用的配置存储器,把这样的事情交给zookeeper进行管理,我们将集群的配置文件拷贝到zookeeper的文件系统的某个节点上,然后用zookeeper监控所有分布式系统里配置文件的状态,一旦发现有配置文件发生了变化,每台服务器都会收到zookeeper的通知,让每台服务器同步zookeeper里的配置文件,zookeeper服务也会保证同步操作原子性,确保每个服务器的配置文件都能被正确的更新。

场景四: 为分布式系统提供故障修复的功能。集群管理是很困难的,在分布式系统里加入了zookeeper服务,能让我们很容易的对集群进行管理。集群管理最麻烦的事情就是节点故障管理,zookeeper可以让集群选出一个健康的节点作为master,master节点会知道当前集群的每台服务器的运行状况,一旦某个节点发生故障,master会把这个情况通知给集群其他服务器,从而重新分配不同节点的计算任务。Zookeeper不仅可以发现故障,也会对有故障的服务器进行甄别,看故障服务器是什么样的故障,如果该故障可以修复,zookeeper可以自动修复或者告诉系统管理员错误的原因让管理员迅速定位问题,修复节点的故障。大家也许还会有个疑问,master故障了,那怎么办了?zookeeper也考虑到了这点,zookeeper内部有一个“选举领导者的算法”,master可以动态选择,当master故障时候,zookeeper能马上选出新的master对集群进行管理。

我使用zookeeper更多是关联场景一的.这里就不多介绍zookeeper了.有兴趣的朋友可以自行去了解,我们看看下面的内容,了解下怎么安装zookeeper吧.....

安装准备

修改操作系统的hosts

查看本机ip,且记住ip添加一条记录到hosts,如下图,我的ip是10.211.55.27

毛宇鹏博客
# 编辑hosts
vim /etc/hosts


# 未修改前
127.0.0.1 localhost
::1       localhost


# 修改后
127.0.0.1 localhost
# 添加一行,[ip name],随便起个名字:mao-101 
10.211.55.27 mao-101
::1       localhost
毛宇鹏博客

下载zookeeper

zookeeper-3.4.6版本百度云盘下载 : http://pan.baidu.com/s/1miwdKRA

安装及配置

解压zookeeper文件

将下载到的zookeeper-3.4.6.tar.gz安装文件上传到服务器的/home目录,解压后进入根目录创建data文件夹和logs文件夹

cd /home
tar -zxvf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6
mkdir data
mkdir logs

配置zoo.cfg文件

进入conf目录,将zoo_sample.cfg重命名或拷贝一份,且命名为zoo.cfg

# 重命名
cd /home/zookeeper-3.4.6/conf/ && mv zoo_sample.cfg zoo.cfg
# 拷贝
cd /home/zookeeper-3.4.6/conf/ && cp zoo_sample.cfg zoo.cfg

修改zoo.cfg配置

tickTime=2000
initLimit=10
syncLimit=5

# 指向zookeeper目录下的data目录
dataDir=/home/zookeeper-3.4.6/data
# 增加日志目录
dataLogDir=/home/zookeeper-3.4.6/logs

clientPort=2181

#添加服务通讯端口以及程序通讯端口
#mao-101我们已经在 hosts里面配置过
server.1=mao-101:2888:3888

创建myid文件

在配置文件中,dataDir配置的目录下,创建myid文件,内容为1

cd /home/zookeeper-3.4.6/data
vim myid

# 加入内容:1   保存退出vim
1

增加zookeeper环境变量

编辑文件 /etc/profile,添加如下:

export ZOOKEEPER_HOME=/home/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH
毛宇鹏博客

立即生效

source /etc/profile

打开防火墙端口

sudo su

chkconfig iptables on
service iptables start

#编辑iptables
vim /etc/sysconfig/iptables
#增加以下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT


# 重启防火墙并查看端口状态
service iptables restart
#状态如下图
service iptables status
毛宇鹏博客

毛宇鹏博客

测试

zkServer.sh start

# 输出QuorumPeerMain就证明启动成功
jps
毛宇鹏博客

添加zookeeper开机启动

// 切换到init.d目录
cd /etc/rc.d/init.d

// 创建zookeeper文件并更新权限
touch zookeeper && chmod +x zookeeper

// 编辑zookeeper文件,并添加如下内容
vim zookeeper

====下面是文件内容=====

#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
export JAVA_HOME=/usr/local/jdk7
export PATH=$JAVA_HOME/bin:$PATH
case $1 in
         start) su root /home/zookeeper-3.4.6/bin/zkServer.sh start;;
         stop) su root /home/zookeeper-3.4.6/bin/zkServer.sh stop;;
         status) su root /home/zookeeper-3.4.6/bin/zkServer.sh status;;
         restart) su root /home/zookeeper-3.4.6/bin/zkServer.shrestart;;
         *)  echo "requirestart|stop|status|restart"  ;;
esac


// 添加到开机启动
chkconfig zookeeper on
chkconfig --add zookeeper

// 启动或停止
service zookeeper start | stop | restart

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容