Apache Kafka:修订间差异
跳到导航
跳到搜索
此页面具有访问限制。如果您看见此消息,则说明您没有权限访问此页面。
(→設定) |
(→設定) |
||
第27行: | 第27行: | ||
* 修改<code>log.dirs</code>,預設是寫到<code>/tmp/kafka-logs</code>下,改成寫到<code>/var/lib/kafka-logs</code>,並且建立對應的目錄與權限(像是<code>sudo install -d -o nobody -g nogroup -m 0700 /var/lib/kafka-logs</code>)。 | * 修改<code>log.dirs</code>,預設是寫到<code>/tmp/kafka-logs</code>下,改成寫到<code>/var/lib/kafka-logs</code>,並且建立對應的目錄與權限(像是<code>sudo install -d -o nobody -g nogroup -m 0700 /var/lib/kafka-logs</code>)。 | ||
* 安裝systemd設定(<code>/lib/systemd/system/kafka.service</code>),並且使用<code>sudo systemctl daemon-reload; sudo systemctl enable kafka; sudo service kafka start</code>啟動: | * 安裝systemd設定(<code>/lib/systemd/system/kafka.service</code>),並且使用<code>sudo systemctl daemon-reload; sudo systemctl enable kafka; sudo service kafka start</code>啟動: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="ini"> | ||
[Unit] | [Unit] | ||
Description=Apache Kafka server (broker) | Description=Apache Kafka server (broker) |
2019年3月5日 (二) 05:08的版本
Apache Kafka是一套基于Java与Scala,提供Streaming架构的软体。
介绍
Kafka本身不过多处理多节点之间的效能问题,而是透过ZooKeeper处理。可以从“#测试”的章节看到操作时都是指定ZooKeeper当作API Endpoint。在Production环境上,一般我们会用TCP load balancer放在前面,让用户端架构比较简单(仅需设定单一名称)。
安装
目前在Ubuntu上没有系统套件或是PPA可以安装,一般是自行下载后装到/opt
下。最新版的资讯可以在Kafka的Download页面得到,这边使用2.1.1版:
cd /tmp
wget https://ftp.jaist.ac.jp/pub/apache/kafka/2.1.1/kafka_2.12-2.1.1.tgz
cd /opt
sudo tar zxvf /tmp/kafka_2.12-2.1.1.tgz
sudo chown -R nobody:nogroup kafka_2.12-2.1.1/
sudo ln -fs kafka_2.12-2.1.1 kafka
设定
- 修改
/opt/kafka/config/server.properties
内的broker.id
,这边一台设1
,另外一台设2
。 - 修改
/opt/kafka/config/server.properties
内的zookeeper.connect
:- 改成三台ZooKeeper主机的位置,像是
zookeeper.connect=1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181
。 - 或是改成对应的TCP load balancer,像是
test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com:2181
。 - 其中
:2181
是预设TCP Port,可以省略。
- 改成三台ZooKeeper主机的位置,像是
- 修改
log.dirs
,预设是写到/tmp/kafka-logs
下,改成写到/var/lib/kafka-logs
,并且建立对应的目录与权限(像是sudo install -d -o nobody -g nogroup -m 0700 /var/lib/kafka-logs
)。 - 安装systemd设定(
/lib/systemd/system/kafka.service
),并且使用sudo systemctl daemon-reload; sudo systemctl enable kafka; sudo service kafka start
启动:
[Unit]
Description=Apache Kafka server (broker)
Documentation=https://kafka.apache.org/documentation.html
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=nobody
Group=nogroup
Environment=JAVA_HOME=/usr
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
[Install]
WantedBy=multi-user.target
测试
没有TCP load balancer时可以直接指定所有的ZooKeeper主机:
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181
/opt/kafka/bin/kafka-topics.sh --create --zookeeper 1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181 --replication-factor 2 --partitions 1 --topic my-replicated-topic
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181
其中所有的:2181
都可以简化省略,因为ZooKeeper的预设Port就是Port 2181:
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4,5.6.7.8,9.10.11.12
/opt/kafka/bin/kafka-topics.sh --create --zookeeper 1.2.3.4,5.6.7.8,9.10.11.12 --replication-factor 2 --partitions 1 --topic my-replicated-topic
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4,5.6.7.8,9.10.11.12
有TCP load balancer时:
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com
/opt/kafka/bin/kafka-topics.sh --create --zookeeper test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com --replication-factor 2 --partitions 1 --topic my-replicated-topic
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com
外部连结
- 官方网站 (英文)
- Quickstart (英文)
- kafka installation and systemd (英文)