Elasticsearch 8.0报错:received plaintext http traffic on an https channel, closing connection

ES配置启动成功了,就是客户端访问服务端出现这个错误

原因:是因为ES8默认开启了 SSL 认证。

因为 SSL 需要使用https方式请求,所以有以下两种解决办法:

1、使用 https 发送请求,即:把 http 请求改成 https 即可。

2、修改配置文件,需要修改配置文件则继续往下看。

修改elasticsearch.yml配置文件

xpack.security.enabled设置为false

xpack.security.enabled: false

修改完毕,重启,解决问题!!!

更专业的做法还是推荐开启 SSL(生产环境必须配置 SSL)!

{"@timestamp":"2025-03-31T13:45:02.132Z", "log.level": "WARN", "message":"This node is a fully-formed single-node cluster with cluster UUID [2TJKMZR1TNKLU5kjkpihFA], but it is configured as if to discover other nodes and form a multi-node cluster via the [discovery.seed_hosts=[elasticsearch-master-headless]] setting. Fully-formed clusters do not attempt to discover other nodes, and nodes with different cluster UUIDs cannot belong to the same cluster. The cluster UUID persists across restarts and can only be changed by deleting the contents of the node's data path(s). Remove the discovery configuration to suppress this message.", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"elasticsearch[elasticsearch-master-0][scheduler][T#1]","log.logger":"org.elasticsearch.cluster.coordination.Coordinator","elasticsearch.cluster.uuid":"2TJKMZR1TNKLU5kjkpihFA","elasticsearch.node.id":"mtYdBdhQRLW1Fe7ebdHtrA","elasticsearch.node.name":"elasticsearch-master-0","elasticsearch.cluster.name":"elasticsearch"} {"@timestamp":"2025-03-31T13:45:03.995Z", "log.level": "WARN", "message":"received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/127.0.0.1:9200, remoteAddress=/127.0.0.1:48954}", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"elasticsearch[elasticsearch-master-0][transport_worker][T#1]","log.logger":"org.elasticsearch.xpack.security.transport.netty4.SecurityNetty4HttpServerTransport","elasticsearch.cluster.uuid":"2TJKMZR1TNKLU5kjkpihFA","elasticsearch.node.id":"mtYdBdhQRLW1Fe7ebdHtrA","elasticsearch.node.name":"elasticsearch-master-0","elasticsearch.cluster.name":"elasticsearch"} {"@timestamp":"2025-03-31T13:45:11.239Z", "log.level": "WARN", "message":"received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/127.0.0.1:9200, remoteAddress=/127.0.0.1:48958}", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"elasticsearch[elasticsearch-master-0][transport_worker][T#1]","log.logger":"org.elasticsearch.xpack.security.transport.netty4.SecurityNetty4HttpServerTransport","elasticsearch.cluster.uuid":"2TJKMZR1TNKLU5kjkpihFA","elasticsearch.node.id":"mtYdBdhQRLW1Fe7ebdHtrA","elasticsearch.node.name":"elasticsearch-master-0","elasticsearch.cluster.name":"elasticsearch"}
最新发布
04-01
<think>好的,我现在需要处理用户提供的三个Elasticsearch日志条目,并解释其中存在的问题和解决方法。首先,我要逐一分析每条日志的内容,理解它们的警告信息,然后找出根本原因,最后给出解决建议。 首先看第一条日志。消息提到节点已经是一个完全形成的单节点集群,但配置了发现其他节点以形成多节点集群的设置。这里的关键点在于,当Elasticsearch节点已经形成集群(有持久化的UUID),它不会再去通过discovery.seed_hosts寻找其他节点。如果此时仍然配置了discovery.seed_hosts,就会出现冲突,导致警告。用户需要检查配置文件,确认是否确实需要单节点模式,如果是,应移除discovery相关的设置。 接下来第二条和第三条日志都提到在HTTPS通道上接收到了明文HTTP流量,导致连接关闭。这说明客户端试图通过HTTP(非加密)访问ElasticsearchHTTPS端口(通常是9200)。可能的原因是客户端配置错误,比如使用http://而不是https://,或者Elasticsearch的SSL/TLS配置有问题,未能正确强制使用HTTPS。需要检查客户端的连接字符串和Elasticsearch的安全配置,确保一致使用HTTPS,并正确设置证书。 在处理这些日志时,我需要确保解决方案的步骤清晰,用户能够逐步操作。例如,对于第一个问题,修改elasticsearch.yml中的discovery配置,并重启服务。对于第二个问题,检查客户端连接方式和Elasticsearch的SSL设置,可能需要更新配置或启用安全功能。 还需要注意用户的环境,比如是否使用X-Pack安全功能,是否在Kubernetes中运行(根据节点名称elasticsearch-master-0推测可能使用了StatefulSet),这可能会影响配置文件的路径或管理方式。此外,日志中的时间戳是2025年,可能是测试或未来问题,但处理方式应相同。 最后,综合所有信息,整理出结构化的回答,分点说明每个警告的原因和解决方法,确保用户能够理解并实施。同时,提醒用户修改配置前备份,避免数据丢失,特别是在处理集群设置时,可能需要考虑数据持久化和UUID的影响。</think>以下是针对日志中两个主要警告的分析和解决方案: ### 一、集群发现配置冲突警告 $$...$$ (分析第一条日志) **现象**:节点已形成独立集群(UUID=`2TJKMZR1TNKLU5kjkpihFA`),但配置了多节点发现机制 **根本原因**:elasticsearch.yml 中存在矛盾配置: ```yaml discovery.seed_hosts: [elasticsearch-master-headless] # 多节点发现机制 cluster.initial_master_nodes: [...] # 单节点初始化配置 ``` **解决方案**: 1. 进入容器配置文件目录:`/usr/share/elasticsearch/config/elasticsearch.yml` 2. 注释掉多节点相关配置: ```yaml # discovery.seed_hosts: [elasticsearch-master-headless] # cluster.initial_master_nodes: [elasticsearch-master-0] ``` 3. 重启节点:`kubectl delete pod elasticsearch-master-0`(适用于K8s环境) ### 二、HTTPS通道明文通信警告 $$...$$ (分析第二、三条日志) **现象**:在9200端口(默认HTTPS)收到明文HTTP请求 **根本原因**: - 客户端使用`http://`协议访问 - X-Pack安全模块未正确配置SSL/TLS **解决方案**: 1. **客户端修改**:所有请求改用`https://elasticsearch-master-0:9200` 2. **服务端强制HTTPS**(elasticsearch.yml): ```yaml xpack.security.http.ssl: enabled: true keystore.path: certs/elastic-certificates.p12 ``` 3. 检查证书有效性:`openssl s_client -connect elasticsearch-master-0:9200` ### 配置验证流程图 ```mermaid graph TD A[检查集群状态] -->|curl -k https://localhost:9200/_cluster/health| B{状态是否为green} B -->|是| C[完成] B -->|否| D[检查discovery配置] D --> E[验证SSL证书配置] E --> F[检查客户端连接协议] ``` **注意**:修改配置前建议备份数据目录(默认`/usr/share/elasticsearch/data`),集群UUID存储在`/data/nodes/0/_state/`中,删除该目录会重置集群身份。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值