背景
玩了下 Elasticsearch 的认证,启动 ES 并添加认证后,看到索引列表额外多了一个 .security-6
。以为是没用的,手欠就给删掉了,然后 Elasticsearch 就访问不了了。
只好再重新部署,再看索引内容,发现这里面存储的就是添加的各种帐号的密码,本文纪录 Elasticsearch6.x 版本的部署及认证添加流程。
下载部署包
安装 Elasticsearch 之前,需要根据本机的 JDK 的版本,从 elastic 的官网 获取最新版本的 Elasticsearch.
我这里还是选择之前下载的版本 6.8.0,直接用这个版本进行部署的。
创建启动帐号
Linux 系统下,Elasticsearch 不能用 root 启动,所以需要单独为它创建启动帐号。
第一步,创建命令:
useradd -m elastic
passwd elastic
第二步,上传安装包,并修改权属关系为上面的帐号,并切换到该帐号:
chown -R elastic:elastic elasticsearch-6.8.0.tar.gz
mv elasticsearch-6.8.0.tar.gz elastic
cd /home/elastic
su elastic
第三步,解压,并修改配置文件:
tar -xvf elasticsearch-6.8.0.tar.gz
cd elasticsearch-6.8.0/config
vim elasticsearch.yml
编辑网络地址、http 跨域、启动认证,修改 network.host
主机地址为当前主机,并在结尾添加下面配置:
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
http.cors.enabled: true 这个跨域配置允许 用 Es-header 插件访问 ES 服务,xpack 配置可以启动安全认证。
执行启动脚本
进入 elasticsearch-6.8.0/bin 目录启动:
./elasticsearch -d
首次启动失败,报异常:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法,修改 sysctl.conf 文件,在结尾添加配置:
vm.max_map_count = 655360
vm.swappiness=1
保存后执行 sysctl -p
生效。再次执行后,jps 查看进程:
说明 Elasticsearch 启动成功。
执行认证命令
处于安全考虑,内网环境下为 Elasticsearch 组件添加帐号密码认证,在Elasticsearch 启动成功后,继续执行脚本:
./elasticsearch-setup-passwords interactive
输入 y 后,一路为各种 ES 帐号创建强度比较高的密码:
.security-6索引作用
Elasticsearch 添加认证后,会创建一个 .security-6
索引,前面添加的各种帐号的密码就存储在这个索引里面:
细看这个索引后,就知道为什么不能删除它了!