We are using three node Elasticsearch cluster in AWS Cloud.
here are the configurations.
Instance Type: M4 4X Large (Three nodes), each node configurations are given below.
CPU, 16 cores, RAM 64GB, EBS volumes: 4TB * 4 volumes
EBS Volume Utilizations: 2.5Tb * 4 volumes.
JVM heapsapce : 31.5GB, virtual memory : 10GB
With the above configuration we could able to 'open 520 indices active_primary_shards: 2800' from 6300 indexes (Appx 39000 shards).
JVM utlization details are below:
ip heap.percent ram.percent cpu load_1m load_5m load_15m
IP1 63 99 5 0.60 0.46 0.45mdi
IP2 37 98 4 0.45 0.34 0.32mdi
IP3 56 96 4 0.25 0.19 0.25mdi
Master node: * and node is : node-IP1
Requirement:
we have to open 1750 indices (Appx 11600 shards) in the above cluster to meet my customers requirement.
Unfortunately we don't have sufficient Staging stack to test the following proposals, hence please look the below proposals and suggest me on best approach/possible precautions.
Proposal 1:
We would like to join/add 2 more nodes i.e. M4 4X Large nodes to the above cluster (make 5 node cluster).
-> We will be configured JVM heap space as 31.5GB similar to the other nodes.
-> Two new nodes would be considered as only Master nodes (data node flag - false)
-> No EBS volumes for new nodes, since existing EBS volume size is sufficient for my requirement
-> minimum master nodes 3 and data nodes 2
JVM heap space would be increased with the above proposal and we could open atlready 1500+ indices with above setup.
please share your thoughts
Proposal 2:
We would like to join/add 2 more nodes i.e. M4 4X Large nodes to the above cluster (make 5 node cluster).
-> We will be configured JVM heap space as 31.5GB similar to the other nodes.
-> Two new nodes would be considered as Master and data nodes
-> Only one EBS volume per node and capacity is 10TB.
-> minimum master nodes 3 and data nodes 2
JVM heap space would be increased with the above proposal and we could open already 1500+ indices with above setup.
please share your thoughts
Proposal 3:
Configuration is similar to the existing cluster,
minimum master nodes 3 and data nodes 2
JVM heap space would be increased with the above proposal and we could open already 1500+ indices with above setup.
Above three nodes are considering as Master & Data nodes. and the cluster configuration details are given below.
Index level configurations:
"cluster_name" : "aws-es-production",
"index_number_of_shards" : "5",
"index_number_of_replicas" : "0",
"index_translog_flush_threshold_ops" : "100000",
"index_translog_flush_threshold_size" : "1gb",
"index_refresh_interval" : "30s",
"indices_memory_index_buffer_size" : "50%",
Elasticsearch YML configurations: Node1, similar configuration on Node 2 & 3
cluster.name: "aws-es-production"
node.name: node-IP1
network.host: IP1
script.engine.groovy.inline.aggs: on
script.engine.groovy.inline.search: on
script.engine.groovy.inline.update: on
path.data: /EBS1/elasticsearch,/EBS2/elasticsearch,/EBS3/elasticsearch,/EBS4/elasticsearch
path.logs: /EBS1/elasticsearch/logs
gateway.expected_nodes: 3
gateway.recover_after_time: 1m
gateway.recover_after_nodes: 2
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["IP2", "IP3"]
indices.fielddata.cache.size: 50%
indices.breaker.fielddata.limit: 60%
thread_pool.bulk.queue_size: 1000
bootstrap.system_call_filter: true
cluster.info.update.interval: 1m
cluster.routing.allocation.disk.threshold_enabled : false
Node 2:
node.name: node-IP2
network.host: IP2
discovery.zen.ping.unicast.hosts: ["IP1", "IP3"]
Node 3:
node.name: node-IP3
network.host: IP3
discovery.zen.ping.unicast.hosts: ["IP1", "IP2"]