距离初次写关于es的文章 https://blog.csdn.net/aca_jingru/article/details/44488703 已经过去4年多了。。有必要更新一下了。把小tips总结一下。比较浅显。
规划分软件配置和硬件配置,
首先硬件,内存方面推荐是8g 的heap size ,那么整个系统就考虑16G的了。
现在用云的话不够就可以升级了,但是还是要凭经验规划好,重启一次节点可是非常耗时的。硬盘推荐ssd或者高效云盘。
硬盘最好做lvm,这样可以无感扩磁盘。es是支持对数据节点多目录的,但是没试过,不知道有没有什么坑。
操作系统建议centos7 ,都9102年了,你再用个centos6,那就真的无话可说了。
jdk方面openjdk8 就可以很顺畅的跑了。jdk的gc 不要乱改。这是官方一再强调的。
软件方面,详细配置可以看官网https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html
最后贴一个es maser节点的配置
cluster.name: my-ems
node.name: master-1
path.data: /vdb/lib/elasticsearch
path.logs: /vdb/log/elasticsearch
http.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["ip1,"ip2"]
transport.host: 0.0.0.0
node.master: true
node.data: false
discovery.zen.minimum_master_nodes: 2
数据节点跟他类似,不说了。
这个非常重要,总不可能中断服务升级吧。
英文原文https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html
适用于升级的情况,主要点是在关节点前禁止shard allocation
默认情况下,关了es节点,经过index.unassigned.node_left.delayed_timeout(默认是一分钟) 后会进行
curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
'
stop elasticsearch, 然后 设置
curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": null
}
}
'
注意要等一个节点完全起来了再操作另外节点,不然可是会有丢数据的情况。
实践下来最好分开,这样每次node节点重启并不会发生master 选举的情况,而且master 和data 节点都要用heap 内存,之前的实践来看如果内存不够大,会频繁gc ,影响master效率。
salt,ansible,fabric,puppet,chef等 这种挑一种熟练掌握就行了,官方提供了3个解决方案,https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html ,puppet,chef,ansible 。个人觉得有点重,喜欢自己写。
之前还是使用redis, 确实方便调试,但是现在是9102年,不用kafka这种神器有点说不过去了,
kafka 的使用上面我的经验是手动创建topic ,指定大一点的分区。为了ha 最好是3节点的集群。硬件无特别注意之处。kafka对硬件的要求真的很小。
redis的话很容易爆内存。redis也没啥特别好的ha方案。
kibana 自带的一个es的监控非常好用,可以看index速度,jdk gc情况。
另外如果使用了kafka的话最好接入promethues+grafana+alertmanager 。
原文:https://www.cnblogs.com/gqdw/p/10664345.html