在 AWS EC2 Ubuntu 中设置 kafka.service 和 zookeeper.service
Set up kafka.service and zookeeper.service in AWS EC2 Ubuntu
在自己的Ubuntu 20.04机器上,用用户kafka
,可以成功设置如下服务文件(参考this tutorial):
sudo vi /etc/systemd/system/zookeeper.service
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties
ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
sudo vi /etc/systemd/system/kafka.service
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > ~/kafka/kafka.log 2>&1'
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
然后成功启动Kafka并查看其状态:
sudo systemctl start kafka
sudo systemctl status kafka
现在我想在具有相同文件夹结构的 AWS EC2 Ubuntu 实例中进行设置:
sudo vi /etc/systemd/system/zookeeper.service
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=ubuntu
ExecStart=/home/ubuntu/kafka/bin/zookeeper-server-start.sh /home/ubuntu/kafka/config/zookeeper.properties
ExecStop=/home/ubuntu/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
sudo vi /etc/systemd/system/kafka.service
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=ubuntu
ExecStart=/bin/sh -c '/home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties > /home/ubuntu/kafka/kafka.log 2>&1'
ExecStop=/home/ubuntu/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
根据 AWS document.
,ubuntu
是我用于 AWS EC2 Ubuntu AMI 的用户名
但是当我启动 kafka.service 时,出现以下错误:
kafka.service
Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2021-06-10 18:58:26 UTC; 7s ago
Process: 40816 ExecStart=/bin/sh -c /home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties > /home/ubuntu/kafka/kafka.log 2>&1 (code=exited, status=2)
Main PID: 40816 (code=exited, status=2)
Jun 10 18:58:26 ip-xxx-xx-xx-xxx systemd[1]: Started kafka.service.
Jun 10 18:58:26 ip-xxx-xx-xx-xxx sh[40816]: /bin/sh: 1: cannot create /home/ubuntu/kafka/kafka.log: Directory nonexistent
Jun 10 18:58:26 ip-xxx-xx-xx-xxx systemd[1]: kafka.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Jun 10 18:58:26 ip-xxx-xx-xx-xxx systemd[1]: kafka.service: Failed with result 'exit-code'.
在目录 ~/kafka
下,我没有看到文件 kafka.log
。但是在我自己的机器上设置的时候,并没有遇到这个错误。
在 AWS EC2 Ubuntu 中进行设置时我是否遗漏了什么?
更多详情:
我刚刚意识到使用我的用户 ubuntu
访问权限,我无法在没有 sudo
的情况下创建文件夹。换句话说:
$ mkdir test_folder
给我Permission denied
。我必须做的:
$sudo mkdir test_folder
那么,我该如何修改服务文件来解决这个问题?
with my user ubuntu access, I cannot create a folder without sudo
不清楚您是如何添加 ubuntu
用户的,但是 运行 mkdir -p /home/ubuntu
因为 ec2-user
是不正确的。
您可以 fix the permissions 使用这些命令,但您可能需要重新访问 useradd
命令选项
sudo chown -R ubuntu:ubuntu /home/ubuntu
sudo chmod -R a+rwX,o-w /home/ubuntu
您还应该更愿意为 Kafka 和 Zookeeper 使用 单独的用户帐户,而不是使用一些 ubuntu
用户
在自己的Ubuntu 20.04机器上,用用户kafka
,可以成功设置如下服务文件(参考this tutorial):
sudo vi /etc/systemd/system/zookeeper.service
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties
ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
sudo vi /etc/systemd/system/kafka.service
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > ~/kafka/kafka.log 2>&1'
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
然后成功启动Kafka并查看其状态:
sudo systemctl start kafka
sudo systemctl status kafka
现在我想在具有相同文件夹结构的 AWS EC2 Ubuntu 实例中进行设置:
sudo vi /etc/systemd/system/zookeeper.service
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=ubuntu
ExecStart=/home/ubuntu/kafka/bin/zookeeper-server-start.sh /home/ubuntu/kafka/config/zookeeper.properties
ExecStop=/home/ubuntu/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
sudo vi /etc/systemd/system/kafka.service
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=ubuntu
ExecStart=/bin/sh -c '/home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties > /home/ubuntu/kafka/kafka.log 2>&1'
ExecStop=/home/ubuntu/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
根据 AWS document.
,ubuntu
是我用于 AWS EC2 Ubuntu AMI 的用户名
但是当我启动 kafka.service 时,出现以下错误:
kafka.service
Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2021-06-10 18:58:26 UTC; 7s ago
Process: 40816 ExecStart=/bin/sh -c /home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties > /home/ubuntu/kafka/kafka.log 2>&1 (code=exited, status=2)
Main PID: 40816 (code=exited, status=2)
Jun 10 18:58:26 ip-xxx-xx-xx-xxx systemd[1]: Started kafka.service.
Jun 10 18:58:26 ip-xxx-xx-xx-xxx sh[40816]: /bin/sh: 1: cannot create /home/ubuntu/kafka/kafka.log: Directory nonexistent
Jun 10 18:58:26 ip-xxx-xx-xx-xxx systemd[1]: kafka.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Jun 10 18:58:26 ip-xxx-xx-xx-xxx systemd[1]: kafka.service: Failed with result 'exit-code'.
在目录 ~/kafka
下,我没有看到文件 kafka.log
。但是在我自己的机器上设置的时候,并没有遇到这个错误。
在 AWS EC2 Ubuntu 中进行设置时我是否遗漏了什么?
更多详情:
我刚刚意识到使用我的用户 ubuntu
访问权限,我无法在没有 sudo
的情况下创建文件夹。换句话说:
$ mkdir test_folder
给我Permission denied
。我必须做的:
$sudo mkdir test_folder
那么,我该如何修改服务文件来解决这个问题?
with my user ubuntu access, I cannot create a folder without sudo
不清楚您是如何添加 ubuntu
用户的,但是 运行 mkdir -p /home/ubuntu
因为 ec2-user
是不正确的。
您可以 fix the permissions 使用这些命令,但您可能需要重新访问 useradd
命令选项
sudo chown -R ubuntu:ubuntu /home/ubuntu
sudo chmod -R a+rwX,o-w /home/ubuntu
您还应该更愿意为 Kafka 和 Zookeeper 使用 单独的用户帐户,而不是使用一些 ubuntu
用户