2.4 第四:查看分片未分配的原因。 排查方法:
GET _cluster/allocation/explain
这时候,客户反馈:“我设置了节点踢出集群的设置”。
我的第一反应:“和这个有关系,为什么要设置?!”
且 explain 执行结果验证了刚才的推断:
“cannot allocate because allocation is not permitted to any of the nodes”。
3、我的几点观察和思考 3.1 关于 head 插件 和 Kibana dev tools 的选型 head 插件在集群节点、分片可视化方面做得的确不错。
如果在 1.X版本、2.X版本,由于当时 Kibana 功能还不尽完善,甚至还没有被 Elastic 官方收购,选型 head 插件做问题排查无可厚非。
但是,5.X、6.X、7.X 后,Kibana 已经有了突飞猛进的发展,无论是 dev tools 的命令行提示功能,还是多维度的可视化监控。
head 插件做命令行的调试的确稍显笨拙,就类似早期的C、C++编译器 VC6.0一样。
而 Kibana dev tools 类似 VS2020+版本或者开源的 Codeblocks,用过你会发现“如丝般顺滑”般的效率提升。
3.2 关于优化参数配置 我自己在管理集群、维护集群的阶段,也是看到网上有好的优化参数、新版本新特性参数都会在集群中试验,对比看看有没有功能提升或者性能改善。
但,一定得了解参数的确切含义、函数的用途、加与不加对集群或分片等层面的影响;明确相关参数的应用背景,贴合自己应用场景的经验证 ok 才可以使用。
且,一定得先小范围测试环境没有问题,甚至连续3天+没有问题后,才能有的放矢的应用到生成环境。
比如:线程池队列的参数优化,和 CPU 核数相关,不见得是放之四海而皆准的“万能参数”。
3.4 设置生效容易,使得设置失效一样得会 参数生效、参数失效是一对“好兄弟”,两个都得灵活掌握。
设置完参数、参数生效的同时要考虑:如何回退?如何恢复到没有加参数的原始状态。
比如:前面设置的 "cluster.routing.allocation.exclude._ip" : "",不加具体的 IP 就是回退、不设置的含义。
官方对于设置回退有没有说明呢?
有的,官方明确说明如下:
You can reset persistent or transient settings by assigning a null value.
也就是我们上面的命令行操作更严谨的写法应该是: