(3) linux下zookeeper伪集群搭建

来源:互联网 发布:战舰世界雷鸣数据 编辑:程序博客网 时间:2024/05/21 17:53

这里以在一台机器上安装3个skServer为例,构建伪集群模式

1. 下载zookeeper

http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/


2. 解压到三个指定目录

比如:

/usr/local/zookeeper/zkServer1

/usr/local/zookeeper/zkServer2

/usr/local/zookeeper/zkServer3


3. 复制每一个conf/zoo_sample.cfg命名为zoo.cfg

eg: 

/usr/local/zookeeper/zkServer1/zookeeper-3.4.9/conf下的zoo_sample.cfg复制一份命名为zoo.cfg


4. 每个zoo.cfg配置

/usr/local/zookeeper/zkServer1/zookeeper-3.4.9/conf/zoo.cfg内容:

# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.#dataDir=/tmp/zookeeperdataDir=/usr/local/zookeeper/zkServer1/zookeeper-3.4.9/datadataLogDir=/usr/local/zookeeper/zkServer1/zookeeper-3.4.9/logs# the port at which the clients will connectclientPort=2181server.1=127.0.0.1:2887:3887server.2=127.0.0.1:2888:3888server.3=127.0.0.1:2889:3889

/usr/local/zookeeper/zkServer2/zookeeper-3.4.9/conf/zoo.cfg内容:

# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.#dataDir=/tmp/zookeeperdataDir=/usr/local/zookeeper/zkServer2/zookeeper-3.4.9/datadataLogDir=/usr/local/zookeeper/zkServer2/zookeeper-3.4.9/logs# the port at which the clients will connectclientPort=2182server.1=127.0.0.1:2887:3887server.2=127.0.0.1:2888:3888server.3=127.0.0.1:2889:3889

/usr/local/zookeeper/zkServer3/zookeeper-3.4.9/conf/zoo.cfg内容:

# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.#dataDir=/tmp/zookeeperdataDir=/usr/local/zookeeper/zkServer3/zookeeper-3.4.9/datadataLogDir=/usr/local/zookeeper/zkServer3/zookeeper-3.4.9/logs# the port at which the clients will connectclientPort=2183server.1=127.0.0.1:2887:3887server.2=127.0.0.1:2888:3888server.3=127.0.0.1:2889:3889


每一个zoo.cfg配置的clientPort不同,如果是多台机器,可以使用相同的2181端口,方便管理。

5. 在每个dataDir对应目录下新建myid文件

以上配置完成后,在对应的zookeeper-3.4.9下新建data,logs文件。

新建data和logs文件目录位置,取决于zoo.cfg文件中设置的dataDir和dataLogDir文件路径位置保持一致即可。

新建完data后,需要在dataDir对应目录data下新建myid文件,其中的内容必须与zoo.cfg中server.x 中的x相同,即:

/usr/local/zookeeper/zkServer1/zookeeper-3.4.9/data/myid 中的内容为1,对应server.1中的1

/usr/local/zookeeper/zkServer1/zookeeper-3.4.9/data/myid 中的内容为2,对应server.2中的2

/usr/local/zookeeper/zkServer1/zookeeper-3.4.9/data/myid 中的内容为3,对应server.3中的3

可以通过touch命令新建myid文件,vim编辑插入内容,然后保存并退出。

eg:

[root@lanhuigu data]# pwd

/usr/local/zookeeper/zkServer1/zookeeper-3.4.9/data

[root@lanhuigu data]# touch myid

[root@lanhuigu data]# vim myid

生产环境中,分布式集群部署的步骤与上面基本相同,只不过因为各zkSserver1,zkServer2,zkServer3分布在不同的机器,

上述配置文件中的127.0.0.1换成各服务器的真实Ip即可。分布在不同的机器后,不存在端口冲突问题,

可以让每个服务器的zk均采用相同的端口,这样管理起来比较方便。 


6. 启动服务

启动服务时需要指定zoo.cfg配置文件,比如:

[root@lanhuigu bin]# zkServer.sh start /usr/local/zookeeper/zkServer1/zookeeper-3.4.9/conf/zoo.cfg ZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper/zkServer1/zookeeper-3.4.9/conf/zoo.cfgStarting zookeeper ... STARTED
对于zkServer2、zkServer3启动类似。

服务启动后可以通过jps查看服务进程:

[root@lanhuigu zookeeper-3.4.9]# jps12336 QuorumPeerMain12278 QuorumPeerMain20976 Jps12238 QuorumPeerMain
或者通过ps -ef|grep zookeeper查看启动进程:



7. 防火墙

如果你的防火墙开启,需要开放zookeeper服务端口2181,2182,2183.

eg:

[root@lanhuigu data]# cd /etc/sysconfig/
[root@lanhuigu sysconfig]# vim iptables


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 2182 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2183 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2887 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3887 -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
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2889 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3889 -j ACCEPT


重启防火墙:[root@lanhuigu sysconfig]# service iptables restart
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

原创粉丝点击