Atlas 가 기동하지 않거나, 기동은 되는데 메타데이터 수집이 멈춘다. 로그에 ZooKeeper 연결 실패나 세션 만료가 반복된다.
Atlas 는 여러 곳에서 ZooKeeper 를 참조한다. 어느 경로에서 실패하는지 구분해야 설정을 제대로 고친다.
| 용도 | 관련 설정 |
|---|---|
| Kafka 알림 수신(hook 메시지) | atlas.kafka.zookeeper.connect |
| Solr 인덱스 접근 | atlas.graph.index.search.solr.zookeeper-url |
| HA 구성에서 활성 인스턴스 선출 | atlas.server.ha.zookeeper.connect |
atlas-application.properties 에 들어 있다.
grep -E 'zookeeper' /etc/atlas/conf/atlas-application.properties
Solr 용 설정은 host:2181/solr 처럼 znode 경로까지 포함하는 경우가 많다. 경로를 빠뜨리면 컬렉션을 찾지 못한다.
ZooKeeper 자체가 살아 있는지 본다.
echo srvr | nc zk01 2181
echo ruok | nc zk01 2181
sudo systemctl status zookeeper
Atlas 서버에서 각 ZooKeeper 노드로 접근이 되는지 확인한다.
for h in zk01 zk02 zk03; do nc -vz "$h" 2181; done
znode 상태는 CLI 로 본다.
zkCli.sh -server zk01:2181
ls /
ls /solr
ls /apache_atlas
로그에서 실제 예외를 확인한다. Connection refused 는 서비스나 포트 문제, Session expired 는 GC 지연이나 네트워크 불안정, KeeperErrorCode = NoNode 는 경로 설정 오류를 가리킨다.
tail -200 /var/log/atlas/application.log | grep -i -A5 zookeeper
tail -100 /var/log/zookeeper/zookeeper.log
쿼럼 주소를 한 대만 적어 두고 그 노드가 내려간 경우가 흔하다. 모든 노드를 쉼표로 나열한다.
atlas.kafka.zookeeper.connect=zk01:2181,zk02:2181,zk03:2181
atlas.graph.index.search.solr.zookeeper-url=zk01:2181,zk02:2181,zk03:2181/solr
세션 타임아웃이 짧아 GC 중에 끊기는 경우도 있다. 값을 늘리기 전에 GC 로그를 먼저 확인한다.
atlas.kafka.zookeeper.session.timeout.ms=60000
atlas.kafka.zookeeper.connection.timeout.ms=30000
Kerberos 환경에서는 ZooKeeper ACL 때문에 다른 주체가 만든 znode 에 접근하지 못할 수 있다. getAcl 로 소유자를 확인한다.
zkCli.sh -server zk01:2181 getAcl /apache_atlas
rm -rf /var/lib/zookeeper/* 로 ZooKeeper 데이터를 밀거나 deleteall /apache_atlas 로 znode 를 지우는 것은 Atlas 만의 문제가 아니라 같은 ZooKeeper 를 쓰는 HBase · Kafka · HDFS HA 전체에 영향을 준다. 클러스터 전체를 멈추는 사고로 이어진다. 초기화가 필요하다면 영향 범위를 확인하고 서비스별 절차를 따른다.