IBM Operations Analytics - Log Analysis, 버전 1.3.5

Apache Kafka 브로커 구성

확장성 데이터 로딩을 구현하려면 하나 이상의 Apache Kafka 브로커를 구성해야 합니다.

이 태스크 정보

Apache KafkaLog Analysis와 함께 번들로 제공됩니다. Apache Kafka에 대한 샘플 구성 파일은 <HOME>/IBM/LogAnalysis/kafka/test-configs/kafka-configs 디렉토리에 있습니다.

브로커가 설치되는 서버에서 두 개의 물리적 프로세서마다 주제당 하나의 파티션을 작성하십시오. 예를 들어, 8개의 코어 프로세서를 사용하는 경우 Apache Kafka 브로커에서 주제당 4개의 파티션을 작성하십시오.

고가용성 메시징을 구현하려면 다양한 서버에서 여러 브로커를 작성해야 합니다. 여러 브로커를 설정하려면 3단계에서 설명된 대로 구성 파일을 업데이트하십시오. 이를 동일한 Apache ZooKeeper 서버로 설정하고 각 브로커에 대해 고유하도록 브로커 ID를 업데이트하십시오.

프로시저

  1. Apache Kafka를 설치할 서버의 적절한 디렉토리에 kafka_version_number.tgz를 복사하십시오. 여기서 version_number는 Kafka 버전 번호입니다.

    Log Analysis 1.3.5 base 버전 및 수정팩의 Kafka 버전 번호는 기타 지원되는 소프트웨어의 내용을 참조하십시오.

  2. kafka_version_number.tgz 파일의 압축을 해제하십시오.
  3. 다음 표에서 요약된 것처럼 구성 파일의 각 섹션을 업데이트하십시오.
    표 1. 서버 기본 및 소켓 서버 설정
    매개변수 설명
    broker.id=0 각 브로커의 고유 ID를 지정하십시오.
    port=17991 소켓 서버가 청취하는 포트를 지정하십시오. 예: 17991.
    #host.name=<local_host> 브로커가 바인드하는 호스트 이름을 지정하십시오. 값을 지정하지 않으면 브로커는 모든 인터페이스에 바인드합니다.
    #advertised.host.name=<hostname_routable_by_clients> Apache ZooKeeper가 클라이언트 및 이용자에게 광고하는 데 사용하는 호스트 이름을 지정하십시오. 값을 지정하지 않으면 java.net.InetAddress.getCanonicalHostName()의 값이 사용됩니다.
    #advertised.port=<port accessible by clients> 클라이언트에 연결하는 데 사용하는 Apache ZooKeeper를 게시하는 포트를 지정하십시오. 값을 지정하지 않으면 브로커가 사용하는 것과 동일한 포트를 사용합니다.
    num.network.threads=3 네트워크 요청을 처리하는 데 사용되는 스레드 수를 지정하십시오.
    num.io.threads=8 입력 및 출력 조작에 사용되는 스레드의 수를 지정하십시오.
    socket.send.buffer.bytes=1048576 전송 버퍼 또는 소켓 서버가 사용하는 SO_SNDBUF를 지정하십시오.
    socket.receive.buffer.bytes=1048576 수신 버퍼 또는 소켓 서버가 사용하는 SO_RCVBUF를 지정하십시오.
    socket.request.max.bytes=104857600 소켓 서버가 수락하는 요청의 최대 크기를 지정하십시오. 이 설정이 메모리 문제에 대해 보호하는 데 도움이 됩니다.
    queued.max.requests=16 네트워크 스레드가 차단되기 전에 허용되는 최대 스레드 수를 지정하십시오.
    fetch.purgatory.purge.interval.requests=100 페치 요청의 제거를 트리거하는 요청 수로 간격을 지정하십시오.
    producer.purgatory.purge.interval.requests=100 생성자 요청의 제거를 트리거하는 요청 수로 간격을 지정하십시오.
    표 2. 로그 기본
    매개변수 설명
    log.dirs=<Log_dir_path> 로그 파일을 저장하려는 디렉토리를 지정하십시오. 예: la/home/logs1, la/home/logs2, la/home/logs3
    num.partitions=4 주제를 처리하는 데 사용되는 파티션 수를 지정하십시오. 서버의 물리적 프로세서 수의 절반을 지정하십시오. 예를 들어 8개의 프로세서가 있으면 4를 지정하십시오.
    num.recovery.threads.per.data.dir=1 각 데이터 디렉토리에 대한 로그 복구에 사용되는 스레드의 최대 수를 지정하십시오.
    log.index.size.max.bytes=154624 오프셋 색인의 최대 크기를 바이트 단위로 지정하십시오.
    log.index.interval.bytes=4096 항목이 오프셋 색인에 추가되는 간격을 바이트 단위로 지정하십시오.
    message.max.bytes=1000000 서버가 수신할 수 있는 메시지의 최대 크기를 지정하십시오.
    auto.create.topics.enable=true 서버에서 주제의 자동 작성을 사용으로 설정하려면 이것을 사용하십시오.
    표 3. 로그 플러시 정책
    매개변수 설명
    default.replication.factor=1 자동으로 작성된 주제에 사용되는 복제 요인을 지정하십시오.
    log.flush.interval.messages=100000 메시지가 플러시되기 전에 누적될 수 있는 최대 메시지 수를 지정하십시오.
    log.flush.interval.ms=50000 메시지가 플러시되기 전에 로그에서 누적할 수 있는 최대 시간을 지정하십시오.
    log.flush.scheduler.interval.ms=2000 로그가 플러시되는 간격을 지정하십시오.
    표 4. 로그 보존 정책
    매개변수 설명
    log.retention.hours=168 그 전에 로그 파일의 최소 기간을 지정하십시오.
    #log.retention.bytes=1073741824 각 지정된 세그먼트에서 보존되어야 하는 바이트 수를 지정하십시오. 양이 이 최소값에 접근하는 경우 로그는 삭제되기 보다는 보존됩니다.
    log.segment.bytes=1073741824 세그먼트의 최대 크기를 지정하십시오. 이 한계에 도달하면 새 세그먼트가 작성됩니다.
    log.retention.check.interval.ms=300000 로그 보존 정책에서 지정된 규칙에 따라서 Apache Kafka가 로그 파일을 삭제하기 전에 경과되는 간격을 지정하십시오.
    log.cleaner.enable=false 로그 클리너는 기본적으로 사용 안됩니다. 이 설정은 로그 보존 정책에서 지정된 보존 기간이 만료된 후 세그먼트가 삭제됨을 의미합니다.
    log.roll.hours=168 새 로그 세그먼트가 롤아웃되기 전에 경과해야 하는 최대 시간을 지정하십시오.
    표 5. Apache Zookeeper 매개변수
    매개변수 설명
    zookeeper.connect=<localhost>:17981 Apache ZooKeeper 서버의 호스트 이름과 포트를 지정하십시오.
    zookeeper.connection.timeout.ms=6000 그 후에 Apache ZooKeeper에 대한 연결이 제한시간 초과하는 제한시간 값을 밀리초 단위로 지정하십시오.
    zk.sync.time.ms=2000 그 후에 Apache ZooKeeper가 연결된 서버와 동기화하는 간격을 지정하십시오.
    num.replica.fetchers=4 소스 브로커의 메시지를 복제하는 데 사용되는 스레드 수를 지정하십시오. 이 값을 늘리면 브로커의 I/O 조작에서 병렬 처리가 늘어날 수 있습니다.
    replica.fetch.max.bytes=1048576 각 파티션에 대한 페치 요청에서 사용되는 바이트 수를 지정하십시오.
    replica.fetch.wait.max.ms=500 팔로워 복제본이 발행하는 각 페처 요청에 대한 최대 대기 시간을 지정하십시오. 이 값은 replica.lag.time.max.ms에서 지정되는 값보다 크지 않아야 합니다.
    replica.high.watermark.checkpoint.interval.ms=5000 높은 워터마크가 디스크에 저장되는 간격을 지정하십시오.
    replica.socket.timeout.ms=30000 네트워크 요청에 대한 소켓 제한시간 값을 지정하십시오. 값은 replica.fetch.wait.max.ms에서 지정되는 값보다 크거나 같아야 합니다.
    replica.socket.receive.buffer.bytes=65536 소켓 수신자를 위한 버퍼를 지정하십시오.
    replica.lag.time.max.ms=10000 팔로워가 제거되기 전의 시간을 지정하십시오.
    controller.socket.timeout.ms=30000 컨트롤러에서 브로커로 메시지를 보내는 데 사용되는 채널에 대한 소켓 제한시간 값을 지정하십시오.
    표 6. 내구성 및 강화 매개변수
    매개변수 설명
    retries=0 0보다 큰 값을 지정하는 경우 모든 실패한 메시지가 다시 전송됩니다.
    acks=all 생성자가 요청이 완료되기 전에 수신자가 수신할 것을 요구하는 수신확인의 수를 지정하십시오.
  4. Apache ZooKeeper를 시작하십시오. 콘솔 모드에서 시작하려면 다음 명령을 입력하십시오.
    <Kafka_home>/bin/zookeeper-server-start.sh config/zookeeper.properties 
  5. Apache Kafka 브로커를 시작하십시오. 다음 명령을 입력하십시오.
    <Kafka_home>/bin/kafka-server-start.sh -daemon config/server0.properties 
    브로커를 중지하려면 다음 명령을 입력하십시오.
    <Kafka_home>/bin/kafka-server-stop.sh
    Apache ZooKeeper를 중지하려면 다음 명령을 입력하십시오.
    <Kafka_home>/bin/zookeeper-server-stop.sh

############################# Server Basics #############################
broker.id=0
############################# Socket Server Settings #############################
port=17991
#host.name=<local_host>
#advertised.host.name=<hostname_routable_by_clients>
#advertised.port=<port accessible by clients>
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=1048576
socket.receive.buffer.bytes=1048576
socket.request.max.bytes=104857600
queued.max.requests=16
fetch.purgatory.purge.interval.requests=100
producer.purgatory.purge.interval.requests=100



############################# Log Basics #############################
log.dirs=<Log_dir_path>
num.partitions=4
num.recovery.threads.per.data.dir=1
log.index.size.max.bytes=154624
log.index.interval.bytes=4096
message.max.bytes=1000000
auto.create.topics.enable=true

############################# Log Flush Policy #############################
default.replication.factor=1
log.flush.interval.messages=100000
log.flush.interval.ms=50000
log.flush.scheduler.interval.ms=2000

############################# Log Retention Policy #############################
log.retention.hours=168
#log.retention.bytes=1073741824
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
log.roll.hours=168

############################# Zookeeper #############################

zookeeper.connect=<localhost>:17981
zookeeper.connection.timeout.ms=6000
zk.sync.time.ms=2000


# Replication configurations
num.replica.fetchers=4
replica.fetch.max.bytes=1048576
replica.fetch.wait.max.ms=500
replica.high.watermark.checkpoint.interval.ms=5000
replica.socket.timeout.ms=30000
replica.socket.receive.buffer.bytes=65536
replica.lag.time.max.ms=10000
replica.lag.max.messages=4000

controller.socket.timeout.ms=30000
controller.message.queue.size=10

###################################
# Durability and hardening
###################################
retries=0
acks=all


피드백