본문 바로가기
Data PipeLine/Zookeeper

[Zookeeper] Ver. 3.6.0 Release note 요약

by 연습장이 2024. 10. 18.
728x90
반응형

New Feature

  • 서버와 클라이언트에 대한 고유 DB 식별자를 추가함
  • 주키퍼 서버에서의 감사를 로깅함
  • 주키퍼에 대한 새 기능으로 인증 강화를 제안함
  • znode와 그 자식들을 재귀적으로 나열하는 CLI 명령어를 추가함
  • OWASP 종속성 보고서를 실행하기 위한 ant 작업을 추가함
  • 실시간으로 jute.maxBuffer 사용량 모니터링 기능을 추가함
  • CRC 오류가 있는 로그 및 스냅샷 항목을 복구하는 도구를 필요로 함
  • Followers의 JMX에 현재 리더의 ID를 노출하도록 함
  • Prometheus.io를 통합함
  • 주키퍼에에 대한 플러그 가능한 메트릭 시스템을 추가함
  • 주키퍼 내부에 내장된 데이터 일관성을 검사함
  • 특정 zxid로 로그를 잘라내는 유틸리티를 추가함
  • 팔로워가 옵저버를 호스팅할 수 있도록 허용함
  • 사용자 지정 SSLContext를 추가함
  • 특정 경로 아래에 있는 재귀적 하위 노드의 총 개수를 얻는 API 및 해당 CLI를 추가함
  • 세션에 의해 생성된 모든 일시적 노드를 얻는 새로운 getEphemerals api를 추가함
  • 로그 크기에 기반한 스냅샷 옵션을 추가함
  • 트랜잭션 로그 플러시에 지연을 허용하도록 함
  • Netty 연결에 대한 IP 인증을 자동으로 추가하도록 함
  • zookeeperTools.md 에 대한 새 문서를 추가함
  • zkSnapShotToolkit.sh로 Snapshotformatter를 캡슐화하고 사용법을 문서화함
  • 관리 서버를 위해 포트를 통합함
  • zooekeeperMonitor.md 문서를 추가함

 

Improvement

  • 테스트 JAR를 게시함
  • 클라이언트와 쿼럼에 대한 SASL(Kerberos) 인증과 SSL을 지원함
  • zkpython에 SSL 지원을 추가함
  • 재초기화된 서버가 리더 선출에 참여하지 않도록 함
  • 단일 스레드 C 클라이언트 API에서 동기 호출을 제거함
  • 클라이언트 포트의 리슨 소켓 대기열 설정을 가능하도록 함
  • 대규모 클라이언트를 위한 대량의 와치(watch) 활성화를 지원함
  • 영구적 재귀 watch를 지원함
  • 데이터 디렉토리 및 로그 디렉토리 크기를 노출하도록 함
  • 주키퍼 클라이언트 쉘에 버전 명령어를 추가함
  • 주키퍼 서버에 버전 명령어를 추가함
  • 클라이언트 측에서 서버 주체 설정을 가능하도록 함
  • 멀티 스레드 NIOServerCnxn를 구현함
  • DNS 호스트 이름 → ip 해상도로 재시도하도록 함
  • ZooKeeperServer 객체를 인증 플러그인에 통합함
  • 압축된 스냅샷 지원을 추가함
  • 리더 선출 연결을 위한 TCP keepalive를 활성화함
  • 스레드 처리를 개선함
  • setAcl의 재귀적 기능을 추가함
  • JMX 원격 모니터링을 활성화함
  • JDK7을 주키퍼의 최소 요구 사항으로 설정함
  • 백업 구성 파일을 지원함
  • 혼합 워크로드에 대한 처리량을 대폭 향상함
  • SASL 연결 문제의 근본 원인을 로깅하도록 함
  • kill -9 대신 kill로 데몬을 중지하도록 함
  • 사용되지 않는 리더 선출 구현을 제거함
  • 로컬 세션 파라미터를 문서화함
  • ZooInspector의 사용자 경험을 개선함
  • 초기 메시지를 위한 BufferedOutputStream을 사용함
  • 주키퍼 클라이언트의 사용자 정의 HostProviders를 지원함
  • ZK 문서의 오타를 수정함
  • EventThread와  SendThread의 종료 로그 메시지를 개선함
  • 단일 JVM 내에서 다중 주키퍼 클라이언트를 지원함
  • NettyServerCnxn 및 NIOServerCnxn 코드를 개선함
  • 소켓 연결 설정 시 클라이언트 주소를 로깅하도록 함
  • 오류 메시지 명확성을 개선함
  • Watcher.java의 오타를 수정함
  • 동시 테스트 프로세스와 포트 할당을 개선함
  • OutOfMemoryError 발생 시 자동 처리 기능울 추가함
  • 이전 Ant 버전 지원을 유지하도록 함
  • Datanode.getChildren() 반환값을 변경함
  • 학습자 핸들러 루프에서 예상치 못ㅅ한 쿼럼 패킷의 로그 유형을 추가함
  • LearnerHandler.packetToString()에 누락된 패킷 유형을 추가함
  • LearnerHandler.packetToStriing()을 통한 오류 로그를 개선함
  • 옵저버 루프에서 예상치 못한 쿼럼 패킷의 로그 유형을 추가함
  • FindBugs 경고를 처리하도록 함
  • 메소드 단위 JUnit 테스트 케이스를 지원함
  • 주키퍼 서버의 최대 연결 수 제한을 지원함
  • 3노드 최소 구성을 명확화함
  • MBeanRegistry 오버라이드 가능성을 추가함
  • 테스트 코드에서 파일 삭제 코드 중복을 제거함
  • 클라이언트 연결 zk 서비스 타임아웃 로그 레벨을 변경함
  • 연결된 서버 주소:포트 로깅을 포함함
  • 주키퍼 클라이언트의 불필요한 watcher 제거 오류 로그를 최소화함
  • 클라이언트 watcher 연결 해제를 개선함
  • pom 파일 내 라이선스 섹션 누락을 수정함
  • Ivy 최신 버전으로 업그레이드함
  • Netty 3.7.1.Final로 업데이트함
  • 클라이언트 측 속성을 문서화함
  • 'ELECTION TOOK' 로그 메시지에 시간 단위를 추가함
  • ZookeeperSaslServer에서 사용자 주체를 허용하도록 함
  • 리더 및 팔로워 MXBean에 'electionTimeTaken' 값을 추가함
  • Jetty 종속성을 최신 안정 버전으로 업그레이드함
  • AvgRequestLatency 지표를 개선함
  • txn 로그 동기화 시간에 대한 메트릭을 추가함
  • 주키퍼 클라이언트가 우아하게 중지를 처리하도록 함
  • ZooKeeperSaslClient의 예외 로깅을 개선함
  • Reconfig 실행으로 인한 노드 설정 파일 불일치 문제를 해결함
  • stat 명령의 Zxid에 대한 키를 추가함
  • 주키퍼 서버 시작 시 dataDir 및 dataLogDir 매개변수 유효성 검사를 추가함
  • 느린 fsync를 추적하는 메트릭을 추가함
  • 리더 선출 포트 바인딩 실패 시 주키퍼를 종료하도록 함(2888인가 3888로 기억함)
  • 리더 활성화 중 선출 참여자 변경으로 인한 가용성 시간 감소를 방지하도록 함
  • 스냅샷 압축 추가로 디스크 I/O를 감소하도록 함
  • 읽기 집중적인 트래픽 처리량 향상을 위해 응답 캐시를 도입함
  • 네트워크 내성(resilience)를 향상시킴
  • TLS에서 클라이언트 초기화된 재협상을 비활성화하도록 함
  • 투표에 참여하지 않는 팔로워 서버를 추적 및 노출하도록 함
  • IPv6 와일드카드 주소를 지원함
  • EnsembleAuthProvider를 통한 앙상블 이름을 검증하도록 함
  • 서버 측 연결 제한 기능을 추가함
  • 서버 측 요청 제한 기능을 추가함
  • 주키퍼 파이프라인 및 요청/서버 상태에 대한 유용한 메트릭을 추가함
  • 주키퍼의 KeroberosUtil에서 발생하는 불법적인 반사적 접근을 수정하도록 함
  • JAVA_HOME 설정 오류 시 개선된 에러 메시지를 제공하도록 함
  • 디버그 및 추적 로그 문구를 개선함
  • 관리 명령어를 통한 초기 설정 표시 기능을 추가함
  • CommitProcessor의 커밋 처리량 개선을 위한 배치 커밋 기능을 추가함
  • 리더 표시를 위한 관리 명령어를 추가함
  • 투표 뷰 표시를 위한 관리 명령어를 추가함
  • 동시에 평문 및 암호화된 연결을 지원하는 클라이언트 포트를 추가함
  • 스냅샷 정보 표시를 위한 관리 명령어를 추가함
  • 관리 명령어 문서화를 개선함
  • multiRead 작업을 추가함
  • 로컬 서버에서의 ACL 검사를 통한 쿼럼 처리량을 개선함
  • 클라이언트/서버 연결 종료 시 모니터링을 개선함
  • MessageTracker 도입으로 리더와 학습자 간 연결 문제 디버깅을 지원함
  • 피어의 동기화 상태 표시를 위한 관리 명령어를 추가함
  • 리더에 대한 체크 요청을 쓰기 요청으로 처리하도록 함
  • TLS 핸드쉐이크 처리량 개선을 위한 동시 제어를 도입함
  • 서버 측 연결 제한에 가중치를 추가함
  • 리더 선출 과정 관찰을 위한 서버 명령어를 개선함
  • 서버 측 대규모 요청을 제한하도록 함

 

Bug

  • 최근 스냅샷이 모두 유효하지 않을 때 데이터 손실이 발생할 수 있는 작업을 정리함
  • 로그 디스크가 가득 찼을 때 Split brain이 발생하는 버그가 수정됨
  • 대량의 watch가 있을 경우 세션 재설정 실패 가능성을 제거함
  • 노드를 읽을 권한이 없을 때에도 ACL을 읽는 버그가 수정됨
  • quorum 멤버에 대해 IPv6 리터럴 주소를 지원하지 않는 버그가 수정됨
  • zookeeper_close에서 메모리가 누수되는 버그가 수정됨
  • 참여자로 새 노드를 재구성할 때 클러스터가 충돌하는 버그가 수정됨
  • zk 시작 실패를 적절한 오류 메시지로 처리하도록 수정함
  • 연결 시도가 실패할 때 주키퍼 클라이언트가 호스트를 다시 해석하도록 수정함
  • 클라이언트 포트를 재구성하면 소켓 누수가 발생하는 버그가 수정됨
  • 리더 종료와 리더에게 ACK 전달 사이의 교착 상태가 발생하는 버그가 수정됨
  • 윈도우 OS에서 zooInspector가 시작되지 않는 버그가 수정됨
  • 리더 서버를 종료하는 동안 교착 상태가 발생하는 버그가 수정됨
  • 팔로워가 리더와 동기화하는 동안 외부 연결 요청을 받으면 서버가 교착 상태에 빠질 수 있는 버그가 수정됨
  • 잘못된 TTL로 인해 주키퍼가 충돌하는 버그가 수정됨
  • 세션 관리의 결함으로 인한 데이터 불일치가 발생하는 버그가 수정됨
  • CMake가 잘못된 주키퍼 버전을 선언하는 버그가 수정됨
  • 주키퍼 서버가 다시 열렸을 때, 옵저버가 새 리더에게 연결하는 데 걸리는 시간이 너무 길어 세션이 만료되는 버그가 수정됨
  • 잘못된 리더 선거 시간을 기록하는 버그가 수정됨
  • 시스템 변수를 사용하여 zookeeper.sasl.client.canonicalize.hostname을 설정할 수 없는 버그가 수정됨

 

Test

  • -

 

Wish

  • -

 

Task

  • 선택적으로 클라이언트 환경 로깅을 억제하도록 함

 

Sub-task

  • Atomic Boradcast 프로토콜에 대한 SSL을 지원함
  • 동적 재구성 중에 교착 상태가 발생하는 버그가 수정됨
  • TTL 임시 노드에 대한 CLI 옵션을 생성함
  • 디스크에서 스냅샷/트랜잭션을 로드할 때 데이터 무결성을 확인하도록 함
  • 기본 암호 목록에 AES-256 암호를 추가하도록 함
  • watch 메트릭을 추가하도록 함
  • commit 프로세서 메트릭을 추가하도록 함
  • 팔로워 및 옵저버에 대한 메트릭을 추가함
  • 리더에 대한 메트릭을 추가함
  • TxnSnapLog 메트릭을 추가함
  • 최상위 znode에 대한 읽기/쓰기 메트릭을 추가함
  • 세션/연결 관련 메트릭을 추가함
  • 회복할 수 없는 오류 횟수를 추가함

 

참고

728x90
반응형