我已经设置了一个弹性搜索集群,其中包含两个数据节点、一个主节点和一个客户端节点kibana
。我iptables
在每个节点上禁用它来运行它。
现在我需要启用iptables
,并且想知道需要在每个节点上打开哪些端口(9200、9300)以及在哪个方向(传入或传出或两者)。
我还需要知道需要在哪个节点上进行身份验证,只有客户端节点?
答案1
Elasticsearch 使用以下端口范围:
- 9200-9300:Web API 连接。
- 9300-9400:基础设施/节点通信
Elasticsearch 集群节点之间:
iptables -A INPUT -p tcp -s <source> --dport 9300:9400 -j ACCEPT
Master 和 Kibana 之间(客户端 > 服务器):
iptables -A INPUT -p tcp -s <source> --dport 9200 -j ACCEPT
Elasticsearch 默认使用 UDP 多播来发现网络上的其他节点以形成集群。您可以使用以下规则来启用
iptables -A INPUT -m pkttype --pkt-type multicast -j ACCEPT
或者
或者,更好的选择(较大的集群从中受益更多)是通过切换到单播来最大限度地减少多播的干扰(请注意,某些云提供商不允许单播)
或者,您也可以使用以下命令定义自己的端口绑定配置运输。
transport.profiles.default.port: 9300-9400
transport.profiles.default.bind_host: 10.0.0.1
transport.profiles.client.port: 9500-9600
transport.profiles.client.bind_host: 192.168.0.1
transport.profiles.dmz.port: 9700-9800
transport.profiles.dmz.bind_host: 172.16.1.2