通过配置阿里云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版本): - 配置CORS访问
- http.cors.enabled
- http.cors.allow-origin
- http.cors.max-age
- http.cors.allow-methods
- http.cors.allow-headers
- http.cors.allow-credentials
- 配置reindex白名单
reindex.remote.whitelist
- 配置Auditlog(审计日志)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
- 配置queue大小
- 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访问,支持配置的参数如下。
参数 | 默认值 | 说明 |
---|---|---|
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重建索引。具体操作,请参见通过reindex迁移数据。
配置Auditlog(审计日志)
Auditlog为审计日志,默认关闭。查看审计日志前,需要先开启Auditlog。开启后,系统会记录Elasticsearch实例对应的增、删、改、查等操作产生的日志。对于审计日志的开启、配置和查看,阿里云Elasticsearch不同版本实例的操作有所不同,具体如下。
说明 关于Auditlog的更多详细信息,请参见Auditing Security Settings。
7.x及8.x版本
- 进入YML文件配置面板。具体操作请参见修改配置。
- 在Auditlog索引区域,选择开启Auditlog索引,开启Auditlog索引。
- 自定义Auditlog配置。对于7.x及8.x版本实例,开启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及8.x版本实例仅支持配置xpack.security.audit.logfile.events.include参数。
- 默认Auditlog配置只会在审计日志中打印请求被拒绝或失败的审计日志,如需获取请求成功的审计日志,需要添加access_granted事件。添加后,磁盘将存储所有访问信息,可能会存在磁盘使用率过高的风险,建议您问题排查完后,关闭审计日志功能。
- 查看审计日志(Auditlog)。
5.x及6.x版本
- 进入YML文件配置面板。具体操作请参见YML文件配置。
- 在Auditlog索引区域,选择开启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。 |