
# 修改集群参数
在使用Elasticsearch集群时，经常需要根据业务需求调整集群行为，例如前端应用需要跨域访问集群接口、查询性能需要通过调整缓存来优化、Kibana会话需要延长超时时间等。CSS服务提供参数配置功能，支持在线修改"elasticsearch.yml"、"kibana.yml"和"system.config"配置文件，实现集群核心参数、可视化平台参数的灵活调整，适用于跨域访问配置、查询性能优化、Kibana可视化平台行为定制等场景。
#### 配置文件说明
CSS集群的运行依赖以下配置文件，各文件职责不同、修改入口不同，三者互不影响，需分别修改。
表1配置文件类型说明 
| 配置文件              | 配置范围                                                                                                                                                                                                         | 生效范围                                                                             |
|:---|:---|:---|
| elasticsearch.yml | 集群的核心配置参数，包括跨域访问、索引重建、查询缓存、线程池等。                                                                                                                                                                             | 修改后，所有节点在手动重启集群时加载新配置。                                                           |
| kibana.yml        | 可视化平台的独立配置参数，如会话超时时间、缺省跳转页面、界面显示等。                                                                                                                                                                           | 修改后，仅Kibana组件在重启Kibana进程时加载新配置，不影响集群节点。仅对公网地址和内网地址访问的Kibana生效，控制台一键访问的Kibana不生效。 |
| system.config     | SAML身份提供商（idP）的元数据文件，详情请参见[SAML - Open Distro for Elasticsearch Documentation](https://opendistro.github.io/for-elasticsearch-docs/old/1.11.0/docs/security/configuration/saml/#identity-provider-metadata)。 | 配置后，会在Elasticsearch config目录下生成"descriptor.xml"文件，所有节点在手动重启集群时加载该文件。             |
   
参数修改的生效流程如下：
1. 修改参数：在参数配置页面编辑对应模块的参数值。
2. 保存参数：CSS将修改写入对应配置文件。
3. 重启集群/进程：各节点或组件重新加载配置文件。
4. 参数生效：重启完成后，新配置生效。
 
#### 约束限制
- 仅当Elasticsearch集群版本号为7.10.2时，才支持修改"system.config"。
- 自定义参数必须配置为对应组件支持的参数，否则集群或组件重启会失败，建议谨慎操作。
- 修改"elasticsearch.yml"和"system.config"参数后需手动重启集群才能生效。
- 系统最多显示20条修改记录。
- 建议在业务低峰期修改参数并重启集群，避免影响业务运行。
 
#### 修改Elasticsearch配置（elasticsearch.yml）
修改Elasticsearch集群的核心运行参数，包括跨域访问、索引重建、查询缓存和线程池等。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏，选择"集群管理 \> Elasticsearch"。
3. 在集群列表，单击目标集群名称，进入集群详情页。
4. 选择"集群配置 \> 参数配置 \> Elasticsearch配置"。
5. 单击"编辑"，根据需求修改对应模块的参数值。
   表2模块参数信息说明 
   | 模块名称    | 参数名称                         | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|:---|
   | 跨域访问    | http.cors.allow-credentials  | 控制跨域请求是否携带身份验证信息，即是否返回头部的Access-Control-Allow-Credentials字段。 取值范围： - true：响应头将包含Access-Control-Allow-Credentials字段。  - false（默认值）：响应头不包含Access-Control-Allow-Credentials字段。   |
   | 跨域访问    | http.cors.allow-origin       | 指定允许跨域访问的源地址（IP地址或域名），多值时用英文逗号分隔。 示例格式："192.168.122.122:9200"或"192.168.1.1:9200, 192.168.1.2:9200"。                                                                                                                                                                                                                                                                                                                                                       |
   | 跨域访问    | http.cors.allow-headers      | 设置跨域访问允许的请求头字段，多值时用英文逗号加空格分隔。 示例："X-Requested-With, Content-Type, Content-Length"。 字符串长度限制：最大1024字符，仅允许字母、数字、"-"、"_"和"/"。                                                                                                                                                                                                                                                                                  |
   | 跨域访问    | http.cors.max-age            | 设置浏览器缓存预检请求响应的最大时间长度。 单位：秒 取值范围：0\~31536000（约1年） 默认值：1728000（20天）                                                                                                                                                                                                                                                                                          |
   | 跨域访问    | http.cors.enabled            | 是否启用跨域访问功能。 取值范围： - true：启用跨域访问。  - false（默认值）：禁用跨域访问。                                                                                                                                                  |
   | 跨域访问    | http.cors.allow-methods      | 跨域访问允许的HTTP方法，多值时用英文逗号加空格分隔。 示例："OPTIONS, GET, POST"。 取值范围：OPTIONS、HEAD、GET、POST、PUT、DELETE。                                                                                                                                                                                                                                                                                                              |
   | 集群索引重建  | reindex.remote.whitelist     | 指定允许通过Reindex接口迁移数据的远程集群地址，多值时用英文逗号分隔。 示例格式："192.168.122.122:9200"或"192.168.1.1:9200, 192.168.1.2:9200"。                                                                                                                                                                                                                                                                                                                                                |
   | 自定义缓存   | indices.queries.cache.size   | 控制查询缓存占用的内存比例。 单位：百分比（%） 取值范围：1\~100 默认值：10%                                                                                                                                                                                                                                                                                                           |
   | 线程池队列大小 | thread_pool.force_merge.size | 控制force_merge操作的线程池队列大小。 取值范围：正整数 默认值：1                                                                                                                                                                                                                                                                                                                                                                |
   | 自定义     | -                            | 单击"新增参数"，添加或修改Elasticsearch支持的参数。 警告： 自定义参数必须配置为Elasticsearch支持的参数，否则集群重启会失败，建议谨慎操作，以免影响业务。                                                                                                                                                                                                                                                                                                             |
      
   
6. 修改完成后，单击"保存"，在弹窗中确认参数无误后勾选重启提示，单击"确定"。 当下方的参数配置任务列表显示"作业状态"为"成功"时，表示修改保存成功。
   
7. 在页面右上角单击"重启"，集群将重启以使配置更改生效。
8. 重启完成后，在集群列表确认"集群状态"为"可用"，表示参数已生效。
 
#### 修改Kibana配置（kibana.yml）
修改Kibana可视化平台的运行参数，例如调整会话超时时间、配置缺省跳转页面或修改界面显示语言等。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏，选择"集群管理 \> Elasticsearch"。
3. 在集群列表，单击目标集群名称，进入集群详情页。
4. 选择"集群配置 \> 参数配置 \> Kibana配置"。
5. 单击"编辑"，根据需求修改对应模块的参数值。
   表3模块参数信息说明 
   | 模块名称 | 参数名称                   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   |:---|:---|:---|
   | 基础路径 | server.basePath        | 自定义Base Path的参数值。 当需要通过反向代理（如Nginx）访问Kibana时，此参数值将会作为一个子路径跟在代理地址后面。例如反向代理的地址是"http://example.com"，"server.basePath"是"/test"，则通过地址"http://example.com/test"即可访问Kibana。 取值范围： - 必须以"/"开头。  - 不能有连续的斜杠（如"//"）。  - 只能包含字母、数字、短横线"-"、下划线"_"、点"."和"/"。  - 允许多层路径，但长度不能超过254字符。  - 不能以"/"结尾。   |
   | 基础路径 | server.rewriteBasePath | 指定由Kibana还是反向代理移除请求路径中server.basePath前缀。 可选配置，如果没有使用反向代理访问Kibana的需求，则忽略此参数。 取值范围： - true，表示Kibana会自动移除请求路径中的server.basePath前缀。  - false，表示需要由反向代理（如Nginx）来移除请求路径中的server.basePath前缀。此时只能通过反向代理访问Kibana。   默认值是false，只有版本号不低于6.5.4的Elasticsearch集群支持修改默认值。                                                                                                                                                                                                                                                                                                                                           |
   | 自定义  | -                      | 单击"新增参数"，添加或修改Kibana支持的参数。 警告： 自定义参数必须配置为Kibana支持的参数，否则Kibana进程重启会失败，建议谨慎操作。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      
   
6. 修改完成后，单击"保存"，在弹窗中确认参数无误后勾选重启提示，单击"确定"。修改Kibana配置会自动重启Kibana进程，该操作会短暂影响Kibana访问，请稍后重试。 当下方的参数配置任务列表显示"作业状态"为"成功"时，表示参数已生效。
   
 
#### 修改系统配置（system.config）
![](https://support.huaweicloud.com/usermanual-css/public_sys-resources/caution_3.0-zh-cn.png)
仅当Elasticsearch集群版本号为7.10.2时，才支持修改"system.config"。
修改系统配置参数，在"elasticsearch.yml"配置文件的同级目录下生成或修改"descriptor.xml"文件。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏，选择"集群管理 \> Elasticsearch"。
3. 在集群列表，单击目标集群名称，进入集群详情页。
4. 选择"集群配置 \> 参数配置 \> 系统配置"。
5. 单击"编辑"，在"系统配置"模块输入"descriptor.xml"文件内容。 文件内容大小不超过100KB（102400字节/字符，含换行符）。
   
6. 修改完成后，单击"保存"，在弹窗中确认参数无误后勾选重启提示，单击"确定"。 当下方的参数配置任务列表显示"作业状态"为"成功"时，表示修改保存成功。
   
7. 在页面右上角单击"重启"，集群将重启以使配置更改生效。
8. 重启完成后，在集群列表确认"集群状态"为"可用"，表示"descriptor.xml"文件已生效。
 
#### 相关文档
- 修改参数后需重启集群使配置生效，操作指导请参见[重启集群](https://support.huaweicloud.com/usermanual-css/css_01_0014.html)。
- 更多Elasticsearch支持的参数，请参见[Elasticsearch官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/index.html)。
- 更多Kibana支持的参数，请参见[Kibana官方文档](https://www.elastic.co/guide/en/kibana/current/settings.html)。
 
#### 常见问题
- **问题1：修改参数后集群状态显示"配置错误"怎么办？**
  "配置错误"表示修改的参数配置文件存在不合法的参数值。请在参数配置任务列表中查看具体的错误信息，根据提示修正参数值后重新保存并重启。如果是自定义参数导致的错误，请确认该参数是否为对应组件官方支持的参数。
  
- **问题2：修改参数后忘记重启，会有什么影响？**
  - 修改"elasticsearch.yml"和"system.config"参数后未重启集群时，配置不会生效，集群仍使用旧配置运行。集群列表的"任务状态"栏会显示"配置未更新"提醒。建议在修改参数后及时重启集群。
  
  - 修改"kibana.yml"参数会自动重启Kibana进程无需重启集群，进程重启成功配置立即生效。
   
 
