The index.routing.allocation.include._ip
setting in Elasticsearch is used to control shard allocation based on node IP addresses. It allows you to specify which nodes are eligible to host shards of a particular index based on their IP addresses.
- Default value: Not set (no IP-based restrictions)
- Possible values: Comma-separated list of IP addresses or IP ranges
- Recommendations: Use this setting when you need to allocate shards to specific nodes based on their network location or for compliance reasons.
This setting is part of the broader index-level shard allocation filtering mechanism in Elasticsearch. It works in conjunction with other include
, exclude
, and require
settings to provide fine-grained control over shard placement.
Example
To set the index.routing.allocation.include._ip
for an existing index:
PUT /my-index/_settings
{
"index.routing.allocation.include._ip": "192.168.1.1,192.168.1.2"
}
This example restricts shard allocation for the my-index
to nodes with IP addresses 192.168.1.1 or 192.168.1.2.
Reasons for changing this setting might include:
- Ensuring data locality in specific network segments
- Compliance with data residency requirements
- Optimizing for network performance by keeping shards close to certain application servers
Effects of the change:
- Shards will only be allocated to nodes matching the specified IP addresses
- Existing shards on non-matching nodes will be moved to eligible nodes
- If no eligible nodes are available, shards may become unassigned
Common Issues or Misuses
- Overly restrictive settings leading to unassigned shards
- Forgetting to update the setting when node IP addresses change
- Conflicts with other allocation settings, resulting in unexpected behavior
Do's and Don'ts
Do's:
- Use this setting in combination with other allocation settings for more precise control
- Regularly review and update the setting as your cluster topology changes
- Test the impact of changes in a non-production environment first
Don'ts:
- Don't use this setting as the sole means of ensuring data security
- Avoid setting overly restrictive IP ranges that might lead to shard allocation issues
- Don't forget to consider the impact on cluster balance and performance
Frequently Asked Questions
Q: Can I use wildcards or CIDR notation in the IP addresses?
A: Yes, you can use IP ranges in CIDR notation (e.g., 192.168.1.0/24) or wildcards (e.g., 192.168.1.*) to specify a range of IP addresses.
Q: What happens if no nodes match the specified IP addresses?
A: If no nodes match the specified IP addresses, the shards for that index will remain unassigned until eligible nodes become available.
Q: How does this setting interact with other allocation settings?
A: This setting is combined with other allocation settings using AND logic. All conditions must be met for a node to be eligible for shard allocation.
Q: Can I use this setting to separate hot and cold data based on node types?
A: While possible, it's generally better to use node attributes (like node.attr.data_type
) for separating hot and cold data, as IP addresses might change more frequently.
Q: Is there a performance impact when using this setting?
A: The setting itself doesn't directly impact performance, but restricting shard allocation can affect cluster balance and recovery times if not configured properly.