环境:es6.5.4、centos7.5
1.备份数据(单机es)
mkdir -p /opt/backup/elasticsearch/
chmod 777 /opt/backup/elasticsearch/
1.1 创建备份仓库
curl -XPOST ‘127.0.0.1:9200/_snapshot/my_backup’ -H ‘Content-Type: application/json’ -d ‘{ “type”: “fs”, “settings”: { “location”: “/opt/backup/elasticsearch”, “compress”: true, “chunk_size”: “1g”, “max_snapshot_bytes_per_sec”: “50m”, “max_restore_bytes_per_sec”: “50m”}}’
查看仓库:curl ‘127.0.0.1:9200/_snapshot/my_backup’
1.2 备份脚本
$ cat /opt/scripts/elasticsearch/es_bak_del.sh
#!/bin/bash
## define vars
es_url="http://127.0.0.1:9200"
es_bak_repo="my_backup"
#es_user="elastic"
#es_pass="123456"
es_bak_date=`date +'%Y-%m-%d-%H'`
echo -e "\n =========== $es_bak_date ============"
## bak
#curl -u ${es_user}:${es_pass} -XPUT "${es_url}/_snapshot/${es_bak_repo}/es_bak_${es_bak_date}?wait_for_completion=true"
curl -XPUT "${es_url}/_snapshot/${es_bak_repo}/es_bak_${es_bak_date}?wait_for_completion=true"
echo "es bak success"
2.数据还原(单机es)
目的:将某一个备份的文件还原到127.0.0.1
$ cat es_restore.sh
#!/bin/bash
set -e
## define vars
es_url="http://127.0.0.1:9200"
es_bak_repo="my_backup"
es_restore_snapshots="es_bak_2021-05-07-16"
#es_user="elastic"
#es_pass="123456"
##(1)获取备份文件中存在的索引
es_get_snapshots_index=`curl -s -XGET "${es_url}/_snapshot/${es_bak_repo}/${es_restore_snapshots}" | python -m json.tool| python -c 'import json; import sys; input = sys.stdin.read(); result=json.loads(input); indices = result["snapshots"][0]["indices"]; sys.stdout.write(" ".join([i for i in indices]));'`
##(2)将备份文件中存在的索引删除 然后恢复
for index in ${es_get_snapshots_index}; do
if [ ${index} == ".security-6" ]; then # 如果索引为 .security-6 则不能删除
continue
fi
# 判断索引是否存在
res=`curl -s -XGET "${es_url}/${index}"| grep "error" |grep 404|awk '{print $1}'`
if [ -z ${res} ] ; then #如果存在则删除索引
curl -s -XDELETE ${es_url}/${index}
echo -e "\ndelete index data : ${index} "
fi
#数据恢复
echo -e "data restore : ${index}\n"
curl -s -XPOST "${es_url}/_snapshot/${es_bak_repo}/${es_restore_snapshots}/_restore" -H 'Content-Type: application/json' -d '{"indices": "'${index}'"}'
done
查看es集群健康:curl localhost:9200/_cluster/health?pretty
查看es分片: curl -XGET “http://localhost:9200/_cat/indices?v”
es集群版备份与还原:https://blog.csdn.net/u014431852/article/details/52905821
Elastic Stack=ElasticSearch + Logstash + Kibana + Beats + ....
Elastic Stack是由三/四个组件构成,其中Elasticsearch是数据库, kibana是对elasticsearch进
行可视化的软件, beats则是收集各日志的工具,logstash和beats类似;
在2019年6月之前,即6.2版本及6.2之前的版本,xpack需要单独安装,并且是收费的,但可以申请一年的license,而从6.3到6.7版本默认包含了xpack,但基础安全是收费内容,自6.8版本开始, xpack的基础安全是免费的,但核心功能是收费的,比如第三方告警、watcher, reporting等。
1. 在6.2.2之前xpack是收费插件,不内置,但大部分项目都是安装破解,因为本身就是开源产品,也不需要官方support,所以国内是正常的
2. 在6.2.2到6.8之间,xpack内置,同时免费使用一个月,使用后不可再续费,只能采购
3. 在6.8到7.5之间,xpack内置,同时对于安全功能免费提供
如果项目中用到了6.2.2--6.8的版本,解决方法:
1、升级到6.8,那么就可以直接加密了
2. 将xpack的lic校验代码进行修改,xpack开源后,这是当下国内普遍做法
3. 利用nginx的基础http认证,加个密码
curl localhost:9200/_cluster/health?pretty
查看es版本号:curl -XGET localhost:9200
查看es分片: curl -XGET "http://localhost:9200/_cat/indices?v"
先kill掉kibana
确认权限是否正确
首选需要查看一下当前master是谁
[root@k8s-master01 ~]# curl 1.1.1.1:9200/_cat/master
M6Uqfm0tQOOSu6rtTegEAw 1.1.1.1 1.1.1.1 elk02
curl -H "Content-Type:application/json" -XPOST http://1.1.1.1:9200/_xpack/license/start_trial?acknowledge=true
vim /cloud/elasticsearch-6.5.4/config/elasticsearch.yml 各es组件机末端加上如下语句
xpack.security.enabled: true
重启各es
systemctl restart elasticsearch.service
在cloud00切换到esuser用户操作,设置es等账密,账密复杂度自行设定,设定好后会自动同步到其他节点(cloud00不行就换coud01)
/cloud/elasticsearch-6.5.4/bin/elasticsearch-setup-passwords interactive
设置完密码后查看license过期时间
curl -u elastic:123456 -XGET 'http://127.0.0.1:9200/_xpack/license'
不使用账密访问es会报错
curl localhost:9200/_cluster/health?pretty
使用账密后成功访问
curl -u elastic:123456 localhost:9200/_cluster/health?pretty
vim /cloud/kibana-6.5.4-linux-x86_64/config/kibana.yml 末端加入如下语句
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
测试认证,浏览器访问kibana要求使用账密
http://1.1.1.1:5601
curl -u elastic -XGET 'localhost:9200/_cat/allocation?v'
shards disk.indices disk.used disk.avail disk.total disk.percent host ip node
4 8.2mb 14gb 3.2gb 17.2gb 81 node2 192.168.113.102 data-1
4 5.7mb 9.9gb 7.3gb 17.2gb 57 node3 192.168.113.103 data-2
查看es版本号:curl -XGET localhost:9200
查看es集群健康:curl localhost:9200/_cluster/health?pretty
查看es分片: curl -XGET "http://localhost:9200/_cat/indices?v"
#使用通配符,删除所有的索引
curl -XDELETE http://localhost:9200/_all
或 curl -XDELETE http://localhost:9200/*
简单的es分词测试
curl -XGET "http://ip:9200/_analyze" -H 'Content-Type:application/json' -d '
{
"analyzer":"hanlp_index",
"text":"张柏芝士蛋糕店"
}'
该请求结果应包含“芝士蛋糕”