一、内存
64GB RAM的机器是最理想的,少于8GB往往适得其反(你最终需要许多,许多小机器),大于64GB可能会有问题
二、网络
低延迟有助于确保节点可以轻松地进行通信,避免跨越多个数据中心的群集
三、操作系统文件描述符
可以临时设置sysctl -w vm.max_map_count=655300或者在/etc/sysctl.conf下永久设置vm.max_map_count。查看设置cat /proc/sys/vm/max_map_count
四、es参数配置
1. 指定集群名称
Elasticsearch 默认启动的集群名字叫 elasticsearch你最好给你的生产环境的集群改个名字,改名字的目的很简单, 就是防止某人的笔记本电脑加入了集群这种意外.
lasticsearch.yml 文件中修改:
cluster.name: elasticsearch_production
每个节点设置一个有意义的、清楚的、描述性的名字
node.name: elasticsearch_005_data
2. 文件路径
默认情况下,Elasticsearch 会把插件、日志以及你最重要的数据放在安装目录下。这会带来不幸的事故, 如果你重新安装 Elasticsearch 的时候不小心把安装目录覆盖了。如果你不小心,你就可能把你的全部数据删掉了。
path.data: /path/to/data
path.logs: /path/to/logs
path.plugins: /path/to/plugins
3. 防脑裂
discovery.zen.minimum_master_nodes: 2 [3个节点,就写2,多于3个,就(总数/2 + 1)]
minimum_master_nodes (还有一些其它配置)允许通过 API 调用的方式动态进行配置。 当你的集群在线运行的时候,你可以这样修改配置
PUT /_cluster/settings
{
"persistent" : {
"discovery.zen.minimum_master_nodes" : 2
}
}
4. 集群节点重启与同步
防止集群节点重启后启动时间节点差异导致的数据迁移
集群节点有8个才可以对外服务
gateway.recover_after_nodes: 8
集群有10个节点,等待 5 分钟,或者10 个节点上线后,才进行数据恢复,这取决于哪个条件先达到。
gateway.expected_nodes: 10
gateway.recover_after_time: 5m [默认5m可以10m]
5. 环境变量
设置堆的大小
export ES_HEAP_SIZE=10g
6.禁用swap
bootstrap.memory_lock: true
其它
node.master: true
node.data: true
action.destructive_requires_name: true
indices.query.bool.max_clause_count: 10240
http.cors.enabled: true
http.cors.allow-origin: "*"
indices.fielddata.cache.size: 30%
cat>>/etc/security/limits.conf<<EOF
- soft nofile 65536
- hard nofile 65536
- soft nproc 32000
- hard nproc 32000
- hard memlock unlimited
- soft memlock unlimited
EOF
echo "fs.file-max = 1000000" >> /etc/sysctl.conf
echo "vm.max_map_count = 262144" >> /etc/sysctl.conf
echo "vm.swappiness=10" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_tw_buckets = 262144" >> /etc/sysctl.conf
echo "vm.min_free_kbytes=1048576" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 51000 65000" >> /etc/sysctl.conf
sysctl -p
修改文件 /etc/systemd/system.conf
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
systemctl daemon-reload