一肤粱、內(nèi)存
64GB RAM的機器是最理想的弹囚,少于8GB往往適得其反(你最終需要許多,許多小機器)领曼,大于64GB可能會有問題
二鸥鹉、網(wǎng)絡(luò)
低延遲有助于確保節(jié)點可以輕松地進行通信,避免跨越多個數(shù)據(jù)中心的群集
三庶骄、操作系統(tǒng)文件描述符
可以臨時設(shè)置sysctl -w vm.max_map_count=655300或者在/etc/sysctl.conf下永久設(shè)置vm.max_map_count毁渗。查看設(shè)置cat /proc/sys/vm/max_map_count
四、es參數(shù)配置
1. 指定集群名稱
Elasticsearch 默認啟動的集群名字叫 elasticsearch你最好給你的生產(chǎn)環(huán)境的集群改個名字瓢姻,改名字的目的很簡單祝蝠, 就是防止某人的筆記本電腦加入了集群這種意外.
lasticsearch.yml 文件中修改:
cluster.name: elasticsearch_production
每個節(jié)點設(shè)置一個有意義的、清楚的幻碱、描述性的名字
node.name: elasticsearch_005_data
2. 文件路徑
默認情況下绎狭,Elasticsearch 會把插件、日志以及你最重要的數(shù)據(jù)放在安裝目錄下褥傍。這會帶來不幸的事故儡嘶, 如果你重新安裝 Elasticsearch 的時候不小心把安裝目錄覆蓋了。如果你不小心恍风,你就可能把你的全部數(shù)據(jù)刪掉了蹦狂。
path.data: /path/to/data
path.logs: /path/to/logs
path.plugins: /path/to/plugins
3. 防腦裂
discovery.zen.minimum_master_nodes: 2 [3個節(jié)點,就寫2朋贬,多于3個凯楔,就(總數(shù)/2 + 1)]
minimum_master_nodes (還有一些其它配置)允許通過 API 調(diào)用的方式動態(tài)進行配置。 當(dāng)你的集群在線運行的時候锦募,你可以這樣修改配置
PUT /_cluster/settings
{
"persistent" : {
"discovery.zen.minimum_master_nodes" : 2
}
}
4. 集群節(jié)點重啟與同步
防止集群節(jié)點重啟后啟動時間節(jié)點差異導(dǎo)致的數(shù)據(jù)遷移
集群節(jié)點有8個才可以對外服務(wù)
gateway.recover_after_nodes: 8
集群有10個節(jié)點摆屯,等待 5 分鐘,或者10 個節(jié)點上線后糠亩,才進行數(shù)據(jù)恢復(fù)虐骑,這取決于哪個條件先達到准验。
gateway.expected_nodes: 10
gateway.recover_after_time: 5m [默認5m可以10m]
5. 環(huán)境變量
設(shè)置堆的大小
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