本文共 2017 字,大约阅读时间需要 6 分钟。
在搭建Elasticsearch集群并启用安全功能后,可能会遇到一些常见问题,特别是在访问Elasticsearch Head插件时出现401 unauthorized错误。以下是解决这些问题的详细指南。
首先,确保所有ES节点之间的通信是安全的。通过以下步骤生成所需的证书:
cd /usr/share/elasticsearchbin/elasticsearch-certutil cert -out /etc/elasticsearch/elastic-certificates.p12 -pass ""
/etc/elasticsearch/目录,并设置适当的权限:chmod 644 elastic-certificates.p12
编辑每个ES节点的配置文件/etc/elasticsearch/elasticsearch.yml,取消注释以下内容:
xpack.security.enabled: truexpack.security.transport.ssl.enabled: truexpack.security.transport.ssl.verification_mode: certificatexpack.security.transport.ssl.keystore.path: /etc/elasticsearch/elastic-certificates.p12xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/elastic-certificates.p12
确保所有节点都应用了上述配置,并重启ES服务。
使用bin/elasticsearch-setup-passwords interactive命令为ES用户设置密码,建议统一设置为elkstack123456,如:
bin/elasticsearch-setup-passwords interactive
输入y后,依次设置各用户密码,完成后验证集群访问是否正常。
在Logstash管道中添加ES输出配置,确保使用正确的账号和密码:
output { if [fields][log_source] == 'messages' { elasticsearch { hosts => ["http://192.168.80.104:9200", "http://192.168.80.105:9200","http://192.168.80.106:9200"] index => "messages-%{+YYYY.MM.dd}" user => "elastic" password => "elkstack123456" } } if [fields][log_source] == "secure" { elasticsearch { hosts => ["http://192.168.80.104:9200", "http://192.168.80.105:9200","http://192.168.80.106:9200"] index => "secure-%{+YYYY.MM.dd}" user => "elastic" password => "elkstack123456" } }} 如果Elasticsearch Head插件无法访问安全集群,可能是CORS设置不正确。修改每个ES节点的配置文件:
http.cors.allow-headers: Authorization, content-type
重启ES服务后,尝试访问控制台,使用elastic账号和密码登录。如果问题依旧,检查防火墙规则或ES节点间通信状态。
在Kibana的配置文件kibana.yml中添加:
elasticsearch.username: "elkstack"elasticsearch.password: "elkstack123456"
重启Kibana后,使用设置的账号密码登录。通过Management下的Kibana安全设置,创建多个用户和角色,实现细粒度的权限控制。
通过以上步骤,您可以顺利配置安全认证,并解决相关访问问题。确保所有ES节点配置一致,通信无阻碍,才能实现稳定、高效的数据管理。
转载地址:http://smefk.baihongyu.com/