kmg28801 / kafka-study

1 stars 0 forks source link

[실전 카프카 개발부터 운영까지] 8장. 카프카 버전 업그레이드와 확장 #18

Open kmg28801 opened 1 year ago

taewoo-kim123 commented 1 year ago

8장

카프카 버전을 올리는 방법을 배운다.

8.1 카프카 버전 업그레이드를 위한 준비

8.2.2 브로커 버전 업그레이드

PLAY [peter-zk03.foo.bar] ****

TASK [Gathering Facts] *** [WARNING]: Platform linux on host peter-zk03.foo.bar is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. ok: [peter-zk03.foo.bar]

TASK [common : Set timezone to Asia/Seoul] *** ok: [peter-zk03.foo.bar]

TASK [common : install Java and tools] *** ok: [peter-zk03.foo.bar]

TASK [common : copy krb5 conf] *** ok: [peter-zk03.foo.bar]

TASK [stop kafka-server] ***** fatal: [peter-zk03.foo.bar]: FAILED! => {"changed": false, "msg": "Could not find the requested service kafka-server: host"} ...ignoring

TASK [remove directory kafka] **** ok: [peter-zk03.foo.bar]

TASK [make dir kafka] **** changed: [peter-zk03.foo.bar]

TASK [download kafka from web] *** changed: [peter-zk03.foo.bar]

TASK [unarchive kafka] *** changed: [peter-zk03.foo.bar]

TASK [setup link kafka] ** changed: [peter-zk03.foo.bar]

TASK [copy kafka server conf files] ** changed: [peter-zk03.foo.bar]

TASK [copy kafka conf file] ** changed: [peter-zk03.foo.bar] => (item=jmx) changed: [peter-zk03.foo.bar] => (item=connect-distributed.properties)

TASK [copy kafka server in systemd] ** changed: [peter-zk03.foo.bar] => (item=kafka-server.service) changed: [peter-zk03.foo.bar] => (item=kafka-connect.service)

TASK [kafka : just force systemd to reload configs] ** ok: [peter-zk03.foo.bar]

TASK [kafka : make sure a service is running] **** changed: [peter-zk03.foo.bar]

PLAY RECAP *** peter-zk03.foo.bar : ok=15 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1

* 주키퍼3 서버에 접속해서 id가 4로 잘 설정되어있는지 확인 (`broker.id=4` 확인 완료)
* 하지만 이 상태는 브로커 개수를 하나 늘려줬을뿐 파티션은 이동되지 않은 상태
* 새로운 토픽을 생성한다면 4개의 파티션이 4개의 브로커로 골고루 퍼진걸 확인 할 수있음
```shell
  [ec2-user@ip-172-31-0-34 ~]$ /usr/local/kafka/bin/kafka-topics.sh --bootstrap-server peter-kafka01.foo.bar:9092 --create --topic peter-scaleout2 --partitions 4 --replication-factor 1
  Created topic peter-scaleout2.
  [ec2-user@ip-172-31-0-34 ~]$ /usr/local/kafka/bin/kafka-topics.sh --bootstrap-server peter-kafka01.foo.bar:9092 --describe --topic peter-scaleout2
  Topic: peter-scaleout2    PartitionCount: 4   ReplicationFactor: 1    Configs: segment.bytes=1073741824
  Topic: peter-scaleout2    Partition: 0    Leader: 4   Replicas: 4 Isr: 4
  Topic: peter-scaleout2    Partition: 1    Leader: 1   Replicas: 1 Isr: 1
  Topic: peter-scaleout2    Partition: 2    Leader: 2   Replicas: 2 Isr: 2
  Topic: peter-scaleout2    Partition: 3    Leader: 3   Replicas: 3 Isr: 3

Proposed partition reassignment configuration {"version":1,"partitions":[{"topic":"peter-scaleout1","partition":0,"replicas":[4],"log_dirs":["any"]},{"topic":"peter-scaleout1","partition":1,"replicas":[1],"log_dirs":["any"]},{"topic":"peter-scaleout1","partition":2,"replicas":[2],"log_dirs":["any"]},{"topic":"peter-scaleout1","partition":3,"replicas":[3],"log_dirs":["any"]}]}

* 현재 설정된 파티션 배치를 먼저 보여주고, 제안하는 파티션 배치를 출력해줌, 그럼 뒤에 제안한 배치의 설정을 복사하고 새로운 move.json 파일을 생성
* `move.json` 파일을 적용
```shell
[ec2-user@ip-172-31-0-34 ~]$ /usr/local/kafka/bin/kafka-reassign-partitions.sh --bootstrap-server peter-kafka01.foo.bar:9092 --reassignment-json-file move.json --execute
Current partition replica assignment

{"version":1,"partitions":[{"topic":"peter-scaleout1","partition":0,"replicas":[1],"log_dirs":["any"]},{"topic":"peter-scaleout1","partition":1,"replicas":[2],"log_dirs":["any"]},{"topic":"peter-scaleout1","partition":2,"replicas":[3],"log_dirs":["any"]},{"topic":"peter-scaleout1","partition":3,"replicas":[1],"log_dirs":["any"]}]}

Save this to use as the --reassignment-json-file option during rollback
Successfully started partition reassignments for peter-scaleout1-0,peter-scaleout1-1,peter-scaleout1-2,peter-scaleout1-3

8.3.2 분산 배치 작업 시 주의사항