網絡設置
Elasticsearch 缺省情況下是綁定 localhost。對於本地開發服務是足夠的(如果你在相同機子上啟動多個節點,它還可以形成一個集群),但是你需要配置基本的網絡設置,為了能夠在實際的多服務器生產集群中運行。
WARNING:注意網絡配置,永遠不要暴露未受保護的節點到公網上
常用的網絡配置
network.host
節點將綁定到一個主機名或者 ip 地址並且會將該這個節點通知集群中的其他節點。接受 ip 地址,主機名,指定值或者包含這些值的數組
默認值:local
discovery.zen.ping.unicast.hosts
為了加入集群,一個節點至少需要知道集群中其他節點的主機名或者 ip 地址。這個設置提供初始其他節點列表,當前節點將嘗試聯系。接收 ip 地址或者主機名。
默認值:["127.0.0.1", "[::1]"]
http.port
HTTP 請求通信端口。接收單值或者一個范圍。如果指定一個范圍,該節點將會綁定范圍的第一個可用頂點。
默認值:9200-9300
transport.tcp.port
節點間通信端口。接收單值或者一個范圍。如果指定一個范圍,該節點將會綁定范圍的第一個可用頂點。
默認值:9300-9400
network.host 的特殊值
以下特殊值將可以傳遞給 network.host:
- [networkInterface] 網絡接口的地址,例如 en0。
- local 系統中的回路地址,例如 127.0.0.1。
- site 系統中任何的本地站點地址,例如 192.168.0.1。
- global 系統中的任何全局作用域地 8.8.8.8。
IPv4 vs IPv6
默認情況下這些特殊值都可以在 IPv4 和IPv6 中使用,但是你可以使用 :ipv4,:ipv6 字符限制使用。例如,en0:ipv4 將綁定 en0 接口的 IPv4 地址。
Tip:在雲上使用,更多特別設定可用,當你在 AWS 雲或者 Google Compute Engine 雲上使用時
高級網絡配置
在常用的網絡配置中解釋的 network.host 是快捷方式,同時設置綁定地址和發布地址。在高級使用情況下,例如在一個代理服務器中運行,你可能需要設置如下不同的值:
network.bind_host
這將指定用於監聽請求的網絡接口。一個節點可以綁定多個接口,例如有兩塊網卡,一個本地站點地址,一個本地地址。
默認值:network.host
network.publish_host
發布地址,一個單一地址,用於通知集群中的其他節點,以便其他的節點能夠和它通信。當前,一個 elasticsearch 節點可能被綁定到多個地址,但是僅僅有一個發布地址。如果沒有指定,這個默認值將為 network.host 配置中的最好地址,以 IPv4/Ipv6 堆棧性能,之后以穩定性排序。
上述兩個設置可以向 network.host 那樣被設置--他們都接受 IP 地址,主機名和特定值
高級 TCP 設置
任何使用 TCP(像 HTTP 和 Transport 模塊)共享如下設置:
- network.tcp.no_delay 開啟或關閉 TCP 無延遲設置。默認值為 true。
- network.tcp.keep_alive 開啟或關閉 TCP 長連接,默認值為 true。
- network.tcp.reuse_address 一個地址是否可以被重用。在非 windows 機子上默認值為 true。
- network.tcp.send_buffer_size TCP 發送緩沖區大小(以size unit指定)。沒有默認值。
- network.tcp.receive_buffer_size TCP 接收緩沖區大小(以size unit指定)。沒有默認值。
Transport 和 HTTP 協議
一個Elasticsearch節點暴露兩個網絡協議配置繼承上面的設置,但可獨立地進一步配置兩個網絡協議:
TCP Transport
用於集群中節點之間的通信。
HTTP
暴露基於 HTTP JSON 請求接口,被所有客戶端使用,比局限於 Java 客戶端。
翻譯自:https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html
歡迎轉載,但請注明本文鏈接,謝謝。
2016.8.8 17:18