在Ubuntu上管理Apache Zookeeper服务涉及多个方面,包括安装、配置、启动、停止、重启、查看状态、设置开机自启动、安全配置以及权限管理。以下是详细的管理步骤:
sudo apt update
sudo apt install openjdk-8-jdk
java -version
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz
sudo mv apache-zookeeper-3.7.1-bin /usr/local/zookeeper
sudo mkdir -p /usr/local/zookeeper/data
sudo mkdir -p /usr/local/zookeeper/logs
/usr/local/zookeeper/conf/zoo.cfg文件,设置必要的配置项,如tickTime、dataDir、clientPort等。/etc/systemd/system/zookeeper.service文件:[Unit]
Description=Apache Zookeeper Server
After=network-online.target
Requires=network-online.target
[Service]
Type=forking
User=zookeeper
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start zookeeper
sudo systemctl enable zookeeper
sudo systemctl status zookeeper
sudo systemctl start zookeeper
sudo systemctl stop zookeeper
sudo systemctl restart zookeeper
sudo systemctl status zookeeper
sudo systemctl enable zookeeper
zoo.cfg文件,启用ACL并配置认证提供者:authProvider.1 org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme sasl
创建ACL配置文件,例如/etc/zookeeper/conf/acl.conf,并定义ACL规则。
重启Zookeeper服务以应用更改:
sudo systemctl restart zookeeper
zkCli.sh adduser user1 password1
zkCli.sh setAcl /path/to/node world:anyone:r
ZooKeeper zk = new ZooKeeper("localhost:2181", 3000, new Watcher() {
public void process(WatchedEvent event) {}
});
zk.addAuthInfo("digest", "user1:password1".getBytes());
zkCli.sh create /path/to/node "data"
zkCli.sh setAcl /path/to/node world:anyone:r
zkCli.sh getacl /path/to/node
ZooKeeper zk = new ZooKeeper("localhost:2181", 3000, new Watcher() {
public void process(WatchedEvent event) {}
});
zk.create("/path/to/znode", "data".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
zk.setAcl("/path/to/znode", ZooDefs.Ids.OPEN_ACL_UNSAFE);
请注意,以上信息提供了在Ubuntu上管理ZooKeeper的基本步骤。在实际生产环境中,可能需要更复杂的配置和安全措施,例如使用SSL/TLS加密通信、限制特定IP地址访问等。