首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS kafka.service EC2 Ubuntu中设置EC2和zookeeper.service

问在AWS kafka.service EC2 Ubuntu中设置EC2和zookeeper.service
EN

Stack Overflow用户
提问于 2021-06-10 19:13:16
回答 1查看 363关注 0票数 0

在我自己的Ubuntu20.04机器上,通过一个用户kafka,我可以成功地设置以下服务文件(引用到本教程):

sudo vi /etc/systemd/system/zookeeper.service

代码语言:javascript
复制
[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
代码语言:javascript
复制
sudo vi /etc/systemd/system/kafka.service
代码语言:javascript
复制
[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并检查它的状态:

代码语言:javascript
复制
sudo systemctl start kafka
sudo systemctl status kafka

现在,我希望在具有相同文件夹结构的AWS EC2 Ubuntu实例中设置:

代码语言:javascript
复制
sudo vi /etc/systemd/system/zookeeper.service
代码语言:javascript
复制
[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
代码语言:javascript
复制
sudo vi /etc/systemd/system/kafka.service
代码语言:javascript
复制
[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

根据ubuntu,EC2是AWS EC2 Ubuntu的用户名。

但是,当我启动kafka.service时,我会得到以下错误:

代码语言:javascript
复制
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的文件夹。换句话说:

代码语言:javascript
复制
$ mkdir test_folder

给我Permission denied。我必须做:

代码语言:javascript
复制
$sudo mkdir test_folder

那么,我如何修改服务文件来解释这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-10 20:05:28

使用我的用户ubuntu访问权限,如果没有sudo,我就无法创建文件夹。

不清楚您是如何添加ubuntu用户的,但是将mkdir -p /home/ubuntu作为ec2-user运行是不正确的。

您可以使用这些命令进行修正权限,但是您可能需要重新访问useradd命令选项。

代码语言:javascript
复制
sudo chown -R ubuntu:ubuntu /home/ubuntu
sudo chmod -R a+rwX,o-w /home/ubuntu

与其使用ubuntu用户,您还应该更愿意为Kafka和Zookeeper拥有单独的用户帐户,例如,如果您使用APT安装汇流平台,就会发生这种情况。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67927213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档