环境准备
系统环境:Centos7
软件环境:jdk-8u241-linux-x64.tar.gz,apache-zookeeper-3.6.1-bin.tar.gz
节点 | 地址 |
---|---|
1 | 192.168.16.149 |
2 | 192.168.16.130 |
3 | 192.168.16.132 |
安装准备
1.jdk安装和验证详情请见我之前的一篇博客jdk安装验证
2.zookeeper的安装步骤以及环境变量的配置详情请见我的上一篇博客在这里里面的安装准备和此次的完全分布式安装准备是一样的。需要在三个节点都进行这个操作。或者可以通过安装一台节点,配置完成后,利用scp -r 要发送的文件 root@接收方的地址:要接收的位置
,如果将.bash_profile
一同发送到其他节点中时,记得使用source /root/.bash_profile
命令使得你的配置文件能够生效。切记,切记!!!
完全分布式搭建
虽然伪分布式需要在三台机器上进行搭建,但是三台机器上的大致步骤与配置文件内容是相同的,并且与伪分布式的差别也极其细微,我就以其中的一台为例192.168.16.149
。
1.利用cd zookeeper
命令进入zookeeper的解压文件存放目录下,使用mkdir data logs
在此目录下创建data文件夹和logs文件夹
2.使用echo '标识号'>/data/myid
为每个节点赋予它自己的标识符
3.cd zookeeper-3.6.1/conf/
进入conf目录下cat zoo_sample.cfg | grep -v "#" >zoo.cfg
复制一份名为zoo.cfg的配置文件,并将原来文件中的注释掉的信息都去除,使得我们留下的都是我们这这次完全分布式需要的,必要的参数。
4.对zoo.cfg配置文件进行配置,配置文件这里,三台机器的完全一致即可。
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zookeeper/data
dataLogDir=/root/zookeeper/logs
clientPort=2181
server.1=192.168.16.149:2888:3888
server.2=192.168.16.130:2888:3888
server.3=192.168.16.132:2888:3888
具体的要根据自己的机器地址来。
4.验证自己的服务
在三台机器都配置完的情况下,将三台机器的服务通过zkServer.sh start
启动起来
节点1:192.168.16.149
节点2:192.168.16.130
节点3:192.168.16.132
通过jps
命令查看服务有没有启动
节点1:192.168.16.149
节点2:192.168.16.130
节点3:192.168.16.132
通过zkServer.sh status
查看三个节点的状态
节点1:192.168.16.149
节点2:192.168.16.130
节点3:192.168.16.132
注意:在使用时,只有将三台节点全部起来才能看到状态,如果没有完全起来将看不到上图的状态
谨记防火墙没有必要的情况下请关闭,在开启之后,一定要使用zkServer.sh stop
命令关闭,否则下次启动时将会出现问题。
整个过程对比下来,其实与之前的伪分布式没有大的区别,都是些小的区别,区别如下:
1.在伪分布下因为是一台机器,所以需要在/root/zookeeper
目录下创建三个存放节点的文件夹,然后在文件夹中创建data和logs文件夹,在data文件夹中为myid文件写入相应的标识符。但是在完全分布式中就不要,因为是在三台机器上进行的,所以可以在/root/zookeeper
目录下直接创建,所以在进行配置文件编写的时候,也需要注意。
2.每台机器的表示符号是唯一的,每台机器的标识码,都是写在/data下的myid中,一定不要重复,不要写错。
常见错误
其实说是常见错误,不如说是我在搭建伪分布式和完全分布式遇见的问题,记录在此,一方面是为了让我以后再遇到的情况下,可以有东西参考,另一方面,是也许在各位的搭建过程中也许也会遇见,提供一个解决思路。
1.在启动之前,利用jps
查看,是否已经存在了一个你要启动的进程,这种情况最常见于,上次做完之后,没有正常关闭,如果这个时候启动,你启动完之后,查看进程,有你想要的进程,但是查看状态你会发现,它会告诉你并没有启动。并且你还能发现一些,文件名很奇怪的文件后面会跟一个问号就像这样’data?’。
2.检查防火墙的状态,如果状态是开启的状态下,你可以选择直接利用systemctl stop firewalld
关闭防火墙,也可以在防火墙上直接做相应的端口策略,这个根据个人的喜好和使用习惯来看。
3.如果你查看你的节点状态发现你节点的状态不是flower也不是lender,而是一个standalone,那么你需要检查一下你的配置文件还有你的myid,是否做到了对应,此时的你,是不在集群里的。
如果觉得这片博文对你有所帮助,请点个赞,点个关注吧!!!
转载:https://blog.csdn.net/Zhang_Baiqing/article/details/106385771