目录
2-1、server.id=host:port1:port2 的配置
一、单台服务器 - 配置成集群模式
说明:使用zookeeper提供配置管理、名字服务以及分布式同步集群管理;之后程序会采用dubbo分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案(以服务者与消费者的方式在dubbo上注册)。
1、下载zookeeper-3.4.14文件
1-1、说明
3.4.14之后还有3.5.x以上的版本,3.5之后的版本下载跟之前的不一样(3.5.x版本之后,应下载 apache-zookeeper-x.x.x-bin.tar.gz ,而不是 apache-zookeeper-x.x.x.tar.gz)
如果3.5之后使用的是 apache-zookeeper-x.x.x.tar.gz安装,启动的时候就会报:Could not find or load main class org.apache.zookeeper.ZooKeeperMain
1-2、本次安装的下载地址
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
1-3、查找稳定版本地址
https://archive.apache.org/dist/zookeeper/stable/
2、开始安装zookeeper
# 1. 创建新的文件目录:zookeeper
mkdir /app/zookeeper/
# 2. 解压下载的文件到指定目录(需要进入到文件同目录下)
tar -xzvf zookeeper-3.4.14.tar.gz -C /app/zookeeper/
# 3. 或在当前目录下解压:
tar -xzvf zookeeper-3.4.14.tar.gz
# 4. 复制三份zookeeper。做成不同的集群
cp -a /app/zookeeper/zookeeper-3.4.14 zookeeper-1
cp -a /app/zookeeper/zookeeper-3.4.14 zookeeper-2
cp -a /app/zookeeper/zookeeper-3.4.14 zookeeper-3
# 5. 在目录/app/zookeeper/zookeeper-1/conf下新增zoo.cfg的文件
cp -a /app/zookeeper/zookeeper-1/conf/zoo_sample.cfg zoo.cfg
3、配置zoo.cfg的内容
3-1、说明
如果ip使用的是阿里云外部ip就会造成无法启用,需要改成0.0.0.0;如下各节点server.X需要配置成
server.1=0.0.0.0:2888:3888
server.2=0.0.0.0:2889:3889
server.3=0.0.0.0:2890:3890
3-2、配置一个zoo.cfg,内容如图所示。
3-3、复制配置好的zoo.cfg,给其它两个节点
# 复制配置好的zoo.cfg,给其它两个节点
cp -a zoo.cfg /app/zookeeper/zookeeper-2/conf/
cp -a zoo.cfg /app/zookeeper/zookeeper-3/conf/
3-4、对dataDir地址修改
zookeeper-2:dataDir=/app/zookeeper/logs/zoo2/data
zookeeper-3:dataDir=/app/zookeeper/logs/zoo3/data
3-5、对地址修改dataLogDir
zookeeper-2:dataLogDir=/app/zookeeper/logs/zoo2/datalog
zookeeper-3:dataLogDir=/app/zookeeper/logs/zoo3/datalog
3-6、对clientPort端口号更改
zookeeper-2:2181
zookeeper-3:2191
4、新增myid
# 用来标识该机器在集群中的机器序号(路径要先新增mkdir 路径)
echo "1" > /app/zookeeper/logs/zoo1/data/myid
echo "2" > /app/zookeeper/logs/zoo2/data/myid
echo "3" > /app/zookeeper/logs/zoo3/data/myid
5、启动服务
sh /app/zookeeper/zookeeper-1/bin/zkServer.sh start
sh /app/zookeeper/zookeeper-2/bin/zkServer.sh start
sh /app/zookeeper/zookeeper-3/bin/zkServer.sh start
6、 查看服务是否启动
sh /app/zookeeper/zookeeper-1/bin/zkServer.sh status
sh /app/zookeeper/zookeeper-2/bin/zkServer.sh status
sh /app/zookeeper/zookeeper-3/bin/zkServer.sh status
# 或
ps -aux | grep zookeeper
7、停止服务
sh /app/zookeeper/zookeeper-1/bin/zkServer.sh stop
sh /app/zookeeper/zookeeper-2/bin/zkServer.sh stop
sh /app/zookeeper/zookeeper-3/bin/zkServer.sh stop
8、小问题
说明:从配置到启东一系列问题
8-1、复制其它两个节点时,忘了更改zoo.cfg的配置
8-2、启动报错
问题:[QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2171:QuorumPeer$QuorumServer@185] - Resolved hostname: 47.101.176.160 to address: /47.101.176.160
① 刚开始增加了端口允许通过(TCP协议),但是还没有解决链接问题
② 最后网上找了下,发现是阿里云服务器上配置时,host需要是0.0.0.0,即下所示
server.1=0.0.0.0:2888:3888
server.2=0.0.0.0:2889:3889
server.3=0.0.0.0:2890:3890
二、多台服务器 - 配置成集群模式
说明:操作和单台及器配置方式一样,不同之处在于配置
1、下载安装zookeeper-3.4.14文件
① 把下载好的zookeeper-3.4.14文件,分别复制到其它几个机器上
② 并按照单机集群的配置方式一样,配置之后的内容
2、与单机集群不同之处
2-1、server.id=host:port1:port2 的配置
说明:host即ip地址,使用的是不同机器对外的ip地址;port1和port2各机器配置可以一样,如下所示:
server.1=47.101.176.11:2889:3888
server.2=47.101.176.12:2889:3889
server.3=47.101.176.13:2889:3890
2-2、server.id被称为server ID
注:用来标识该机器在集群中的机器序号
① 在每台机器的dataDir目录下创建myid文件
② 文件内容即为该机器对应的Server ID数字
③ 如下所示:在不同的服务器分别执行
echo "1" > /app/zookeeper/zoo/data/myid
echo "2" > /app/zookeeper/zoo/data/myid
echo "3" > /app/zookeeper/zoo/data/myid
2-3、port1:port2的含义
· port1用于指定Follower服务器与Leader服务器进行通信和数据同步的端口
· port2用于进行Leader选举过程中的投票通信
· 如:server.1=IP1:2889:3889【2889:访问 zookeeper 的端口;3889:重新选举 leader 的端口】