记一次生产环境下集群版本升级以及翻车事故处理;
目标:将集群的版本从6.4升级到7.1
因为我们采用的selks系统,当时它集成的elk版本最高是6.7,无法直接升级到7.1版本,况且是在生产环境下,还有生产数据,如果升级造成数据丢失,我们也是无法承受的。
我们为什么非要升级到7.1呢,主要因为,当前的版本ES官网上说存在很多bug,升级到7.1后,不仅修复了很多Bug,而且Es对内存的管理更加高效,集群运行也更加稳定,还有就是,升级到7.1后kibana支持汉化,对我们的数据查询人员来说比较友好,更容易上手,也能体验kibana最新图形化展示功能。
具体实施思路:
经过权衡利弊,我们决定采用滚动升级(rolling upgrades)办法,而不是Full cluster restart的方法,现将集群通过selks系统重装升级到6.7,(保证所有版本一致),再通过离线方式下载elk包,手动升级到6.8,最后在手动升级到7.1版本最终OK。
具体操作步骤:
1、禁止集群分片分配
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
2、将数据进行刷新落盘
POST _flush/synced
3、将要升级的节点进行下线
systemctl stop