个人名片
🎓作者简介:java领域优质创作者
🌐个人主页:码农阿豪
📞工作室:新空间代码工作室(提供各种软件服务)
💌个人邮箱:[2435024119@qq.com]
📱个人微信:15279484656
🌐个人导航网站:www.forff.top
💡座右铭:总有人要赢。为什么不能是我呢?
- 专栏导航:
码农阿豪系列专栏导航
面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️
Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻
Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡
全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀
目录
- 部署三台zookeeper集群
- 安装Java环境
- 准备zookeeper包
- 上传到服务器
- 解压缩
- 建立软链接
- 进入配置文件目录
- 备份并编辑配置文件
- 创建需要的目录
- 配置每台服务器的`myid`文件
- 启动Zookeeper(bash形式)
- 启动Zookeeper(service形式)
- 配置说明
- 使用步骤
- 查看服务是否启动成功
全是干货
部署三台zookeeper集群
安装Java环境
sudo yum update
sudo yum install java-1.8.0-openjdk-devel
java -version
准备zookeeper包
apache-zookeeper-3.5.10-bin.tar.gz
上传到服务器
解压缩
tar -zxvf apache-zookeeper-3.5.10-bin.tar.gz
建立软链接
ln -s /opt/apache-zookeeper-3.5.10-bin /opt/zookeeper
进入配置文件目录
cd /opt/zookeeper/conf
备份并编辑配置文件
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
内容:(注意粘贴的时候检查一下完整性,修改一下自己的ip)
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/data/zookeeper
dataLogDir=/opt/logs/zookeeper
clientPort=2181
server.1=ip1:2188:3188
server.2==ip2:2188:3188
server.3==ip3:2188:3188
4lw.commands.whitelist=*
tickTime: Zookeeper的基本时间单位,单位为毫秒。
initLimit: Follower节点在启动并同步数据时,Leader允许的最长时间(tickTime的倍数)。
syncLimit: Leader允许Follower节点之间消息同步的最大延迟(tickTime的倍数)。
dataDir: 存放快照文件的目录。
dataLogDir: 存放事务日志的目录。
clientPort: 客户端连接Zookeeper的端口。
server.X: 定义集群中的每个服务器。格式为server.id=host:port:electPort
,其中id
是服务器的唯一标识,port
是Follower连接Leader的端口,electPort
是进行Leader选举的端口。
4lw.commands.whitelist: 允许的四字母命令。
创建需要的目录
mkdir -p /opt/data/zookeeper/
mkdir -p /opt/logs/zookeeper/
配置每台服务器的myid
文件
echo 1 > /opt/data/zookeeper/myid # 在ip1上
echo 2 > /opt/data/zookeeper/myid # 在ip2上
echo 3 > /opt/data/zookeeper/myid # 在ip3上
启动Zookeeper(bash形式)
在每台服务器上,进入Zookeeper的bin
目录,并启动Zookeeper服务:
cd /opt/zookeeper/bin
./zkServer.sh start
启动Zookeeper(service形式)
进入到 /etc/systemd/system目录
cd /etc/systemd/system/
创建zookeeper.service并输入以下内容
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=forking
User=zookeeper
Group=zookeeper
Environment=ZOO_LOG_DIR=/opt/logs/zookeeper/
PIDFile=/opt/data/zookeeper/zookeeper_server.pid
ExecStartPre=/usr/bin/rm -f /opt/data/zookeeper/zookeeper_server.pid
ExecStart=/bin/sh -c '/opt/zookeeper/bin/zkServer.sh start'
ExecStop=/bin/sh -c '/opt/zookeeper/bin/zkServer.sh stop'
ExecReload=/bin/sh -c '/opt/zookeeper/bin/zkServer.sh restart'
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
配置说明
- [Unit]:定义服务的依赖和启动顺序。
Requires=network.target remote-fs.target
:表示服务启动需要网络和远程文件系统。After=network.target remote-fs.target
:确保网络和远程文件系统在服务启动之前已经启动。
- [Service]:定义服务的启动、停止和重启行为。
Type=forking
:表示服务在启动时会创建一个新的进程。User=zookeeper
和Group=zookeeper
:指定运行服务的用户和组。Environment="ZOO_LOG_DIR=/opt/logs/zookeeper/"
:设置环境变量。PIDFile=/opt/data/zookeeper/zookeeper_server.pid
:指定PID文件的位置。ExecStartPre=/usr/bin/rm -f /opt/data/zookeeper/zookeeper_server.pid
:在启动之前删除旧的PID文件。ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
:启动Zookeeper服务。ExecStop=/opt/zookeeper/bin/zkServer.sh stop
:停止Zookeeper服务。ExecReload=/opt/zookeeper/bin/zkServer.sh restart
:重启Zookeeper服务。Restart=on-abnormal
:在异常情况下重启服务。LimitNOFILE=4096
:增加文件描述符限制。
- [Install]:定义服务的安装行为。
WantedBy=multi-user.target
:表示服务在多用户系统目标(即系统正常启动后的状态)下可用。
使用步骤
-
创建用户和组: 确保存在运行Zookeeper服务的用户和组:
sudo useradd -r -m -d /opt/zookeeper -s /sbin/nologin zookeeper
-
设置权限: 确保Zookeeper安装目录和数据目录的权限正确:
sudo chown -R zookeeper:zookeeper /opt/data/zookeeper sudo chown -R zookeeper:zookeeper /opt/logs/zookeeper sudo chmod -R 755 /opt/data/zookeeper sudo chmod -R 755 /opt/logs/zookeeper
-
创建和启用服务: 将上面的服务单元文件内容保存到
/etc/systemd/system/zookeeper.service
,然后运行以下命令重新加载systemd守护进程,并启动Zookeeper服务:sudo systemctl daemon-reload sudo systemctl enable zookeeper sudo systemctl start zookeeper
-
检查服务状态: 查看Zookeeper服务状态以确保其正常运行:
sudo systemctl status zookeeper
通过上述配置,你可以通过systemctl
命令来管理Zookeeper服务,例如启动、停止和重启。这确保了服务的统一管理和自动重启,增强了系统的稳定性和可维护性。
查看服务是否启动成功
ps -ef|grep zookeeper