部署时,考虑的三个点:
- 后勤方面:硬件,部署策略建议
- 更适合生产环境的配置更改
- 部署后的考虑:安全,最大限度的索引性能,备份
ES为重cpu、重io、重内存应用场景。性能更好的cpu能提升查询效率,更多的内存、更快的磁盘io对于写入能带来更好的提升。
内存建议64Gb,尽量保持有一半以上的内存留给文件缓存。堆内存经过实际场景压测,5.4版本堆内存建议26-30G之间,7.1版本建议30G
尽量选择多核CPU
SSD>raid 0 HHD>HHD 不要使用NAS! 按照顺丰的情况,尽量使用ssd,并且使用直通盘的形式挂载。
- 建议使用1GbE,10GbE
- 尽量避免跨越多个数据中心
尽量选择中高配的机器,避免高配机器,减少逻辑复杂度
尽量使用最新版本的jdk
基本配置 cluster.name: elasticsearch_production
node.name: elasticsearch_005_data
path.data: /path/to/data1,/path/to/data2
# Path to log files:
path.logs: /path/to/logs
#network
network.host: 192.168.1.1
transport.tcp.port: 9300
#node role
node.master: true (default: true)
node.data: false (default: true)
#restful port
http.enabled: true (default: true)
http.port: 9200 (default: none)
#discovery config
discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]
discovery.zen.ping_timeout: 10s
discovery.zen.fd.ping_timeout: 120s
discovery.zen.fd.ping_retries: 5
discovery.zen.fd.ping_interval: 20s
最小主节点 防止脑裂的配置。配置建议为:(master候选节点/2)+1 修改方式有两种:
discovery.zen.minimum_master_nodes: 2
PUT /_cluster/settings
{
"persistent" : {
"discovery.zen.minimum_master_nodes" : 2
}
}
集群恢复配置
gateway.recove_after_nodes:8
gateway.expected_nodes: 10
gateway.recover_after_time: 5m
防止同一个分片的主副本存在同一个物理机上
cluster.routing.allocation.same_shard.host: true
内存lock bootstrap.memory_lock: true
#内存大小
-Xms30g
-Xmx30g
#gc回收器
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+DisableExplicitGC
#heapdump配置
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/log
关闭swapping
vim sysctl:
vm.swappiness=1
mmap最大映射数量
vim /etc/sysctl.conf
vm.max_map_count=262144
文件描述符
* soft nproc 65536
* hard nproc 65536
* soft nofile 524288
* hard nofile 524288
* soft memlock unlimited
* hard memlock unlimited