写在前面
在部署前尽量回顾一下这一章节的内容,以做到心里有数。
部署时,考虑的三个点:
- 后勤方面:硬件,部署策略建议
- 更适合生产环境的配置更改
-
硬件
ES为重cpu、重io、重内存应用场景,性能更好的cpu能提升查询效率,更多的内存、更快的磁盘io对于写入能带来更好的提升。
内存
内存建议64Gb,尽量保持有一半以上的内存留给文件缓存。堆内存经过实际场景压测,5.4版本堆内存建议26-30G之间,7.1版本建议30G
CPUs
硬盘
SSD>raid 0 HHD>HHD 不要使用NAS! 按照顺丰的情况,尽量使用ssd,并且使用直通盘的形式挂载。
网络
建议使用1GbE,10GbE
- 尽量避免跨越多个数据中心
总结
尽量选择中高配的机器,避免高配机器,减少逻辑复杂度java 虚拟机
尽量使用最新版本的jdk重要配置
基本配置 ```bash 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 修改方式有两种:
```bash
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
jvm重要配置
#内存大小
-Xms32g
-Xmx32g
#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