Installation zookeeper: stand-alone mode, the dummy pattern cluster, the cluster mode

zookeeper installation is divided into three modes: Standalone mode, the dummy pattern cluster and cluster mode.

Zookeeper need to use the installation file, to http://zookeeper.apache.org/ through the download link to download.

First, the stand-alone mode installation ZooKeeper
. 1, set the environment variable

1
2
3
4
5
6
7
8
9
$ ZK_FILE=/vagrant/zookeeper-3.4.13.tar.gz
$ ZK_INSTALL_PATH=/opt/zk
$ ZK_INSTALL_DIR=$ZK_INSTALL_PATH/zookeeper-3.4.13
$ ZK_DATA_DIR=$ZK_INSTALL_PATH/zookeeper-3.4.13/data
$ ZK_LOG_DIR=$ZK_INSTALL_PATH/zookeeper-3.4.13/log
$ ZK_CFG=$ZK_INSTALL_DIR/conf/zoo.cfg
$ ZK_SERVER_ID=1
$ ZK_PORT=2181
$ ZK_SERVER_LIST=server.1=127.0.0.1:2888:3888

prepare-install-env

2, to create the installation directory and extract the installation directory zk

1
2
3
$ mkdir -p $ZK_INSTALL_PATH	
$ tar -zxvf $ZK_FILE -C $ZK_INSTALL_PATH >> /var/null
$ ls -l $ZK_INSTALL_PATH

make-dir-and-uzip

3, the new data and log directory, which generates myid file, copy the configuration file zoo.cfg

1
2
3
4
5
$ mkdir $ZK_DATA_DIR
$ mkdir $ZK_LOG_DIR
$ echo $ZK_SERVER_ID >> $ZK_DATA_DIR/myid
$ cp $ZK_INSTALL_DIR/conf/zoo_sample.cfg $ZK_CFG
$ cat $ZK_CFG

copy-zoo-cfg

4, configuration zoo.cfg data directory, log directory, port number, and confirm the configuration server list

1
2
3
4
5
6
$ sed -i 's#dataDir=/tmp/zookeeper#dataDir='$ZK_DATA_DIR'#' $ZK_CFG
$ sed -i '$a dataLogDir='$ZK_LOG_DIR $ZK_CFG
$ sed -i 's/2181/'$ZK_PORT'/g' $ZK_CFG
$ sed -i '$a '$ZK_SERVER_LIST $ZK_CFG

$ cat $ZK_CFG

config-zoo-cfg

5、启动zk并查看状态

1
2
$ sh $ZK_INSTALL_DIR/bin/zkServer.sh start 
$ sh $ZK_INSTALL_DIR/bin/zkServer.sh status

start-zookeeper

6、利用zkCli操作zk

1
$ sh $ZK_INSTALL_DIR/bin/zkCli.sh

use-zk-cli

可以输入以下命令进行操作, 查看结果

1
2
3
> ls / 
> create /test value1
> get /test

zk-cli-command

二、通过vagrant一键安装单机版的zookeeper
1、整理一中的shell命令成zk-install.sh脚本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>zk压缩包路径>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_FILE
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>zk安装路径&安装目录>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_INSTALL_PATH
echo $ZK_INSTALL_DIR
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>zk数据目录&日志目录>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_DATA_DIR
echo $ZK_LOG_DIR
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>zk的myid>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_SERVER_ID
echo ">>>>>>>>>>>>>>>>>>>>>>>>>zk端口及服务器列表>>>>>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_PORT
echo $ZK_SERVER_LIST

echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>zk配置文件>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
ZK_CFG=$ZK_INSTALL_DIR/conf/zoo.cfg
echo $ZK_CFG

echo ">>>>>>>>>>>>>>>>>>>>新建zk安装目录并解压zk到该目录>>>>>>>>>>>>>>>>>>>"
mkdir -p $ZK_INSTALL_PATH

tar -zxvf $ZK_FILE -C $ZK_INSTALL_PATH >> /var/null


echo ">>>>>>>>>>>>>>>>>>>>>新建zk数据和日志目录及myid>>>>>>>>>>>>>>>>>>>>>"
mkdir $ZK_DATA_DIR
mkdir $ZK_LOG_DIR
echo $ZK_SERVER_ID >> $ZK_DATA_DIR/myid

echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>配置zoo.cfg>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
cp $ZK_INSTALL_DIR/conf/zoo_sample.cfg $ZK_CFG

sed -i 's#dataDir=/tmp/zookeeper#dataDir='$ZK_DATA_DIR'#' $ZK_CFG
sed -i '$a dataLogDir='$ZK_LOG_DIR $ZK_CFG
sed -i 's/2181/'$ZK_PORT'/g' $ZK_CFG
sed -i '$a '$ZK_SERVER_LIST $ZK_CFG

tail -n 20 $ZK_CFG
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>启动zk>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
sh $ZK_INSTALL_DIR/bin/zkServer.sh start

2、新建Vagrantfile文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

# vi: set ft=ruby :

Vagrant.configure("2") do |config|
#设置虚拟机的box
config.vm.box = "centos7-base-jdk8"


#设置虚拟机的主机名
config.vm.hostname = "centos7-jdk8-zk-standalone"
#设置ip
config.vm.network "private_network", ip: "192.168.13.10"
#Virtualbox相关配置
config.vm.provider "virtualbox" do |v|
#设置虚拟机的名称
v.name = "centos7-jdk8-zk-standalone"

#设置虚拟机的内存大小为2G
v.memory = 大专栏  zookeeper安装:单机模式、伪集群模式、集群模式r">2048

#设置虚拟机的CPU个数
v.cpus = 2
end

#使用shell脚本进行软件安装和配置
config.vm.provision "shell" do |s|
s.path = "zk-install.sh"
s.env = {ZK_FILE: "/vagrant/zookeeper-3.4.13.tar.gz",
ZK_INSTALL_PATH: "/opt/zk",
ZK_INSTALL_DIR: "/opt/zk/zookeeper-3.4.13",
ZK_PORT: "2181",
ZK_DATA_DIR: "/opt/zk/zookeeper-3.4.13/data",
ZK_LOG_DIR: "/opt/zk/zookeeper-3.4.13/log",
ZK_SERVER_ID: "1",
ZK_SERVER_LIST: "server.1=127.0.0.1:2888:3888"}
end
end

3、通过vagrant up启动虚拟机

vagrant-up-standardlone-1

vagrant-up-standardlone-2

三、通过vagrant一键安装zookeeper伪集群
1、zk伪集群指的是在一台集群上安装zk集群
需要注意每个zk进程对外端口(默认2181,用于客户端链接zk集群),选主端口(默认3888-进行leader选举时使用的端口),集群通信端口(默认2888-集群follow链接leader的通信端口)配置不冲突。
myid=1, 2181, 2888, 3888
myid=2, 2182, 2887, 3887
myid=3, 2183, 2886, 3886

2、zk-install.sh同二使用的是相同内容,Vagrantfile如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107


# vi: set ft=ruby :

Vagrant.configure("2") do |config|
#设置虚拟机的box
config.vm.box = "centos7-base-jdk8"

#设置虚拟机的主机名
config.vm.hostname = "centos7-jdk-zk-local-cluster"

#Virtualbox相关配置
config.vm.provider "virtualbox" do |v|
#设置虚拟机的名称
v.name = "centos7-jdk-zk-local-cluster"

#设置虚拟机的内存大小为1G
v.memory = 2048

#设置虚拟机的CPU个数
v.cpus = 2
end


(1..3).each do |i|
#使用shell脚本进行软件安装和配置
config.vm.provision "shell" do |s|
s.path = "zk-install.sh"
s.env = {ZK_FILE: "/vagrant/zookeeper-3.4.13.tar.gz",
ZK_INSTALL_PATH: "/opt/zk/zk-server#{i}",
ZK_INSTALL_DIR: "/opt/zk/zk-server#{i}/zookeeper-3.4.13",
ZK_PORT: "218#{i}",
ZK_DATA_DIR: "/opt/zk/zk-server#{i}/zookeeper-3.4.13/data",
ZK_LOG_DIR: "/opt/zk/zk-server#{i}/zookeeper-3.4.13/log",
ZK_SERVER_ID: "#{i}",
ZK_SERVER_LIST: "server.1=127.0.0.1:2888:3888\nserver.2=127.0.0.1:2887:3887\nserver.3=127.0.0.1:2886:3886"}
end
end
end
```
3、同样使用vagrant up 命令,可以启动虚拟机,并自动安装
4、ssh进入虚拟机, 查看各个目录下对应的zk安装情况
可以看到,zk-server2作为leader节点, 其他两个节点作为follower节点

![zk-local-cluster-status ][10]

5、可以通过xshell给三个节点的zkCli.sh 分别发送命令,

![zk-local-cluster-cli ][11]


四、通过vagrant一键安装zookeeper集群
1、集群ip规划
zk_server1 => 1 192.168.13.21 centos7-jdk-zk-cluster-1
zk_server2 => 2 192.168.13.22 centos7-jdk-zk-cluster-2
zk_server3 => 3 192.168.13.23 centos7-jdk-zk-cluster-3

2、zk-install.sh同二使用的是相同内容,Vagrantfile如下:
``` ruby

# vi: set ft=ruby :

Vagrant.configure("2") do |config|
#设置虚拟机的box
config.vm.box = "centos7-base-jdk8"

zk_servers = {
:zk_server1 => ["192.168.13.21", "1", "centos7-jdk-zk-cluster-1"],
:zk_server2 => ["192.168.13.22", "2", "centos7-jdk-zk-cluster-2"],
:zk_server3 => ["192.168.13.23", "3", "centos7-jdk-zk-cluster-3"]
}
zk_server_list = "server.1=192.168.13.21:2888:3888\nserver.2=192.168.13.22:2888:3888\nserver.3=192.168.13.23:2888:3888"

zk_servers.each do |zk_server_name, zk_server_cfg|
config.vm.define zk_server_name do |app_config|

#设置虚拟机的主机名
app_config.vm.hostname = zk_server_cfg[2]
#设置ip
app_config.vm.network "private_network", ip: zk_server_cfg[0]
#Virtualbox相关配置
app_config.vm.provider "virtualbox" do |v|
#设置虚拟机的名称
v.name = zk_server_cfg[2]

#设置虚拟机的内存大小为1G
v.memory = 1048

#设置虚拟机的CPU个数
v.cpus = 2
end

#使用shell脚本进行软件安装和配置
app_config.vm.provision "shell" do |s|
s.path = "zk-install.sh"
s.env = {ZK_FILE: "/vagrant/zookeeper-3.4.13.tar.gz",
ZK_INSTALL_PATH: "/opt/zk",
ZK_INSTALL_DIR: "/opt/zk/zookeeper-3.4.13",
ZK_PORT: "2181",
ZK_DATA_DIR: "/opt/zk/zookeeper-3.4.13/data",
ZK_LOG_DIR: "/opt/zk/zookeeper-3.4.13/log",
ZK_SERVER_ID: zk_server_cfg[1],
ZK_SERVER_LIST: zk_server_list}
end
end
end
end

3, through vagrant up to pull three virtual machines and automatically install zk
After installation, the virtual machine, verify the correct installation

zk-cluster-status

OK, here it is over, the installation of three models can be quickly installed experimental environment by vagrant.

Guess you like

Origin www.cnblogs.com/liuzhongrong/p/12361703.html