本文向您介紹如何通過curl命令列串連Elasticsearch(ES)叢集。
準備工作
擷取叢集串連地址
您可以通過VPC私網或公網地址串連到ES叢集。
-
VPC私網串連地址:通過VPC私網地址訪問ES叢集,延遲低,穩定性高。該地址在叢集建立成功後預設開啟。
-
公網串連地址:通過公網訪問ES叢集,需手動開啟。
如何開啟公網訪問:
-
登入ES控制台,進入執行個體基本資料頁面。
-
單擊左側導覽列 配置與管理>安全配置,開啟公網訪問。待叢集狀態由生效中變更為生效時,表示公網訪問已成功開啟。
公網訪問開啟後,公網地址格式為
es-cn-<執行個體ID>.public.elasticsearch.aliyuncs.com,公網訪問白名單預設為空白,需手動設定。重要公網地址會降低ES叢集的安全性,如果使用公網地址,請務必配置IP白名單,並在使用完畢後及時關閉公網訪問。
設定IP白名單
為保障叢集安全,您需要將待訪問裝置的IP地址加入ES叢集的VPC私網或者公網白名單,該IP地址所屬的裝置才能訪問ES叢集。
-
擷取待訪問裝置IP。
您可以參照以下情境,擷取待訪問裝置的IP地址。
情境
需擷取的IP地址
擷取方式
在本地裝置中串連ES叢集
本地裝置公網IP。
如果本地裝置位於區域網路(如家庭或公司網路)內,需將該區域網路的公網出口IP地址添加到ES叢集的公網白名單中。
通過
curl ipinfo.io/ip查詢本地裝置公網IP。在不同VPC的ECS執行個體中串連ES叢集
ECS執行個體的公網IP
登入ECS控制台,在執行個體列表查看。
在相同VPC的ECS執行個體中串連ES叢集
ECS執行個體的私網IP
登入ECS控制台,在執行個體列表查看。
-
將擷取到的IP地址添加到白名單分組中。
-
登入ES控制台,進入執行個體基本資料,單擊左側導覽列 配置與管理>安全配置,單擊修改在彈窗中設定VPC私網或者公網訪問白名單。
-
單擊default分組右側的配置 ,在彈出的對話方塊中添加VPC私網或者公網白名單。單個叢集最多可配置300個IP或者IP網段,多個IP或者IP網段之間用英文逗號隔開,且逗號前後不能有空格。
-
也可單擊新增IP白名单分组,自訂分組名稱。
-
白名單分組僅用於IP地址管理,不影響存取權限。所有分組內的IP地址許可權相同。
配置類別
格式和樣本值
重要注意事項
IPv4地址格式
-
單個IP:
192.168.0.1 -
網段:
192.168.0.0/24
-
禁止訪問:
127.0.0.1 -
允許所有訪問:
0.0.0.0/0重要存在高危風險,強烈建議不要配置
0.0.0.0/0。部分叢集版本(如7.16/8.5)和地區不支援
0.0.0.0/0,請以控制台介面或者報錯提示為準。
IPv6地址格式
(僅v2部署架構且所屬地區為杭州的叢集支援)
-
單個IP:
2401:XXXX:1000:24::5 -
網段:
2401:XXXX:1000::/48
-
禁止所有訪問:
::1 -
允許所有訪問
::/0重要存在高危風險,強烈建議不要配置
::/0。部分叢集版本不支援
::/0,請以控制台介面或者配置提示資訊為準。
-
-
配置完成後,單擊確認。
-
協議與認證說明
-
公網HTTPS:使用權威CA簽發的認證,用戶端無需特殊配置,直接使用
https://協議串連即可。 -
私網HTTPS:使用自我簽署憑證加密傳輸。由於VPC私網不經過公網,不存在中間人攻擊風險,使用
-k參數跳過認證校正即可安全訪問。
串連叢集
命令格式
# 公網HTTPS
curl -u '<UserName>:<YourPassword>' 'https://<YourEsHost>:port'
# 私網HTTP
curl -u '<UserName>:<YourPassword>' 'http://<YourEsHost>:port'
# 私網HTTPS(使用 -k 跳過認證校正)
curl -k -u '<UserName>:<YourPassword>' 'https://<YourEsHost>:port'
|
參數 |
說明 |
|
UserName |
預設訪問使用者名稱為elastic,該使用者具有叢集最高許可權(可理解為管理員賬戶)。 出於安全考慮,不建議在生產環境中直接使用此預設管理員賬戶,您可以通過Elasticsearch X-Pack的RBAC(Role-based Access Control)機制,自訂角色並分配許可權,然後將角色指派給使用者,實現許可權精細化管控,具體操作請參見通過Elasticsearch X-Pack角色管理實現使用者權限管控。 |
|
YourPassword |
UserName對應的密碼。 |
|
https |
訪問協議,http協議預設開啟。 建議開啟並使用HTTPS協議,確保資料轉送過程中的機密性、安全性和完整性。登入ES控制台進入執行個體基本資料,單擊左側導覽列 配置與管理>安全配置,開啟HTTPS協議。 重要
|
|
YourEsHost |
準備工作中已擷取的叢集串連地址:
|
|
port |
叢集的訪問連接埠,VPC私網和公網預設連接埠號碼均為9200。 |
串連樣本
# 公網HTTPS訪問
curl -u 'user123:Passw0rd!' 'https://es-xx-xxxxxxxxxxxxxxxxx.public.elasticsearch.aliyuncs.com:9200'
# 私網HTTP訪問
curl -u 'user123:Passw0rd!' 'http://es-cn-0pp1****.elasticsearch.aliyuncs.com:9200'
# 私網HTTPS訪問(-k 跳過認證校正)
curl -k -u 'user123:Passw0rd!' 'https://es-cn-0pp1****.elasticsearch.aliyuncs.com:9200'
串連成功返回以下叢集資訊,您可以參考Elasticsearch REST APIs進行叢集管理或者索引操作。
{
"name" : "es-cn-aic**************-master-i-2",
"cluster_name" : "es-cn-aic**************",
"cluster_uuid" : "InmpfI1oQB2ijtdZ******",
"version" : {
"number" : "8.17.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "0bdf7********************************50279ae7c",
"build_date" : "2025-03-05T02:31:55.853663566Z",
"build_snapshot" : false,
"lucene_version" : "10.0.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
串連失敗排查
如果無法串連 ES 叢集,請按以下步驟逐一排查:
-
檢查網路連通性:確認 ES 叢集與用戶端處於同一 VPC。如果不在同一 VPC,可通過雲企業網(CEN)或 NAT Gateway實現跨 VPC 網路互連。
-
檢查安全性群組連接埠:確認 ES 叢集所在 ECS 執行個體的安全性群組入方向已開放 9200 連接埠。如果是 MySQL 資料同步情境,需確保 ES 叢集與 MySQL 執行個體的安全性群組互相允許存取對方的白名單。
-
檢查 Docker 路由表:如果用戶端運行在 Docker 容器中,Docker 可能會變更主機的路由表,導致原本處於同一 VPC 的用戶端與 ES 叢集無法互連。可通過
route -n命令查看當前路由表,確認到 ES 叢集所在網段的路由是否正常。 -
檢查網域名稱和連接埠:確認串連命令中使用的網域名稱(公網串連地址或私網串連地址)和連接埠拼字正確,連接埠預設應為 9200。
-
檢查企業防火牆:確認企業防火牆或路由限制未攔截 9200 連接埠的出方向或入方向流量。
-
調整逾時參數:適當調大用戶端的 ConnectTimeout 和 SocketTimeout 參數,避免因網路延遲導致串連被誤判為失敗。
此外,還可參考以下常見問題:
-
忘記密碼:可在 ES 控制台重設訪問密碼。
-
首次開啟公網訪問後無法串連:請刪除公網訪問白名單default 分組中的預設 IP 127.0.0.1,並添加原生公網出口 IP,具體操作請參見本文「設定 IP 白名單」章節。