# 19_12 ipvo ## messaging system - pozeljno je da je eksperimentali rad gotov do 9.1 jer ce onda biti konzultacije di ce komentirat radove svakom posebno ### ZOOKEEPER zeroMQ - messaging library ```docker pull zookeeper``` ``` docker run --name some-zookeeper --restart always -d zookeeper e8cbbfff9ff140191b65bdfc9e538c4bda0fb5ddce32e127726fff5664181539 ``` ``` docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e8cbbfff9ff1 zookeeper "/docker-entrypoint.…" 25 seconds ago Up 23 seconds 2181/tcp, 2888/tcp, 3888/tcp, 8080/tcp some-zookeeper ``` - koristi se localhost adresa: localhost:8080 ``` nano docker-compose.yml korisnik@ODJ-O365-109:~$ docker-compose up Creating network "korisnik_default" with the default driver Creating korisnik_zoo2_1 ... done Creating korisnik_zoo1_1 ... done Creating korisnik_zoo3_1 ... done Attaching to korisnik_zoo2_1, korisnik_zoo3_1, korisnik_zoo1_1 ``` - dobili smo repliciran sustav, tj nekoliko cvorova unutar distibuiranog sustava ### ZAD1 modificirajte docker-compose.yml da radni na 5 cvorova umjesto kao do sad na 3 cvora ``` version: '3.1' services: zoo1: image: zookeeper restart: always hostname: zoo1 ports: - 2181:2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181 zoo2: image: zookeeper restart: always hostname: zoo2 ports: - 2182:2181 environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181 zoo3: image: zookeeper restart: always hostname: zoo3 ports: - 2183:2181 environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181 zoo4: image: zookeeper restart: always hostname: zoo4 ports: - 2184:2181 environment: ZOO_MY_ID: 4 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181 zoo5: image: zookeeper restart: always hostname: zoo5 ports: - 2185:2181 environment: ZOO_MY_ID: 5 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181 ``` - servers su isti jer su navedeni serveri koje po id-ju povezuje - portovi se koriste unutar docker mreze ``` korisnik@ODJ-O365-109:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f64239290f45 zookeeper "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2182->2181/tcp, :::2182->2181/tcp korisnik_zoo2_1 ed54d7045fe6 zookeeper "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2183->2181/tcp, :::2183->2181/tcp korisnik_zoo3_1 f1b1a1668da6 zookeeper "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2185->2181/tcp, :::2185->2181/tcp korisnik_zoo5_1 de84f32347f0 zookeeper "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2184->2181/tcp, :::2184->2181/tcp korisnik_zoo4_1 e3cc5fcbada8 zookeeper "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 8080/tcp korisnik_zoo1_1 e8cbbfff9ff1 zookeeper "/docker-entrypoint.…" 22 minutes ago Up 22 minutes 2181/tcp, 2888/tcp, 3888/tcp, 8080/tcp ``` - tu nije dostupan 8080 port jer nmea -> - nakon dodavanja porta 8080 je dostupan ``` version: '3.1' services: zoo1: image: zookeeper restart: always hostname: zoo1 ports: - 2181:2181 - 8080:8080 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181 zoo2: image: zookeeper restart: always hostname: zoo2 ports: - 2182:2181 - 8081:8081 environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181 zoo3: image: zookeeper restart: always hostname: zoo3 ports: - 2183:2181 - 8082:8082 environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181 zoo4: image: zookeeper restart: always hostname: zoo4 ports: - 2184:2181 - 8083:8083 environment: ZOO_MY_ID: 4 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181 zoo5: image: zookeeper restart: always hostname: zoo5 ports: - 2185:2181 - 8084:8084 environment: ZOO_MY_ID: 5 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181 ``` ``` docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d813ee0120ce zookeeper "/docker-entrypoint.…" 14 seconds ago Up 10 seconds 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:8082->8082/tcp, :::8082->8082/tcp, 0.0.0.0:2183->2181/tcp, :::2183->2181/tcp korisnik_zoo3_1 2526929e4451 zookeeper "/docker-entrypoint.…" 14 seconds ago Up 10 seconds 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:2184->2181/tcp, :::2184->2181/tcp korisnik_zoo4_1 1cb3d3ad33dd zookeeper "/docker-entrypoint.…" 14 seconds ago Up 10 seconds 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp, 0.0.0.0:2182->2181/tcp, :::2182->2181/tcp korisnik_zoo2_1 0369decc7278 zookeeper "/docker-entrypoint.…" 14 seconds ago Up 11 seconds 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:8084->8084/tcp, :::8084->8084/tcp, 0.0.0.0:2185->2181/tcp, :::2185->2181/tcp korisnik_zoo5_1 cdee64608f5c zookeeper "/docker-entrypoint.…" 14 seconds ago Up 10 seconds 2888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 3888/tcp korisnik_zoo1_1 e8cbbfff9ff1 zookeeper "/docker-entrypoint.…" 25 minutes ago Up 24 minutes 2181/tcp, 2888/tcp, 3888/tcp, 8080/tcp some-zookeeper ``` http://localhost:8080/commands ### KAFKA ``` docker network ls NETWORK ID NAME DRIVER SCOPE bb8be45b75cf bridge bridge local cc24bdfcc132 host host local 9eeea86e69dc korisnik_default bridge local 24a42c9ca28b none null local 765509a0e608 some-network bridge local korisnik@ODJ-O365-109:~$ docker network prune WARNING! This will remove all custom networks not used by at least one container. Are you sure you want to continue? [y/N] y Deleted Networks: some-network korisnik@ODJ-O365-109:~$ docker network ls NETWORK ID NAME DRIVER SCOPE bb8be45b75cf bridge bridge local cc24bdfcc132 host host local 9eeea86e69dc korisnik_default bridge local 24a42c9ca28b none null local korisnik@ODJ-O365-109:~$ ``` - kosa crta na kraj reda je prekid retka - u novi treminal pokreni - zookeeper mora bit pokrenut ``` docker run --name kafka-server \ > --network korisnik_default \ > -e ALLOW_PLAINTEXT_LISTENER=yes \ > -e KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181 \ > bitnami/kafka:latest Unable to find image 'bitnami/kafka:latest' locally latest: Pulling from bitnami/kafka f8c1c832ce65: Pull complete 1164ae0729d7: Pull complete Digest: sha256:b0c23c3faa95bb12aaec10ba300b83049f31424ee0df1cdc14b4fde016309072 Status: Downloaded newer image for bitnami/kafka:latest kafka 16:04:54.63 kafka 16:04:54.63 Welcome to the Bitnami kafka container kafka 16:04:54.63 Subscribe to project updates by watching https://github.com/bitnami/containers kafka 16:04:54.63 Submit issues and feature requests at https://github.com/bitnami/containers/issues kafka 16:04:54.63 kafka 16:04:54.63 INFO ==> ** Starting Kafka setup ** kafka 16:04:54.67 WARN ==> You set the environment variable ALLOW_PLAINTEXT_LISTENER=yes. For safety reasons, do not use this flag in a production environment. kafka 16:04:54.68 INFO ==> Initializing Kafka... kafka 16:04:54.68 INFO ==> No injected configuration files found, creating default config files kafka 16:04:54.83 INFO ==> ** Kafka setup finished! ** kafka 16:04:54.84 INFO ==> ** Starting Kafka ** [2022-12-19 16:04:55,653] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$) [2022-12-19 16:04:56,042] INFO Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation (org.apache.zookeeper.common.X509Util) [2022-12-19 16:04:56,135] INFO Registered signal handlers for TERM, INT, HUP (org.apache.kafka.common.utils.LoggingSignalHandler) [2022-12-19 16:04:56,137] INFO starting (kafka.server.KafkaServer) [2022-12-19 16:04:56,137] INFO Connecting to zookeeper on zoo1:2181 (kafka.server.KafkaServer) [2022-12-19 16:04:56,153] INFO [ZooKeeperClient Kafka server] Initializing a new session to zoo1:2181. (kafka.zookeeper.ZooKeeperClient) [2022-12-19 16:04:56,157] INFO Client environment:zookeeper.version=3.6.3--6401e4ad2087061bc6b9f80dec2d69f2e3c8660a, built on 04/08/2021 16:35 GMT (org.apache.zookeeper.ZooKeeper) [2022-12-19 16:04:56,157] INFO Client environment:host.name=8f745380c973 (org.apache.zookeeper.ZooKeeper) [2022-12-19 16:04:56,157] INFO Client envir . . . ``` - zookepeer se otvra samo prema jednom portu zato je 8081 prazan kod connections a 8080 ima popunjene podatke - 8084 je leader, a ostali su followeri jer ima najveci ID ili zadnji pokrenut (to ni on nije siguran) ### ZAD2 digni jos jednu kafku i spoji ju na isti zookeeper, a treću kafku spoji na drugi zookeeper ``` docker run --name kafka-server1 \ --network korisnik_default \ -e ALLOW_PLAINTEXT_LISTENER=yes \ -e KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181 \ bitnami/kafka:latest ``` ``` docker run --name kafka-server2 \ --network korisnik_default \ -e ALLOW_PLAINTEXT_LISTENER=yes \ -e KAFKA_CFG_ZOOKEEPER_CONNECT=zoo2:2181 \ bitnami/kafka:latest ```