Elasticsearch 에서 보안 관련 기능을 사용하려면 X Pack Security를 활성화 해야합니다.
docker-compose.yml
에서는 xpack.security.enabled=true
로 X Pack Security를 활성화 할 수 있는데요, 활성화 후 컨테이너를 여러 차례 재기동하게 되면 아래와 같은 오류가 발생하고 Elasticsearch 노드가 종료되는 현상이 발생합니다.
ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: Transport SSL must be enabled if security is enabled on a [basic] license. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security by setting [xpack.security.enabled] to [false]
ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/es-data-collector-cluster.log
{"type": "server", "timestamp": "2022-03-08T00:26:22,313Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "es-data-collector-cluster", "node.name": "es01", "message": "stopping ..." }
{"type": "server", "timestamp": "2022-03-08T00:26:22,335Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "es-data-collector-cluster", "node.name": "es01", "message": "stopped" }
{"type": "server", "timestamp": "2022-03-08T00:26:22,335Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "es-data-collector-cluster", "node.name": "es01", "message": "closing ..." }
{"type": "server", "timestamp": "2022-03-08T00:26:22,355Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "es-data-collector-cluster", "node.name": "es01", "message": "closed" }
이번 포스팅에서는 이 오류가 발생하는 이유와 해결 방법에 대해 다뤄보도록 하겠습니다.
원인
클러스터가 Security가 활성화되어 프로덕션 모드로 실행되면 Transport SSL이 반드시 활성화 되어야합니다. 반면에 30 days trial 라이선스로 실행된다면 TLS 설정은 필수가 아닙니다. 때문에 trial 라이선스가 만료될 경우 Transport SSL 설정이 요구되어 해당 오류가 발생한 것입니다.
해결 방법
오류 메시지대로 Transport SSL 설정을 하고, Elasticsearch 노드간 통신에 사용할 인증서를 생성해 배포해주면됩니다.
Transport SSL 설정
# X-PACK security 활성화
- xpack.security.enabled=true
- xpack.security.transport.ssl.enabled=true
- xpack.security.transport.ssl.verification_mode=certificate
- xpack.security.transport.ssl.client_authentication=required
- xpack.security.transport.ssl.keystore.path=certs/elastic-certificates.p12
- xpack.security.transport.ssl.truststore.path=certs/elastic-certificates.p12
인증서 생성
- Elasticsearch 컨테이너를 구동하고 접속합니다.
docker exec -it es01 /bin/bash
- CA 를 생성합니다.
./bin/elasticsearch-certutil ca
- Certificate 및 Private Key 를 생성합니다.
./bin/elasticsearch-certutil cert -- ca elastic-stack-ca.p12
elastic-certificates.p12
파일을 복사해 다른 노드에도 배포합니다.
References
반응형
'📦 ETC' 카테고리의 다른 글
[Elasticsearch] 마스터노드 선출 실패 오류 (0) | 2022.03.17 |
---|---|
[Elasticsearch] vm.max_map_count 변경 (0) | 2022.03.14 |
[Jenkins Blue Ocean] 젠킨스가 어려운 개발자를 위해 (0) | 2021.08.28 |
[Swagger] Swagger를 이용해 API 문서를 자동으로 만들어보자 (0) | 2020.11.05 |
[Swagger] API 명세도구를 사용해보자 (0) | 2020.10.31 |