集群搭建有三个节点
master 192.168.21.161
slave1 192.168.21.162
slave2 192.168.21.163
软件
Centos7
jdk-8u171-linux-x64.tar.gz
zookeeper-3.4.14
获取软件
获取 JDK
wget https://repo.huaweicloud.com/java/jdk/8u171-b11/jdk-8u171-linux-x64.tar.gz
获取 zookeeper
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
更改主机名
修改 /etc/sysconfig/network 文件
NETWORKING=yes
HOSTNAME=master
master 主机的 HOSTNAME=master,slave1 主机的 HOSTNAME=slave1, slave2 主机的 HOSTNAME=slave2
配置 hosts 文件(三台机器)
修改三台主机的 /etc/hosts 文件内容。其中 IP 地址为各主机实际的 IP 地址
192.168.21.161 master master.root
192.168.21.162 slave1 slave1.root
192.168.21.163 slave2 slave2.root
重启生效(三台机器)
reboot
关闭防火墙(三台机器)
systemctl stop firewalld
systemctl status firewalld
确保防火墙关闭
时间同步
时间同步的具体设置和处理请参照之前的文章
Linux 下 ntp 时间服务器配置
ssh 免密登陆
-
(1)生成密钥(三台主机)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
可以看到在~/.ssh/ 目录下生成了 id_dsa,id_dsa.pub 文件
-
(2)在 master 主机将 slave1,slave2 的 id_dsa.pub 文件 copy 到 master 下
mkdir tmp cd tmp scp root@slave1:~/.ssh/id_dsa.pub ./2 scp root@slave2:~/.ssh/id_dsa.pub ./3
-
(3)合并 master,slave1,slave2 的 id_dsa.pub 文件为 authorized_keys
cat ~/.ssh/id_dsa.pub >> authorized_keys cat ./2 >> authorized_keys cat ./3 >> authorized_keys
authorized_keys 文件的内容如下
-
(4)将 authorized_keys 文件 copy 到 master, slave1, slave2 的 /root/.ssh 目录下
cp ./authorized_keys ~/.ssh/ scp ./authorized_keys root@slave1:~/.ssh/ scp ./authorized_keys root@slave2:~/.ssh/
现在在 master 上 ssh slave1,ssh slave2 就可以免密码直接登陆了。同样 slave1,slave2 同样也可以免密码登陆别的主机
安装 JDK
-
(1)解压
mkdir -p /usr/java tar -xzvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
-
(2)修改环境变量
vi /etc/profile
添加如下内容export JAVA_HOME=/usr/java/jdk1.8.0_171 export CLASSPATH=$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH
-
(3)生效
source /etc/profile
安装 zookeeper
-
(1) 解压文件
mkdir -p /usr/zookeeper tar -xzvf zookeeper-3.4.14.tar.gz -C /usr/zookeeper/
-
(2) 建 data 和 log 目录
cd /usr/zookeeper/zookeeper-3.4.14/ mkdir zkdata mkdir zkdatalog
-
(3) 修改配置
cd /usr/zookeeper/zookeeper-3.4.14/conf cp zoo_sample.cfg zoo.cfg
修改 zoo.cfg,确保如下内容
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/zookeeper/zookeeper-3.4.14/zkdata clientPort=2181 dataLogDir=/usr/zookeeper/zookeeper-3.4.14/zkdatalog server.1=master:2888:3888 server.2=slave1:2888:3888 server.3=slave2:2888:3888
- (4) 创建 myid
在 master 主机,/usr/zookeeper/zookeeper-3.4.14/zkdata 下创建 myid 内容 1
-
(5) 将 master 主机下 zookeeper 复制分发到 slave1,slave2
scp -r /usr/zookeeper root@slave1:/usr/ scp -r /usr/zookeeper root@slave2:/usr/
- (6) 将 slave1,slave2 的 myid 更改为 2,3
确保 slave1 的 myid 为 2,slave2 的 myid 为 3
-
(7)配置环境变量 (三台主机)
vi /etc/profile
添加如下内容export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.14 PATH=$PATH:$ZOOKEEPER_HOME/bin
执行
source /etc/profile
配置生效
-
(8)启动 zookeeper(三台主机)
cd /usr/zookeeper/zookeeper-3.4.14/ ./bin/zkServer.sh start ./bin/zkServer.sh status
可以看到一台主机为 leader,两台主机为 follower