ES配置密码、版本升级、数据迁移
文章目录
前言
- es配置密码
- es的版本切换和数据迁移
- 本文环境说明:基于 docker
在6.8之前免费版本并不包含安全认证功能,6.8及以后免费开放
一、docker ES 数据迁移
1.1、将docker的es容器数据拷贝出来
如图
#准备工作 先看硬盘空间
df -h
#1、查看运行的容器
docker ps
#2、 进入容器。 elasticsearch6.8容器名称
docker exec -it elasticsearch6.8 /bin/bash
#3、切换到data目录
cd data
#4、查看data的路径
pwd
#5、看文件夹大小。 du -sh 文件夹
du -sh data
#6、退出容器
exit
#7、从docker 拷贝到外面。 说明: docker cp -a 容器名称:要拷贝的文件夹 目标文件夹
docker cp -a elasticsearch6.8:/usr/share/elasticsearch/data/nodes /home/mytemp/data
#8、外面的文件拷贝进docker 说明:docker cp -a 要拷贝的文件夹 容器名称:要拷贝的位置
docker cp -a /home/mytemp/data/nodes elasticsearch6.8:/usr/share/elasticsearch/data
二、配置密码
版本需要在6.8 以后才能免费使用
1.1、ES 6.8.8版本配置密码
#准备工作 先看内存
free -h
# 1、拉取镜像
sudo docker pull elasticsearch:6.8.8
#2、创建文件夹,用于数据挂载
sudo mkdir -p /data/mydata/elasticsearch6/config
sudo mkdir -p /data/mydata/elasticsearch6/data
#权限
chmod -R 777 /data/mydata/elasticsearch6
# 3、创建运行容器。 -e指定额外参数 -v 指定数据挂载 -d 指定镜像和版本
docker run --name elasticsearch6.8 -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms128m -Xmx2048m" \
-v /data/mydata/elasticsearch6/config/elasticsearch.yml:/usr/share/elasticsearch6/config/elasticsearch.yml \
-v /data/mydata/elasticsearch6/data:/usr/share/elasticsearch6/data \
-v /data/mydata/elasticsearch6/plugins:/usr/share/elasticsearch6/plugins \
-d elasticsearch:6.8.8
# 4、查看运行的容器
docker ps
# 5、进入容器
docker exec -it elasticsearch6.8 /bin/bash
#6、开启密码模式 编码配置文件
vi /config/elasticsearch.yml
#加入如下内容
xpack.security.enabled: true
#7、退出容器
exit
#8、重启
docker restart elasticsearch6.8
#9、查看是否运行
docker ps
#10、进入容器
docker exec -it elasticsearch6.8 /bin/bash
#11、进入bin目录
cd /bin
#12、生成密码 运行如下命令。推荐手动模式
01、自动生成密码 elasticsearch-setup-passwords auto
02、手动设置密码 elasticsearch-setup-passwords interactive
#13、退出容器
exit
#14、重启
docker restart elasticsearch6.8
#15、浏览器访问。 http://用户:密码@域名:端口
http://elastic:123456@127.0.0.1:9200
三、ES 配置ip白名单
es自带的需要收费,不推荐使用
方案:
使用nignx 转发到 es服务
1.1、使用xpack提供的HTTP Filter功能实现IP白名单
在elasticsearch.yml配置。不推荐-原因收费
xpack.security.http.filter.enabled: true
xpack.security.http.filter.allow: "172.31.6.21"
xpack.security.http.filter.deny: "172.31.6.0/24"
xpack.security.http.filter.allow: [ "172.31.6.20", "172.31.6.21", "172.31.6.22"]
xpack.security.http.filter.deny: _all
xpack.security.transport.filter.enabled: true
xpack.security.transport.filter.allow: [ "172.31.6.20", "172.31.6.21", "172.31.6.22"]
xpack.security.transport.filter.deny: _all
1.2、nignx 实现(推荐)
示例代码:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 19200;
server_name localhost;
# 白名单及代理转发
allow 172.31.6.22; #白名单
allow 192.168.0.0/24; #白名单
allow 127.0.0.1; #白名单
deny all; #拒绝其他访问
location / {
# Elasticsearch服务代理
# 这边有密码的话需要带上
proxy_pass http://172.31.6.21:9200;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 15601;
server_name localhost;
# 白名单及代理转发
allow 172.31.6.22; #白名单
allow 192.168.0.0/24; #白名单
allow 127.0.0.1; #白名单
deny all; #拒绝其他访问
location / {
# Kibana服务代理
proxy_pass http://172.31.6.21:5601;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
注明:docker镜像迁移另外写。看系类文章