在CentOS上部署和管理Apache ZooKeeper时,遵循一些最佳实践是确保其稳定性、性能和可靠性的关键。以下是一些关键的最佳实践:
安装Java环境:
sudo yum install java-1.8.0-openjdk-devel
java -version
下载并解压Zookeeper:
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -xzf apache-zookeeper-3.7.1-bin.tar.gz
sudo mv apache-zookeeper-3.7.1-bin /opt/zookeeper
配置Zookeeper:
zoo_sample.cfg
配置文件为zoo.cfg
。cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
sudo vi zoo.cfg
dataDir=/var/lib/zookeeper/data
dataLogDir=/var/lib/zookeeper/log
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
echo 'export ZOOKEEPER_HOME=/opt/zookeeper' | sudo tee -a /etc/profile
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' | sudo tee -a /etc/profile
source /etc/profile
创建数据目录和日志目录:
sudo mkdir -p /var/lib/zookeeper/data
sudo mkdir -p /var/lib/zookeeper/log
配置系统服务(推荐):
systemd
单元文件:sudo vi /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache Zookeeper
After=network.target
[Service]
Type=forking
User=root
Group=root
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
ExecReload=/opt/zookeeper/bin/zkServer.sh reload
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloads
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
验证安装:
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
[zk: 127.0.0.1:2181(CONNECTED) 0] ls /
服务器硬件配置建议:
操作系统优化:
vm.swappiness
参数为低值以减少交换。Zookeeper配置参数优化:
tickTime
:基本时间单位,影响心跳和超时操作。默认值为2000毫秒,根据实际需求调整。initLimit
:初始连接超时时间,表示Follower与Leader初始通信时限。默认值为10(tickTime单位)。syncLimit
:同步超时时间,表示Leader与Follower同步通信时限。默认值为5(tickTime单位)。maxClientCnxns
:限制每个客户端的最大连接数。autopurge.snapRetainCount
:自动清理快照保留的文件数,默认3。autopurge.purgeInterval
:自动清理任务的执行间隔,默认0(不开启)。dataDir
和dataLogDir
:分别存放快照文件和事务日志,建议分开存储以提高性能。监控性能:
配置Zookeeper集群:
zoo.cfg
文件,添加服务器列表和每个节点的ID文件。验证HA配置:
zkServer.sh status
命令检查每个服务器的状态,确保每个服务器都正常运行。配置防火墙:
sudo firewall-cmd --zone=public --add-port=2181/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2888/tcp --permanent
sudo firewall-cmd --zone=public --add-port=3888/tcp --permanent
sudo firewall-cmd --reload
监控和日志:
通过遵循这些最佳实践,您可以在CentOS上成功安装、配置、优化和管理Zookeeper,确保其在分布式系统中的可靠性和高性能。