文章目录
zookeeper:apache-zookeeper-3.6.2
JDK:jdk1.8.0_271
maven: apache-maven-3.6.3
Linux: CentOS 7.8
我这里全程使用root安装操作
安装准备
我这里使用VMware安装CentOS7的虚拟机,这里就不安装了,我安装了一个,然后复制了两个,一共三个虚拟机,然后重启一下虚拟机。
1、设置hostname
查看hostname
hostname
重新设置hostname
hostnamectl set-hostame [重新定义的名称]
我这里设置的三台分别是node1、node2、node3
然后重启生效
reboot
2、设置ens33
我们要使用ip地址连接,但是CentOS默认ens33是关闭的这里要打开
查看ip地址
ip addr
如果inet没有值就说明ens33没有打开
进入目录/etc/sysconfig/network-scripts/
修改文件ifcfg-ens33
vi ifcfg-ens33
修改文件
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=66ce768f-9acf-428d-a213-76a6798c5fa2
DEVICE=ens33
ONBOOT=yes
这里修改的是 ONBOOT=yes
如果是no
就改成yes
使文件生效
service network restart
这时查看ip就有了,然后就可以使用远程连接工具使用了,我这里使用的是MobaXterm
,这个没有什么限制,什么都可以。
3、安装zookeeper、JDK、maven
我这里是上传安装包安装,特别是JDK下载比较麻烦,要有账号才能下载,这里用上传的方式要好很多
我的软件放在/usr
目录下,软件安装包名称我改了一下,方便输入
然后解压软件
tar -zxvf java8.tar.gz
tar -zxvf maven3.tar.gz
tar -zxvf zookeeper.tar.gz
然后配置环境变量
打开文件
vi /etc/profile
在结尾添加
#java environment
export JAVA_HOME=/usr/jdk1.8.0_271
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
#set zookeeper environment
export ZK_HOME=/usr/apache-zookeeper-3.6.2
export PATH=$PATH:$ZK_HOME/bin
#maven zookeeper environment
export MAVEN_HOME=/usr/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
使文件生效
source /ect/profile
然后检查JDK和MAVEN是否安装好
java -version
mvn -v
如果有产品信息就说明安装好了
4、关闭防火墙
(1)设置开机启用防火墙:
systemctl enable firewalld.service
(2)设置开机禁用防火墙:
systemctl disable firewalld.service
(3)启动防火墙:
systemctl start firewalld
(4)关闭防火墙:
systemctl stop firewalld
(5)检查防火墙状态:
systemctl status firewalld
这里要关闭防火墙
5、设置Zookeeper
1、编译zookeeper-server
进入安装目录下进入目录zookeeper-server
cd zookeeper-server
编译
mvn package -Dmaven.test.skip=true
不编译会抛出异常
Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
编译完后继续下面步骤。
2、配置zoo.cfg文件
首先进入目录conf
然后执行
cp zoo_sample.cfg zoo.cfg
创建一个zoo.cfg
然后修改
vi zoo.cfg
修改如下
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/apache-zookeeper-3.6.2/data
# the port at which the clients will connect
clientPort=2181
server.1=192.168.17.135:2888:3888
server.2=192.168.17.136:2888:3888
server.3=192.168.17.137:2888:3888
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
主要修改内容就是这些,
但是要记住这里默认使用的一个端口是8080,如果有其他端口占用,要么修改这里的端口,要么修改;
添加配置
admin.serverPort=没有被占用的端口号
同时我们也可以修改客户端地址
clientPortAddress=192.168.17.135
看需要了
上面红色框住的内容即是我们修改的内容:
①、tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime
②、dataDir:存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能。
③、client:监听客户端连接的端口。
④、initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
⑤、syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
⑥、server.A=B:C:D
A:其中 A 是一个数字,表示这个是服务器的编号;
B:是这个服务器的 ip 地址;
C:Leader选举的端口;
D:Zookeeper服务器之间的通信端口。
我们需要修改的第一个是 dataDir ,在指定的位置处创建好目录。
第二个需要新增的是 server.A=B:C:D 配置,其中 A 对应下面我们即将介绍的myid 文件。B是集群的各个IP地址,C:D 是端口配置。
3、创建dataDir目录和myid文件
我们要在安装的根目录下创建这个目录,路径就是是上面配置的
mkdir dataDir
创建myid文件
echo [A] > myid
这里的A对应上面的server.A的配置,这里使用整数,就对应上zoo.cfg中的配置了
例如:
echo 1> myid
然后查看一下
cat myid
显示
1
就是对的
这里要注意配置的myid要对应上
server.1=192.168.17.135:2888:3888
server.2=192.168.17.136:2888:3888
server.3=192.168.17.137:2888:3888
这里的ip地址
192.168.17.135 机器上的 myid 就是 1
4、启动测试
启动命令:
zkServer.sh start
停止命令:
zkServer.sh stop
重启命令:
zkServer.sh restart
查看集群节点状态:
zkServer.sh status
启动后查看状态
我们可以看到node3是leader,node1和node2是follower
这里交代一下我启动的顺序,是先启动node2,然后是node3,最后是node1,上面现象说是半数选举机制。
如果有错误,日志在根目录下的logs
目录下
tail -1000f zookeeper-root-server-node1.out
这里的-1000f
是查看最近的1000行,后面的会动态输出的
到这里就完成了所以的配置了。