kafka1

post subtitle

By widehyo
  • install source
$ git clone http://github.com/onlybooks/kafka2
  • construct practice environment (ansible + docker compose)
    • install ansible
$ pip install ansible
  • docker compose + ansible playbook

  • before apply cache

33274  2026-03-30 22:50:25 ansible-playbook -i hosts site.yml 
33275  2026-03-30 23:14:40 date -Isecond
  • after apply cache
33309  2026-03-30 23:34:18 ansible-playbook -i hosts site.yml
33310  2026-03-30 23:35:42 date -Isecond
  • make cache
    • pre download tgz
    • install java in Docker file
$ mkdir kafka-cache
$ cd kafka-cache
$ ls
$ cdg
$ cd kafka2/chapter2/ansible_playbook/kafka-cache/
$ wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz
$ wget https://archive.apache.org/dist/kafka/2.6.0/kafka_2.12-2.6.0.tgz
chapter2/ansible_playbook/.gitignore --- Text
1 kafka-cache/apache-zookeeper-3.5.9-bin.tar.gz
2 kafka-cache/kafka_2.12-2.6.0.tgz
3 

chapter2/ansible_playbook/Dockerfile --- Text
 1 FROM rockylinux:9
 2 RUN dnf -y install systemd python3 sudo \
 3         dstat java-1.8.0-openjdk java-1.8.0-openjdk-devel \
 4         krb5-workstation git && \
 5     dnf clean all
 6 RUN useradd -m ec2-user && \
 7     echo "ec2-user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
 8 RUN systemctl mask \
 9     dev-hugepages.mount \
10     sys-fs-fuse-connections.mount \
11     systemd-update-utmp.service \
12     systemd-tmpfiles-setup.service \
13     getty.target \
14     console-getty.service
15 STOPSIGNAL SIGRTMIN+3
16 CMD ["/usr/sbin/init"]
17 

chapter2/ansible_playbook/docker-compose.yml --- YAML
 1 services:
 2   peter-zk01:
 3     build: .
 4     container_name: peter-zk01
 5     hostname: peter-zk01.foo.bar
 6     privileged: true
 7     volumes:
 8       - ./kafka-cache:/opt/kafka-cache:ro
 9     networks:
10       kafka-net:
11         aliases:
12           - peter-zk01.foo.bar
13   peter-zk02:
14     build: .
15     container_name: peter-zk02
16     hostname: peter-zk02.foo.bar
17     privileged: true
18     volumes:
19       - ./kafka-cache:/opt/kafka-cache:ro
20     networks:
21       kafka-net:
22         aliases:
23           - peter-zk02.foo.bar
24   peter-zk03:
25     build: .
26     container_name: peter-zk03
27     hostname: peter-zk03.foo.bar
28     privileged: true
29     volumes:
30       - ./kafka-cache:/opt/kafka-cache:ro
31     networks:
32       kafka-net:
33         aliases:
34           - peter-zk03.foo.bar
35   peter-kafka01:
36     build: .
37     container_name: peter-kafka01
38     hostname: peter-kafka01.foo.bar
39     privileged: true
40     volumes:
41       - ./kafka-cache:/opt/kafka-cache:ro
42     networks:
43       kafka-net:
44         aliases:
45           - peter-kafka01.foo.bar
46   peter-kafka02:
47     build: .
48     container_name: peter-kafka02
49     hostname: peter-kafka02.foo.bar
50     privileged: true
51     volumes:
52       - ./kafka-cache:/opt/kafka-cache:ro
53     networks:
54       kafka-net:
55         aliases:
56           - peter-kafka02.foo.bar
57   peter-kafka03:
58     build: .
59     container_name: peter-kafka03
60     hostname: peter-kafka03.foo.bar
61     privileged: true
62     volumes:
63       - ./kafka-cache:/opt/kafka-cache:ro
64     networks:
65       kafka-net:
66         aliases:
67           - peter-kafka03.foo.bar
68 
69 networks:
70   kafka-net:
71     driver: bridge
72 

chapter2/ansible_playbook/hosts --- Text
 1 [zkhosts]                                                                    1 [zkhosts]
 2 peter-zk01.foo.bar                                                           2 peter-zk01.foo.bar ansible_connection=docker ansible_host=peter-zk01
 3 peter-zk02.foo.bar                                                           3 peter-zk02.foo.bar ansible_connection=docker ansible_host=peter-zk02
 4 peter-zk03.foo.bar                                                           4 peter-zk03.foo.bar ansible_connection=docker ansible_host=peter-zk03
 5                                                                              5 
 6 [kafkahosts]                                                                 6 [kafkahosts]
 7 peter-kafka01.foo.bar                                                        7 peter-kafka01.foo.bar ansible_connection=docker ansible_host=peter-kafka01
 8 peter-kafka02.foo.bar                                                        8 peter-kafka02.foo.bar ansible_connection=docker ansible_host=peter-kafka02
 9 peter-kafka03.foo.bar                                                        9 peter-kafka03.foo.bar ansible_connection=docker ansible_host=peter-kafka03
10                                                                             10 
11 [kerberoshosts]                                                             11 [kerberoshosts]
12 peter-zk01.foo.bar                                                          12 peter-zk01.foo.bar ansible_connection=docker ansible_host=peter-zk01

chapter2/ansible_playbook/kafka-cache/.gitkeep --- Text
No changes.

chapter2/ansible_playbook/roles/kafka/tasks/main.yml --- YAML
16     state: directory                                                                                 16     state: directory
17     mode: '0755'                                                                                     17     mode: '0755'
18                                                                                                      18 
19 - name: download kafka from web                                                                      19 - name: copy kafka from local cache
20   get_url:                                                                                           20   copy:
21     url: https://archive.apache.org/dist/kafka//kafka_2.12-.tgz  21     src: /opt/kafka-cache/kafka_2.12-.tgz
22     dest: /opt/                                                                                      22     dest: /opt/kafka_2.12-.tgz
23     mode: '0600'                                                                                     23     mode: '0600'
..                                                                                                      24     remote_src: yes
24                                                                                                      25 
25 - name: unarchive kafka                                                                              26 - name: unarchive kafka
26   unarchive:                                                                                         27   unarchive:

chapter2/ansible_playbook/roles/zookeeper/tasks/main.yml --- YAML
29     group: zookeeper                                                                                                29     group: zookeeper
30     mode: '0755'                                                                                                    30     mode: '0755'
31                                                                                                                     31 
32 - name: download zookeeper from web                                                                                 32 - name: copy zookeeper from local cache
33   get_url:                                                                                                          33   copy:
34     url: https://archive.apache.org/dist/zookeeper//apache--bin.tar.gz  34     src: /opt/kafka-cache/apache--bin.tar.gz
35     dest: /opt/                                                                                                     35     dest: /opt/apache--bin.tar.gz
36     mode: '0600'                                                                                                    36     mode: '0600'
..                                                                                                                     37     remote_src: yes
37                                                                                                                     38 
38 - name: unarchive zookeeper                                                                                         39 - name: unarchive zookeeper
39   unarchive:                                                                                                        40   unarchive:

[root@peter-kafka01 /]# ls /usr/local/kafka/bin/kafka-topics.sh
/usr/local/kafka/bin/kafka-topics.sh
[root@peter-kafka01 /]# /usr/local/kafka/bin/kafka-topics.sh --bootstrap-server peter-kafka01.foo.bar:9092 --create --topic peter-overview01 --partitions 1 --replication-factor 3
Created topic peter-overview01.
[root@peter-kafka01 /]# /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server peter-kafka01.foo.bar:9092  --topic peter-overview01
First message
[root@peter-kafka01 /]# /usr/local/kafka/bin/kafka-console-producer.sh --bootstrap-server peter-kafka01.foo.bar:9092  --topic peter-overview01
>First message
Tags: tag