【ZooKeeper 原理与服务器集群部署】2.4 服务的配置并启动
## sudo vim /usr/lib/systemd/system/zookeeper@.service ## 其中的 %i 将来会被替换为具体的 1/2/3 [Unit] Description=ZooKeeper After=syslog.target network.target[Service] Type=forking Environment="ZOOCFG=zoo-%i.cfg" ExecStart=/opt/zookeeper-3.4.11/bin/zkServer.sh start ExecStop=/opt/zookeeper-3.4.11/bin/zkServer.sh stop[Install] WantedBy=multi-user.target 配置为自动启动,并立即启动:
sudo systemctl daemon-reload sudo systemctl enable zookeeper@{1,2,3} sudo systemctl start zookeeper@{1,2,3} sudo netstat -natp | grep LISTEN | grep -E "218|228|229" # sudo systemctl stop zookeeper@{1,2,3} 2.5 防火墙放行
如果非本机应用需要连接 ZooKeeper,必须把所有 clientPort 端口放行 。
### sudo vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2182 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2183 -j ACCEPT ### 重启生效: sudo systemctl restart iptables 2.6 客户端验证
zkCli.sh -server localhost:2181 ## 进入命令行状态 help ## 显示所有命令格式 quit ## 退出命令行状态 history ## 显示历史命令ls path [watch] createpath data acl delete path [version] set path data [version] get path [watch] stat path [watch] sync pathlistquota path setquota -n|-b val path delquota [-n|-b] pathaddauth scheme auth setAcl path acl getAcl pathprintwatches on|off redo cmdno 也可集连接和命令于一行:
zkCli.sh -server localhost:2181 ls / 2.7 清空数据【慎用】
sudo systemctl stop zookeeper@{1,2,3} sudo rm -rf $ZOOKEEPER_HOME/{logs,data}/{1,2,3}/version-* sudo systemctl start zookeeper@{1,2,3} 2.8 卸载服务【慎用】
sudo systemctl stop zookeeper@{1,2,3} sudo systemctl disable zookeeper@{1,2,3} sudo rm -rf $ZOOKEEPER_HOME 3.Windows 下安装(可用于开发)
3.1 下载
https://archive.apache.org/dist/zookeeper/
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
3.2 安装
3.2.1 解压
3.2.2 修改系统环境变量
set ZOOKEEPER_HOME={???}zookeeper-3.4.11 set PATH=%ZOOKEEPER_HOME%bin 3.2.3 修改 confzoo-%n.cfg
cd/d %ZOOKEEPER_HOME% del /q bin*.sh rd/s/q data logs for %n in (1,2,3) do @mkdir logs%n for %n in (1,2,3) do @mkdir data%n for %n in (1,2,3) do @echo %n> data%nmyid for %n in (1,2,3) do @copy/b confzoo_sample.cfg confzoo-%n.cfg 修改文件 confzoo-%n.cfg 如下(分别替换其中的 %n 为 1,2,3):
tickTime=2000 initLimit=10 syncLimit=5 clientPort=218%n dataDir=D:/Software/Architecture/zookeeper-3.4.11/data/%n dataLogDir=D:/Software/Architecture/zookeeper-3.4.11/logs/%n server.1=localhost:2281:2291 server.2=localhost:2282:2292 server.3=localhost:2283:2293 参数说明与 Linux 中相关内容一样 。
3.2.4 修改脚本
删除 binzkEnv.cmd 中的 set ZOOCFG=%ZOOCFGDIR%zoo.cfg 一行;
for %n in (1,2,3) do @copy/b binzkServer.cmd binzkServer%n.cmd 修改各个文件 zkServer%n.cmd 在 call "%~dp0zkEnv.cmd" 之前加一行:
set ZOOCFG=%~dp0%..confzoo-%n.cfg,注意替换 %n 分别为 1/2/3
3.3 启动服务
zkServer1.cmd zkServer2.cmd zkServer3.cmd 3.4 客户端验证
zkCli.cmd -server centos:2181 ## 连接 Linux 上服务 zkCli.cmd -server localhost:2181 ## 连接本机上服务 ## 更多内容参见前面 Linux 中相应部分 4.集群部署(生产环境)
管理员指南: https://zookeeper.apache.org/doc/current/zookeeperAdmin.html
- 要求至少为三台 ZooKeeper 服务器,最好是奇数个服务器(以便多数正常机器处理少数机器的故障),通常三台足够了,如果想更可靠,可增加至五台;
- 为避免各服务器同时发生故障,最好部署在不同机器、不同网络交换机(电路、冷却系统等)、甚至不同机房;
- 为避免内存交换,要设置足够大的 JVM 堆,比如 4G 机器可指定 3G;
推荐阅读
- 大白话告诉你Hadoop架构原理
- 白居易与茶诗
- 灰菜食用方法 灰菜功效与作用
- 苋菜的功效与作用都有哪些
- 减肥茶怎么喝
- 荷叶山楂减肥茶 让饕餮与美丽并存
- 雅诗兰黛持妆粉底液好用还是清透粉底液好 兰蔻粉底液与雅诗兰黛粉底液对比
- 弄懂“有氧”与“无氧”,就能解决你70%的运动问题
- 神农与茶的传说
- 关于汽车,这是我见过最全的科普文,彩色图解汽车的构造与原理
