本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
通過配置阿里云Elasticsearch實例的YML參數,您可以設置允許自動創建索引、刪除索引指定名稱、配置Auditlog索引、開啟Watcher以及其他配置。本文介紹如何配置YML參數、CORS訪問、reindex白名單、Auditlog和queue大小。
注意事項
2020年10月起,由于阿里云Elasticsearch網絡架構調整,導致部分通過reindex方式跨集群遷移數據的場景受到了限制。如果需要使用reindex方式跨集群遷移數據,請參見通過實例私網打通將自建Elasticsearch數據遷移至阿里云中的注意事項進行處理。
對于華北3(張家口)和海外地域,由于網絡架構調整時間不確定,因此需要提交工單,聯系阿里云Elasticsearch技術支持,校驗網絡是否可以互通。
修改配置
- 登錄阿里云Elasticsearch控制臺。
- 在左側導航欄,單擊Elasticsearch實例。
- 進入目標實例。
- 在頂部菜單欄處,選擇資源組和地域。
- 在Elasticsearch實例中單擊目標實例ID。
在左側導航欄,選擇 。
在ES集群配置頁面,單擊YML文件配置右側的修改配置。
在YML文件配置頁面,按照以下說明進行配置。
說明如果您需要查看elasticsearch.yml的內容,可登錄Kibana控制臺,執行
GET _cluster/settings?include_defaults
命令。參數
說明
自動創建索引
當Elasticsearch實例接收到新文檔后,如果沒有對應索引,是否允許系統自動創建索引。
對應的YML文件的配置項為action.auto_create_index,默認為false。
阿里云Elasticsearch默認不允許自動創建索引,您可以通過以下方式開啟:
重要自動創建的索引可能不符合您的預期,建議您評估后再開啟。
通過控制臺集群配置開啟。該操作為YML靜態配置,會觸發實例重啟。
通過動態方式快速開啟(不需要重啟)。登錄Kibana控制臺,通過以下命令設置允許自動創建索引:
允許自動創建所有索引
PUT /_cluster/settings { "persistent": { "action": { "auto_create_index": "true" } } }
重要該方式將開放所有索引的自動創建功能,如果您需要禁止,請將
true
改成false
。只允許自動創建部分指定索引,如下示例僅允許自動創建系統索引:
PUT /_cluster/settings { "persistent": { "action": { "auto_create_index": "+.*,-*" } } }
刪除索引指定名稱
在刪除索引時是否需要明確指定索引名稱。如果選擇刪除或關閉時索引名稱支持通配符,則可以使用通配符進行批量刪除索引。索引刪除后不可恢復,請謹慎使用此配置。
對應的YML文件的配置項為action.destructive_requires_name,默認為true。
Auditlog
開啟后,系統會記錄Elasticsearch實例對應的增、刪、改、查等操作產生的審計日志,該日志信息會占用您的磁盤空間,同時也會影響性能,不建議開啟,請謹慎使用此配置。更多參數說明,請參見配置Auditlog(審計日志)。
對應的YML文件的配置項為xpack.security.audit.enabled,默認為false。
開啟Watcher
開啟后,可使用X-Pack的Watcher功能。請注意定時清理.watcher-history*索引,避免占用大量磁盤空間。
對應的YML文件的配置項為xpack.watcher.enabled,默認為false。
其他Configure配置
支持的部分配置項如下(以下配置項,如果沒有標識具體適用于哪個Elasticsearch版本,默認兼容Elasticsearch 5.x、6.x和7.x版本):
http.cors.enabled
http.cors.allow-origin
http.cors.max-age
http.cors.allow-methods
http.cors.allow-headers
http.cors.allow-credentials
reindex.remote.whitelist
Elasticsearch 7.x和8.x版本僅支持配置xpack.security.audit.logfile.events.include參數,5.x和6.x版本支持以下參數:
xpack.watcher.enabled
xpack.notification
xpack.security.audit.enabled
xpack.security.audit.index.bulk_size
xpack.security.audit.index.flush_interval
xpack.security.audit.index.rollover
xpack.security.audit.index.events.include
xpack.security.audit.index.events.exclude
xpack.security.audit.index.events.emit_request_body
xpack.security.audit.index.settings.index
LDAP功能
除5.x版本外,其他版本支持:
xpack.security.authc.realms.ldap1
xpack.security.authc.realms.active_directory1
xpack.security.authc.realms.pki1
xpack.security.authc.realms.saml1
xpack.security.authc.realms.kerberos1
xpack.security.authc.token.enabled
thread_pool.bulk.queue_size(適用于5.x及6.x版本)
thread_pool.write.queue_size(適用于6.x、7.x及8.x版本)
thread_pool.search.queue_size
自定義SQL插件配置
xpack.sql.enabled
默認情況下Elasticsearch實例會啟用X-Pack自帶的SQL插件,如需上傳自定義的SQL插件,請將xpack.sql.enabled設置為false。
重要配置YML文件會觸發集群滾動重啟。如果集群中的索引有副本且集群負載正常(CPU使用率在60%左右,堆內存使用率在50%左右,load_1m低于CPU核數),一般情況下,在重啟過程中可持續對外提供服務。重啟時長與集群規模、數據量及負載情況等有關系,建議在業務低峰期操作。
如果集群負載過高且索引沒有副本,同時業務中存在大量的寫入或查詢等場景,在集群變更過程中,業務可能會出現偶發的訪問超時現象。建議在客戶端訪問腳本中配置重試機制,以減小對業務的影響。
選中該操作會重啟實例,請確認后操作,單擊確定。
確定后,Elasticsearch實例會重啟。重啟過程中,可在任務列表查看進度。重啟成功后,即可完成YML文件的配置。
配置CORS訪問
通過配置跨域資源共享CORS(Cross-origin resource sharing)訪問,設置是否允許其他域資源下的瀏覽器向阿里云Elasticsearch發送請求。您可以在YML文件配置中,配置CORS訪問,支持配置的參數如下。
表格中的參數是阿里云Elasticsearch為支持HTTP協議開放的自定義配置。
表格中的參數僅支持靜態配置。如果您想使配置生效,需要將配置信息寫入elasticsearch.yml文件中。
表格中的參數依賴于集群網絡設定(Network settings)。
參數 | 默認值 | 說明 |
http.cors.enabled | false | 設置是否啟用跨域資源訪問(Elasticsearch是否允許其他域資源下的瀏覽器向其發送請求):
|
http.cors.allow-origin | “” | 域資源配置項,可設置接受來自哪些域名的請求。默認不允許接受跨域請求且無配置。支持正則表達式,例如/https?:\/\/localhost(:[0-9]+)?/,表示可響應符合此正則的請求信息。 警告 *是合法配置,表示集群支持來自任意域名的跨域請求,此配置存在安全風險,不建議使用。 |
http.cors.max-age | 1728000(20天) | 瀏覽器可發送OPTIONS請求以獲取CORS配置信息,此配置項可設置獲取的信息在瀏覽器中的緩存時間,單位為秒。 |
http.cors.allow-methods | OPTIONS, HEAD, GET, POST, PUT, DELETE | 請求方法配置項。 |
http.cors.allow-headers | X-Requested-With, Content-Type, Content-Length | 請求頭信息配置項。 |
http.cors.allow-credentials | false | 憑證信息配置項目,設置是否允許響應頭中返回Access-Control-Allow-Credentials信息:
|
配置reindex白名單
通過當前集群調用reindex API,從遠程集群遷移索引數據前,需要先配置reindex白名單。您可以在YML文件配置中,配置reindex白名單,支持配置的參數如下。
參數 | 默認值 | 說明 |
reindex.remote.whitelist | [] | 設置遠程Elasticsearch集群的訪問地址,將其添加到當前集群的遠程訪問白名單中。 白名單支持host和port的組合,并使用逗號分隔多個主機配置(例如otherhost:9200,another:9200,127.0.10.**:9200,localhost:**),不識別協議信息。 |
配置reindex白名單時,如果遠程Elasticsearch集群為單可用區的阿里云Elasticsearch實例,請使用<阿里云Elasticsearch實例的域名>:9200;如果為多可用區實例,請使用實例中所有數據節點的IP地址與端口的組合。具體示例如下:
單可用區
reindex.remote.whitelist: ["es-cn-09k1rgid9000g****.elasticsearch.aliyuncs.com:9200"]
多可用區
reindex.remote.whitelist: ["10.0.xx.xx:9200","10.0.xx.xx:9200","10.0.xx.xx:9200","10.15.xx.xx:9200","10.15.xx.xx:9200","10.15.xx.xx:9200"]
說明reindex白名單配置完成后,即可調用reindex API重建索引。具體操作,請參見阿里云ES間跨集群reindex。
配置Auditlog(審計日志)
Auditlog為審計日志,默認關閉。查看審計日志前,需要先開啟Auditlog。開啟后,系統會記錄Elasticsearch實例對應的增、刪、改、查等操作產生的日志。對于審計日志的開啟、配置和查看,阿里云Elasticsearch不同版本實例的操作有所不同,具體如下。
關于Auditlog的更多詳細信息,請參見Auditing Security Settings。
7.x及以上版本
進入YML文件配置面板。
具體操作請參見修改配置。
選中Auditlog參數中的開啟Auditlog,開啟審計日志。
自定義Auditlog配置。
開啟Auditlog后,您可以在其他Configure配置中調整xpack.security.audit.logfile.events.include參數的配置,示例如下:
xpack: security: audit: logfile: events: include: >- access_denied,anonymous_access_denied,authentication_failed,connection_denied,tampered_request,run_as_denied,run_as_granted
重要7.x及以上版本實例僅支持配置xpack.security.audit.logfile.events.include參數。
默認Auditlog配置只會在審計日志中打印請求被拒絕或失敗的審計日志,如需獲取請求成功的審計日志,需要添加access_granted事件。添加后,磁盤將存儲所有訪問信息,可能會存在磁盤使用率過高的風險,建議您問題排查完后,關閉審計日志功能。
查看審計日志(Auditlog)。
5.x及6.x版本
進入YML文件配置面板。
具體操作請參見YML文件配置。
選中Auditlog參數中的開啟Auditlog索引,開啟審計日志。
Auditlog索引的默認配置如下,您可以根據具體業務進行調整。
xpack.security.audit.index.bulk_size: 5000 xpack.security.audit.index.events.emit_request_body: false xpack.security.audit.index.events.exclude: run_as_denied,anonymous_access_denied,realm_authentication_failed,access_denied,connection_denied xpack.security.audit.index.events.include: authentication_failed,access_granted,tampered_request,connection_granted,run_as_granted xpack.security.audit.index.flush_interval: 180s xpack.security.audit.index.rollover: hourly xpack.security.audit.index.settings.index.number_of_replicas: 1 xpack.security.audit.index.settings.index.number_of_shards: 10
配置
默認設置
說明
xpack.security.audit.index.bulk_size
1000
當您將多個審計事件分批寫入到一個Auditlog索引中時,可通過該參數,設置寫入事件的數量。
xpack.security.audit.index.flush_interval
1s
控制緩沖事件刷新到索引的頻率。
xpack.security.audit.index.rollover
daily
控制滾動構建到新索引的頻率,可以設置為hourly、daily、weekly或monthly。
xpack.security.audit.logfile.events.include
access_denied,anonymous_access_denied,authentication_failed, connection_denied,tampered_request,run_as_denied,run_as_granted
控制何種Auditlog事件可以被采集到審計日志中。目前審計日志功能僅開放部分地域,詳情請參見使用限制。完整事件類型列表,請參見Audit event types (7.x)。
xpack.security.audit.index.events.include
access_denied, access_granted, anonymous_access_denied, authentication_failed, connection_denied, tampered_request, run_as_denied, run_as_granted
控制何種Auditlog事件可以被寫入到索引中,僅5.x和6.x版本的實例支持。完整事件類型列表,請參見Audit event types (6.x)。
xpack.security.audit.index.events.exclude
null(默認不處理任何事件)
構建索引過程中,排除的Auditlog事件。
xpack.security.audit.index.events.emit_request_body
false
當觸發明確的事件類型時(例如authentication_failed),是否忽略或包含以REST發送的請求體。
警告當Auditlog中包含RequestBody信息時,可能會在日志文件中暴露敏感信息。
查看審計日志(Auditlog)。
對于5.x和6.x版本實例,當開啟Auditlog后,Auditlog文件將輸出到Elasticsearch實例中,并使用.security_audit_log-*開頭的索引名稱。因此您可以通過在Kibana控制臺上查看.security_audit_log-*開頭的索引來查看審計日志。
重要Auditlog索引會占用實例的存儲空間。由于Elasticsearch不支持自動過期清除策略,因此需要手動清除舊的Auditlog索引。
可選:配置存儲Auditlog的索引分片。
對于5.x和6.x版本實例,您可以通過xpack.security.audit.index.settings配置存儲Auditlog的索引分片。以下配置構建Auditlog索引的分片和副本均為1。
xpack.security.audit.index.settings: index: number_of_shards: 1 number_of_replicas: 1
說明如果您希望通過傳入配置參數生成Auditlog索引,請在開啟Auditlog索引(設置xpack.security.audit.enabled為true)的同時傳入此配置。否則,Auditlog索引將使用默認的
number_of_shards: 5
、number_of_replicas: 1
配置。
配置queue大小
通過自定義queue大小,調整文檔寫入和搜索的隊列大小。您可以在YML文件配置中,配置queue大小。以下示例配置文檔寫入和搜索queue大小為500和1000,實際業務中請根據具體情況自行調整。
5.x及6.x版本
thread_pool.bulk.queue_size: 500 thread_pool.search.queue_size: 1000
6.x、7.x及8.x版本
thread_pool.write.queue_size: 500 thread_pool.search.queue_size: 1000
參數 | 默認值 | 說明 |
thread_pool.bulk.queue_size | 200 | 文檔寫入隊列大小,適用于阿里云Elasticsearch 5.x及6.x版本。 |
thread_pool.write.queue_size | 200 | 文檔寫入隊列大小,適用于阿里云Elasticsearch 6.x、7.x及8.x版本。 |
thread_pool.search.queue_size | 1000 | 文檔搜索隊列大小。 說明 Elasticsearch實例的thread_pool.search.queue_size參數的最大值為1000,調整為1000以上仍取值為1000。 |