Apache Kafka的环境设置和快速入门
用VirtualBox-Vagrant-Ansible创建环境,轻松尝试搭建Kafka。
环境
-
- macos 10.12.5
-
- Vagrant 1.9.7
-
- ansible 2.3.1.0
- VirtualBox 5.1.24
快速启动
尝试按照https://kafka.apache.org/quickstart中所述的步骤进行操作。
本来应该根据提供者、调解者和消费者的三个角色分别建立服务器,但快速入门中只使用一个服务器进行操作。
建立 或 构建
流浪者的Vagrantfile
- Ubuntu 16.04 LTS “Xenial Xerus”を利用する。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
end
config.vm.provision "ansible_local" do |ansible|
ansible.playbook = "playbook.yml"
end
end
请执行ansible playbook.yml。
-
- Kafkaの動作にはscalaとjavaが必要。
- 20170723時点で最新バージョン(kafka_2.11-0.11.0.0.tgz)
- hosts: all
become: yes
vars:
scala_version: "2.11"
kafka_version: "0.11.0.0"
install_dir: "/opt"
symlink_name: "kafka"
kafka_name: "kafka_{{ scala_version }}-{{ kafka_version }}"
kafka_download_url: "http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/kafka/{{ kafka_version }}/{{ kafka_name }}.tgz"
tasks:
- name: ensure openjdk8 present
apt:
name: "openjdk-8-jdk"
state: present
update_cache: yes
- name: ensure kafka present
unarchive:
remote_src: yes
src: "{{ kafka_download_url }}"
dest: "{{ install_dir }}"
- name: ensure symlink present
file:
src: "{{ install_dir }}/{{ kafka_name }}"
dest: "{{ install_dir }}/{{ symlink_name }}"
mode: 0755
state: link
尝试运行Kafka.
请转到已安装的文件夹。
$ cd /opt/kafka
文件夹的组成情况是这样的。
kafka/
config/ #サーバの設定ファイルなどが保管
bin/ #起動やテストのシェル類
libs/ #libs zookeeperをはじめとるlibが保管
site-docs/ #tgz本体を保管
LICENSE
NOTICE
在Kafka(Broker)的背后,需要运行一个名为Zookeeper的服务。对于大规模的分布式处理,使用ZooKeeper来实现。
启动ZooKeeper(localhost:2181)。
$ bin/zookeeper-server-start.sh config/zookeeper.properties
启动 Kafka(代理本地主机:9092)
$ bin/kafka-server-start.sh config/server.properties
创建主题
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
确认创建的主题
$ bin/kafka-topics.sh --list --zookeeper localhost:2181
test
通过使用Shell,可以测试生产者和消费者的操作。(实际使用时将以API形式进行,这里仅仅测试操作)
“`
$ bin/kafka-console-producer.sh –broker-list localhost:9092 –topic test
(当您完成输入消息后,请按Ctrl+C退出)
“`
这是一条测试信息
这是第二条测试信息
消息接收(消费者)
$bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
This is a test message
This is a second test message
多集群化(未完成)
尝试在同一服务器上更改端口来实现多集群。(本应在不同环境下构建,但是通过查看设置,大致可以看出需要更改的地方)
编辑 config/server.properties。
$ sudo cp config/server.properties config/server-1.properties
$ sudo cp config/server.properties config/server-2.properties
因为累了,今天就到这里吧。如果心情好了,我会写完快速入门部分。
请给出一个选项
参考意见
原文链接:https://kafka.apache.org
中文翻译:本家链接:https://kafka.apache.org
这两个网站对于解释 Kafka 很容易理解。
使用vagrant和ansible进行环境搭建时我参考过的网站:
https://github.com/eucuepo/vagrant-kafka