當(dāng)前線上的ES集群都是搭建在阿里云的ECS上,考慮到OSS的價(jià)格相對(duì)擴(kuò)展云盤較低,所以就把不常用的數(shù)據(jù)放到oss上備份起來。
配置安裝 oss
首先將阿里云oss作為一個(gè)共享文件系統(tǒng)掛載到每個(gè)節(jié)點(diǎn)。這里假設(shè)已經(jīng)在oss上開好了一個(gè)bucket,名字 es-snapshot-bigdata。
# 下載ossfs工具
wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32196/cn_zh/1527232195135/ossfs_1.80.5_centos7.0_x86_64.rpm
# 本地安裝
yum localinstall ossfs_1.80.5_centos7.0_x86_64.rpm -y
# 配置訪問密碼,access-key-id和secret去管理控制臺(tái)查找或者生成
echo es-snapshot-bigdata:your-access-key-id:your-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
# 掛載共享目錄
mkdir /mnt/backups
ossfs es-snapshot-bigdata /mnt/backups -ourl=oss-cn-hangzhou-internal.aliyuncs.com -ouid=996 -ogid=994 -o allow_other
上面最關(guān)鍵的是最后一個(gè)命令,其中ouid和ogid通過id elasticsearch來獲取,這里elasticsearch是es集群運(yùn)行的用戶名,不同節(jié)點(diǎn)這兩個(gè)值可能不一樣,要確認(rèn)好。一定要添加allow_other選項(xiàng),否則后續(xù)無法順利備份。
將上述命令保存到一個(gè)sh文件中,chmod +x 加上執(zhí)行權(quán)限后,在ES的所有節(jié)點(diǎn)上執(zhí)行一遍。再強(qiáng)調(diào)一下,執(zhí)行之前要講uid和gid修改為當(dāng)前節(jié)點(diǎn)的值。
配置es集群
如果之前沒有配置es的快照功能,那么必須要修改ES的配置文件,重啟整個(gè)ES集群,想不重啟備份數(shù)據(jù),不存在的。
修改 /etc/elasticsearch/elasticsearch.yml 文件,添加配置:
path.repo: ["/mnt/backups”]
重啟整個(gè)es集群。如果數(shù)據(jù)量很大,那么建議滾動(dòng)重啟,這樣安全性和穩(wěn)定性可以能夠保障,而且新的數(shù)據(jù)可以繼續(xù)寫入。

重啟集群前先使用cerebro 把cluster.routing.allocation.enable設(shè)置為none,或者基于kibana的dev tools也行。等所有的節(jié)點(diǎn)都滾動(dòng)重啟完成,狀態(tài)變綠之后再設(shè)置為all。
重啟完成后,使用kibana的dev控制臺(tái)創(chuàng)建一個(gè)es快照倉庫。
PUT _snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "my_backup",
"compress": true
}
}
現(xiàn)在就可以講一些數(shù)據(jù)備份到my_backup下面了。
備份數(shù)據(jù)
在kibana控制臺(tái)通過http的方式備份和刪除數(shù)據(jù)就可以了。之前es中的index都是按照天來生成的,由于數(shù)據(jù)太大,這里每次備份一個(gè)月。
# 備份2016年12月份的數(shù)據(jù)
PUT _snapshot/my_backup/snapshot_your_index_prefix_2016_12
{
"indices": "your_index_prefix-2016.12.*"
}
# 獲取備份的狀態(tài),如果成功會(huì)返回success
GET /_snapshot/my_backup/your_index_prefix_2016_12/_status
# 刪除已經(jīng)備份成功的數(shù)據(jù)
DELETE /your_index_prefix-2016.12.*
總結(jié)
斷斷續(xù)續(xù)備份了一年的數(shù)據(jù),期間還是非常穩(wěn)定的。整個(gè)過程中最開始在ossfs掛載時(shí)由于共享文件系統(tǒng)的權(quán)限問題搗鼓了半天,后來調(diào)通之后就一路順利了。
這里沒有用阿里云提供的es插件,是想著一切過程都可控。
參考
https://help.aliyun.com/document_detail/32196.html