elasticsearch的备份与数据还原以及开启x-pack账密认证

环境: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

开启x-pack认证,设置账密

	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认证,加个密码

1、检测es集群是否正常,默认无账密

curl localhost:9200/_cluster/health?pretty

查看es版本号:curl -XGET localhost:9200
查看es分片: curl -XGET "http://localhost:9200/_cat/indices?v"

2、elasticsearch-6.5.4默认内置了x-pack,开启认证功能即可

先kill掉kibana
确认权限是否正确
首选需要查看一下当前master是谁

[root@k8s-master01 ~]# curl 1.1.1.1:9200/_cat/master
M6Uqfm0tQOOSu6rtTegEAw 1.1.1.1 1.1.1.1 elk02

在Master启动trial license

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'	  

3、测试认证

不使用账密访问es会报错

curl localhost:9200/_cluster/health?pretty

使用账密后成功访问

curl -u elastic:123456 localhost:9200/_cluster/health?pretty

4、kibana配置文件设置访问es的账密

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

查看每个数据节点上的分片数(shards),以及每个数据节点磁盘剩余

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":"张柏芝士蛋糕店"
}'
该请求结果应包含“芝士蛋糕”

你可能感兴趣的:(elasticsearch)