DevOps/Elasticsearch
[Elasticsearch] received plaintext http traffic on an https channel, closing connection Netty4HttpChannel 해결 방법
기록하는 백앤드개발자
2024. 8. 4. 10:10
반응형
ㅁ 들어가며
ㅇ [Elasticsearch] Docker로 Elasticsearch 설치 및 테스트하기을 하면서 발생한 https 에러를 해결하는 과정을 정리하였다.
ㅇ 이 해결방법은 로컬 개발환경에서 테스트를 위한 해결방법이다. 그래서 운영환경에서는 인증서 설치 과정을 수행해야 한다.
ㅁ 에러 상황
# 통신 수행
$ curl -X GET "localhost:9200/?pretty"
# 에러 내용
received plaintext http traffic on an https channel, closing connection Netty4HttpChannel
# row logs
{"@timestamp":"2024-07-28T21:48:38.081Z", "log.level": "WARN", "message":"received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/172.17.0.5:9200, remoteAddress=/192.168.65.1:41538}", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"elasticsearch[2ca4c63624e0][transport_worker][T#8]","log.logger":"org.elasticsearch.http.netty4.Netty4HttpServerTransport","elasticsearch.cluster.uuid":"DDQp4X9eR8yEQPDkdORyoA","elasticsearch.node.id":"WPoCqk7RStCRbpVOzaCwaQ","elasticsearch.node.name":"2ca4c63624e0","elasticsearch.cluster.name":"docker-cluster"}
ㅇ https에 대한 보안 설정으로 인해 에러가 발생하였다.
ㅁ 해결방법
# 설정파일 확인
/config/elasticsearch.yml
# 보안 설정 변경
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
xpack.security.http.ssl: enabled: false
xpack.security.transport.ssl: enabled: false
ㅇ elasticsearch의 설정에서 security 설정을 해제하면 된다.
ㅇ 하지만 편집에 문제가 발생했다.
ㅇ Docker 컨테이너에는 VI가 설치되어 있지 않았다.
#로컬로 설정파일 복사
$ docker cp es01:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch.yml ✔ 8811 07:02:36
Successfully copied 2.56kB to /Users/peterseo/test/es/elasticsearch.yml
# elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
#
# The following settings, TLS certificates, and keys have been automatically
# generated to configure Elasticsearch security features on 26-07-2024 06:09:26
#
# --------------------------------------------------------------------------------
# Enable security features
xpack.security.enabled: true <==== 여기 수정
xpack.security.enrollment.enabled: true <==== 여기 수정
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
enabled: true <==== 여기 수정
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
enabled: true <==== 여기 수정
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
#----------------------- END SECURITY AUTO CONFIGURATION -------------------------
ㅇ 로컬에 복사된 설정파일을 수정하였다.
# 수정된 설정파일을 다시 복사한다.
$ docker cp elasticsearch.yml es01:/usr/share/elasticsearch/config/elasticsearch.yml ✔ 8813 07:06:18
Successfully copied 2.56kB to es01:/usr/share/elasticsearch/config/elasticsearch.yml
# 재기동
$ docker restart es01
es01
ㅇ 다시 컨테이너 안으로 복사를 하고 컨테이너를 재기동하였다.
ㅁ 정상 확인
$ curl -X GET "localhost:9200/?pretty"
{
"name" : "2ca4c63624e0",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "DDQp4X9eR8yEQPDkdORyoA",
"version" : {
"number" : "8.9.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "8aa461beb06aa0417a231c345a1b8c38fb498a0d",
"build_date" : "2023-07-19T14:43:58.555259655Z",
"build_snapshot" : false,
"lucene_version" : "9.7.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
ㅁ 함께 보면 좋은 사이트
반응형