-
CSS权限 默认情况下,CSS服务管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 CSS是项目级服务,部署时通过物理区域划分,需要在各区域(如华北-北京1)对应的项目(cn-north-1)中设置策略,并且该策略仅对此项目生效,如果需要所有区域都生效,则需要在所有项目都设置策略。访问CSS时,需要先切换至授权区域。 根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:CSS服务管理员能够控制IAM用户仅能对某一类云服务器资源进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,CSS服务支持的API授权项请参见权限策略和授权项。 如表1所示,包括了CSS的所有系统权限。 对于CSS Administrator,由于各服务之间存在业务交互关系,CSS的角色依赖其他服务的角色实现功能。因此给用户授予CSS的角色时,需要同时授予依赖的角色,CSS的权限才能生效。 对于CSS FullAccess和CSS ReadOnlyAccess,可使用这些策略来控制对云服务资源的访问范围。例如,您的员工中有负责软件开发的人员,您希望这类员工拥有CSS的使用权限,但是不希望这类员工拥有删除CSS等高危操作的权限,那么您可以使用IAM为开发人员创建IAM用户,通过授予仅能使用CSS但不允许删除CSS的权限,控制员工对CSS资源的使用范围。 表1 CSS系统权限 系统角色/策略名称 类别 权限描述 依赖关系 CSS Administrator 系统角色 CSS服务的所有执行权限。 该角色有依赖,需要在同项目中勾选依赖的Tenant Guest、Server Administrator和IAM ReadOnlyAccess角色。 终端节点访问集群操作需要依赖VPCEndpoint Administrator系统角色。 使用CES监控功能时需要依赖CES Administrator系统角色。 部分操作依赖如下授权项: 查看委托列表 iam:agencies:listAgencies iam:permissions:listRolesForAgency iam:permissions:listRolesForAgencyOnProject 自动创建委托 iam:agencies:listAgencies iam:agencies:createAgency iam:permissions:grantRoleToAgency 控制台显示企业项目和预定义标签 eps:enterpriseProjects:list tms:predefineTags:list 快照、词库、日志管理功能使用 obs:bucket:Get* obs:bucket:List* obs:object:List* obs:object:Get* obs:bucket:HeadBucket obs:object:PutObject obs:object:DeleteObject 包年/包月订单创建及支付 bss:order:update bss:order:pay 更多与订单相关操作所需要的授权项请见费用中心细粒度策略。 CSS FullAccess 系统策略 基于策略授权的CSS服务的所有权限,拥有该权限的用户可以完成基于策略授权的CSS服务的所有执行权限。 该策略部分权限有依赖,如果要使用对应的功能,需要在同项目中勾选依赖的权限。 CSS ReadOnlyAccess 系统策略 CSS服务的只读权限,拥有该权限的用户仅能查看CSS服务数据。 该策略部分权限有依赖,如果要使用对应的功能,需要在全局服务中勾选依赖的权限。 部分操作依赖如下授权项: 查看委托列表 iam:agencies:listAgencies iam:permissions:listRolesForAgency iam:permissions:listRolesForAgencyOnProject 控制台显示企业项目和预定义标签 eps:enterpriseProjects:list tms:predefineTags:list 快照、词库、日志管理功能使用 obs:bucket:Get* obs:bucket:List* obs:object:List* obs:object:Get* obs:bucket:HeadBucket 如表2所示列出了CSS常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表2 常用操作与系统权限的关系 操作 CSS FullAccess CSS ReadOnlyAccess CSS Administrator 备注 创建集群 √ x √ - 查询集群列表 √ √ √ - 查询集群详情 √ √ √ - 删除集群 √ x √ - 重启集群 √ x √ - 扩容集群 √ x √ - 扩容实例的数量和存储容量 √ x √ - 查询指定集群的标签 √ √ √ - 查询所有标签 √ √ √ - 加载自定义词库 √ x √ 依赖OBS和IAM权限 查询自定义词库状态 √ √ √ - 删除自定义词库 √ x √ - 自动设置集群快照的基础配置 √ x √ 依赖OBS和IAM权限 修改集群快照的基础配置 √ x √ 依赖OBS和IAM权限 设置自动创建快照策略 √ x √ - 查询集群的自动创建快照策略 √ √ √ - 手动创建快照 √ x √ - 查询快照列表 √ √ √ - 恢复快照 √ x √ - 删除快照 √ x √ - 停用快照功能 √ x √ - 更改规格 √ x √ - 缩容集群 √ x √ -
-
什么是
云搜索服务 云搜索 服务(Cloud Search Service,简称
CS S)是一个基于Elasticsearch、OpenSearch且完全托管的在线分布式搜索服务,为用户提供结构化、非结构化文本、以及基于AI向量的多条件检索、统计、报表。云搜索服务是华为云ELK生态的一系列软件集合,为您全方位提供托管的ELK生态云服务,兼容Elasticsearch、Logstash、Kibana、Cerebro等软件。 Elasticsearch和OpenSearch Elasticsearch、OpenSearch是开源搜索引擎,可以实现单机和集群部署,并提供托管的分布式搜索引擎服务。在ELK整个生态中,Elasticsearch集群支持结构化、非结构化文本的多条件检索、统计、报表。Elasticsearch搜索引擎相关内容的深入介绍可参见《Elasticsearch:权威指南》。OpenSearch搜索引擎相关内容的深入介绍可参见《OpenSearch Documentation》。 云搜索服务支持自动部署,快速创建Elasticsearch集群和OpenSearch集群,免运维,内置搜索调优实践;拥有完善的监控体系,提供一系列系统、集群以及查询性能等关键指标,让用户更专注于业务逻辑的实现。 云搜索服务的Elasticsearch和OpenSearch集群支持通过Kibana、OpenSearch Dashboard和Cerebro访问。如果是对集群数据进行深入分析和可视化,建议选择Kibana,它提供了丰富的可视化工具和强大的数据分析能力;如果是对集群进行管理和监控,建议选择Cerebro,它能够提供直观的集群状态视图和便捷的管理功能。 Logstash Logstash是一个开源数据收集引擎,具有实时管道功能。在ELK整个生态中,Logstash承担着数据接入的重要功能,可以动态地将来自不同数据源的数据统一起来,进行标准化的转换,然后将数据发送到指定的位置。 云搜索服务支持快速创建Logstash集群,云搜索服务的Logstash是一款全托管的数据接入处理服务,100%兼容开源Logstash的能力。在生产系统中,数据会以各种各样的形式,或分散或集中地存在于很多系统中。云搜索服务的Logstash能够轻松地帮助您处理各种来源的数据并转储到云搜索服务的Elasticsearch中,从而更加方便地发现其中的价值。同时您也可以单独使用Logstash云服务处理数据发送到其他的系统中。
-
产品功能 开源兼容 兼容开源Elasticsearch和OpenSearch软件原生接口,并支持Logstash、Beats、Kibana等周边生态。 接入多种数据源 无缝对接FTP/OBS/Hbase/Kafka等多种数据源,仅需简单配置,无需编程。 一键化操作 一键申请集群、一键扩容、一键重启,从小规模测试到大规模上线,所有主要操作都是一键可达。 灵活词库管理 支持自定义词库与拼音分词,支持词库热更新,无需重启,配置即生效。 自定义快照策略 支持用户触发以及定时触发的快照备份能力,支持恢复到本集群以及其他集群的能力,随时恢复误删数据或者迁移数据到新的搜索集群。
-
访问方式 公有云提供了Web化的服务管理平台,即管理控制台和基于HTTPS请求的API(Application programming interface)管理方式。 API方式 如果用户需要将公有云平台上的云搜索服务集成到第三方系统,用于二次开发,请使用API方式访问云搜索服务,具体操作请参见《云搜索服务API参考》。 控制台方式 其他相关操作,请使用管理控制台方式访问云搜索服务。如果用户已注册公有云,可直接登录管理控制台,在服务列表搜索“云搜索服务”。如果未注册,请单击右上方“注册”,根据界面提示填写用户基本信息,然后单击“同意协议并注册”完成管理控制台用户注册。
-
入门实践 云搜索服务为您提供各种业务场景、方案架构的最佳实践,方便您根据自身的业务场景选择合适的实践方案。 表1 常用最佳实践 实践场景 描述 数据迁移 通过华为云Logstash实现Elasticsearch集群间数据迁移 华为云Logstash是一款全托管的数据接入处理服务,兼容开源Logstash的能力,支持用于Elasticsearch集群间数据迁移。通过华为云Logstash可以实现华为云Elasticsearch、自建Elasticsearch或第三方Elasticsearch迁移至华为云Elasticsearch。 通过备份与恢复实现Elasticsearch集群间数据迁移 通过备份与恢复实现华为云Elasticsearch集群间数据迁移:仅适用于源集群和目标集群都是CSS服务的集群,且依赖
对象存储服务 OBS。 通过S3插件备份与恢复迁移自建Elasticsearch集群至华为云:通过S3插件可以实现自建Elasticsearch集群和华为云Elasticsearch集群之间的数据迁移。 通过备份与恢复迁移第三方Elasticsearch集群至华为云:适用于第三方Elasticsearch集群和华为云Elasticsearch集群之间的数据迁移,依赖存储仓库。 通过读写分离插件实现华为云Elasticsearch集群间数据迁移 通过CSS服务的读写分离插件可以实现Elasticsearch集群间的索引数据近实时同步,仅适用于源集群和目标集群都是CSS服务的集群。 通过
CDM 服务实现Elasticsearch集群间数据迁移 Elasticsearch整库迁移到云搜索服务:通过华为云提供的云迁移工具CDM,实现不同云服务间的集群迁移能力。 华为云Elasticsearch集群迁移至OpenSearch集群 升级Elasticsearch集群版本:通过CSS服务的跨引擎升级功能进行数据迁移,适用于CSS服务的Elasticsearch 7.10.2升级至OpenSearch 1.3.6。 数据库数据迁移至Elasticsearch集群 使用DRS从数据库导入数据至Elasticsearch:适用于将MySQL数据库中的数据同步到Elasticsearch集群中。一般用于集群间的数据增量迁移,在数据同步后集群随时可割接,较其他增量迁移更加方便灵活。 接入集群 Elasticsearch集群访问方式 Elasticsearch集群提供多种访问方式,包括Kibana、Cerebro、Curl命令、Java客户端、Python客户端、Go客户端和
MRS Hive客户端。 OpenSearch集群访问方式 OpenSearch集群提供多种访问方式,包括Kibana、Cerebro、Curl命令。 优化集群性能 优化Elasticsearch和OpenSearch集群写入性能 集群在使用前,建议参考本实践进行集群的写入性能优化,便于提高集群的写入性能,提升使用效率。 优化Elasticsearch和OpenSearch集群查询性能 集群在使用前,建议参考本实践进行集群的查询性能优化,便于提高集群的查询性能,提升使用效率。 加速关系型数据库查询 使用Elasticsearch加速关系型数据库的查询分析 关系型数据库(例如MySQL)受限于全文检索和Ad Hoc查询能力,因此会将Elasticsearch作为关系型数据库的补充,以此提升数据库的全文检索能力和高并发的Ad Hoc查询能力。 构建日志管理平台 使用Elasticsearch和Logstash构建日志管理平台 使用云搜素服务搭建的统一日志管理平台可以实时地、统一地、方便地管理日志,让日志驱动运维、运营等,提升服务管理效率。 自定义规则排序搜索 使用Elasticsearch自定义规则排序搜索结果 本实践为您介绍如何对搜索匹配的文档进行自定义评分。
-
操作流程 以下是使用Elasticsearch集群完成数据搜索的操作步骤。 开始迁移数据前,请务必按准备工作指导完成必要操作。 步骤一:创建集群:创建一个Elasticsearch非安全集群用于搜索数据。 步骤二:登录Kibana:登录Kibana,访问集群。 步骤三:创建索引:在Kibana中给集群创建索引。 步骤四:导入数据:在Kibana中使用开源Elasticsearch API导入数据。 步骤五:搜索数据:在Elasticsearch集群中对数据进行全文检索和聚合结果显示。 步骤六:删除索引:当不再使用对应的索引数据时,可以删除对应索引节约资源。
-
步骤二:登录Kibana 集群创建成功后,通过Kibana访问Elasticsearch集群。 在Elasticsearch集群列表,选择已创建的“Sample-ESCluster”集群,单击操作列中的“Kibana”进入Kibana控制台。 在Kibana的左侧导航中选择“Dev Tools”,进入Console界面。 Console左侧区域为输入框,输入框右侧的三角形为执行命令按钮,Console右侧为结果输出区域。 图5 Console界面
-
场景描述 某女装品牌在网上经营电商业务,以前使用传统数据库来为用户提供商品搜索功能,但随着用户数量和业务的增长,使用传统数据库的弊端愈来愈明显。主要问题表现为响应速度慢、准确性低。为了改善用户体验从而避免用户流失,该电商网站开始使用云搜索服务为用户提供商品搜索功能,不仅解决了之前使用传统数据库产生的问题,而且实现了用户数量的增长。 假设该电商网站经营商品的数据如下所示: {
"products":[
{"productName":"2017秋装新款文艺衬衫女装","size":"L"}
{"productName":"2017秋装新款文艺衬衫女装","size":"M"}
{"productName":"2017秋装新款文艺衬衫女装","size":"S"}
{"productName":"2018春装新款牛仔裤女装","size":"M"}
{"productName":"2018春装新款牛仔裤女装","size":"S"}
{"productName":"2017春装新款休闲裤女装","size":"L"}
{"productName":"2017春装新款休闲裤女装","size":"S"}
]
}
-
步骤四:导入数据 Elasticsearch集群支持通过多种方式导入数据,本示例选择在Kibana使用开源Elasticsearch API导入数据。 在Kibana中执行如下命令,将数据导入到“my_store”索引中。 POST /my_store/_doc/_bulk
{"index":{}}
{"productName":"2017秋装新款文艺衬衫女装","size":"L"}
{"index":{}}
{"productName":"2017秋装新款文艺衬衫女装","size":"M"}
{"index":{}}
{"productName":"2017秋装新款文艺衬衫女装","size":"S"}
{"index":{}}
{"productName":"2018春装新款牛仔裤女装","size":"M"}
{"index":{}}
{"productName":"2018春装新款牛仔裤女装","size":"S"}
{"index":{}}
{"productName":"2017春装新款休闲裤女装","size":"L"}
{"index":{}}
{"productName":"2017春装新款休闲裤女装","size":"S"} 当返回结果信息中“errors”字段的值为“false”时,表示导入数据成功。
-
步骤三:创建索引 在Elasticsearch集中创建索引,存储数据。 在Kibana中执行如下命令,创建索引“my_store”。 PUT /my_store
{
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"productName": {
"type": "text",
"analyzer": "ik_smart"
},
"size": {
"type": "keyword"
}
}
}
} 返回结果如下所示: {
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "my_store"
}
-
步骤五:搜索数据 在Elasticsearch集群中对数据进行全文检索和聚合结果显示。 全文检索 假设用户进入该电商网站,她想要查找名称包含“春装牛仔裤”的商品信息,可以搜索“春装牛仔裤”。 在Kibana中执行如下搜索命令: GET /my_store/_search
{
"query": {"match": {
"productName": "春装牛仔裤"
}}
} 返回结果如下所示: {
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 4,
"relation" : "eq"
},
"max_score" : 1.7965372,
"hits" : [
{
"_index" : "my_store",
"_type" : "_doc",
"_id" : "9xf6VHIBfClt6SDjw7H5",
"_score" : 1.7965372,
"_source" : {
"productName" : "2018春装新款牛仔裤女装",
"size" : "M"
}
},
{
"_index" : "my_store",
"_type" : "_doc",
"_id" : "-Bf6VHIBfClt6SDjw7H5",
"_score" : 1.7965372,
"_source" : {
"productName" : "2018春装新款牛仔裤女装",
"size" : "S"
}
},
{
"_index" : "my_store",
"_type" : "_doc",
"_id" : "-Rf6VHIBfClt6SDjw7H5",
"_score" : 0.5945667,
"_source" : {
"productName" : "2017春装新款休闲裤女装",
"size" : "L"
}
},
{
"_index" : "my_store",
"_type" : "_doc",
"_id" : "-hf6VHIBfClt6SDjw7H5",
"_score" : 0.5945667,
"_source" : {
"productName" : "2017春装新款休闲裤女装",
"size" : "S"
}
}
]
}
}
Elasticsearch支持IK分词,上面执行命令会将“春装牛仔裤”分词为“春装”和“牛仔裤”。 Elasticsearch支持全文检索,上面执行命令会在所有商品信息中搜索包含“春装”或“牛仔裤”的商品信息。 Elasticsearch与传统数据库不同,它能借助倒排索引在毫秒级返回结果。 Elasticsearch支持评分排序,在上面返回结果中,前两条商品信息中同时出现了“春装”和“牛仔裤”,后两条商品信息中只出现了“春装”,所以前两条比后两条与检索关键词的匹配度更高,分数更高,排序也更靠前。 聚合结果显示 该电商网站可以提供聚合结果显示功能,例如: 对“春装”对应的产品按照尺码分类,统计不同尺码的数量。 在Kibana中执行如下聚合结果命令: GET /my_store/_search
{
"query": {
"match": { "productName": "春装" }
},
"size": 0,
"aggs": {
"sizes": {
"terms": { "field": "size" }
}
}
} 返回结果如下所示: {
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 4,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"sizes" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "S",
"doc_count" : 2
},
{
"key" : "L",
"doc_count" : 1
},
{
"key" : "M",
"doc_count" : 1
}
]
}
}
}
-
准备工作 已
注册华为账号 并开通华为云,进行了实名认证,且在使用云搜索服务前检查账号状态,账号不能处于欠费或冻结状态。 如果您还没有华为账号,请参考以下步骤创建。 打开华为云网站。 在页面右上角单击“注册”,根据提示信息完成注册。 勾选服务条款, 单击“开通”。 实名认证,请参考: 个人账号:实名认证 企业账号:实名认证 已准备好源Elasticsearch集群“Source-ES”和目标Elasticsearch集群“Dest-ES”,且都是单节点的非安全集群。
-
步骤4:启动迁移任务 在Logstash集群启动配置好的迁移任务。 在Logstash集群管理页面,选择已创建的“Sample-Logstash”集群,进入集群基本信息页面。 单击右侧“配置中心”,进入Logstash配置中心界面。 选择状态为“可用”的配置文件,单击“启动”,启动配置任务。管道列表中“事件”列显示配置任务处理的任务数量。 图10 启动配置任务 数据迁移完毕,检查目标Elasticsearch集群和源集群数据的一致性。例如,分别在源集群和目标集群执行GET _cat/indices命令,对比两者的索引信息是否一致。 在Elasticsearch集群管理页面,选择源Elasticsearch集群“Source-ES”或目标Elasticsearch集群“Dest-ES”,单击操作列中的“Kibana”进入Kibana控制台。 在Kibana的左侧导航中选择“Dev Tools”,进入Console界面。 在Console界面,执行如下命令查看索引信息。 GET _cat/indices
-
操作流程 以下是使用Logstash集群将源Elasticsearch集群迁移到目标Elasticsearch集群的操作步骤。 开始迁移数据前,请务必按准备工作指导完成必要操作。 步骤1:获取Elasticsearch集群信息:获取源Elasticsearch集群和目标Elasticsearch集群的访问地址。 步骤2:创建Logstash集群:创建一个Logstash集群用于迁移Elasticsearch集群的数据。 步骤3:配置迁移任务:在Logstash集群配置Elasticsearch集群的迁移任务。 步骤4:启动迁移任务:在Logstash集群启动配置好的迁移任务。 步骤5:停止任务:当数据迁移完成,不再需要迁移任务时,您可以停止任务。 步骤6:删除集群:无需继续使用集群时,可删除集群释放资源。
-
步骤3:配置迁移任务 在Logstash集群配置Elasticsearch集群的迁移任务。 在Logstash集群管理页面,选择已创建的“Sample-Logstash”集群,进入集群基本信息页面。 单击右侧“配置中心”,进入Logstash配置中心界面。 图6 Logstash配置中心界面 在配置中心界面,单击右上角“创建”,进入创建配置文件页面,编辑配置文件。 图7 配置任务 表6 创建配置文件参数说明 参数 说明 取值样例 名称 自定义配置文件名称。 只能包含字母、数字、中划线或下划线,且必须以字母开头。必须大于等于4个字符。 es-es 配置文件内容 展开上方“系统模板”,选择“elasticsearch”,单击操作列的“应用”,在配置文件内容中,基于模板注释填写配置项。 关键配置项请参见表7,其他配置项保持默认值。 隐藏内容列表 配置隐藏字符串列表后,在返回的配置内容中,会将所有在列表中的字串隐藏为“***”。 输入需要隐藏的敏感字串列表,按“Enter”创建。 列表最大支持20条,单个字串最大长度512字节。 不涉及 表7 配置项说明 配置 说明 取值样例 hosts 分别在input和output中填写源Elasticsearch集群和目标Elasticsearch集群的访问地址。获取方式请参见步骤1:获取Elasticsearch集群信息。 input hosts:http://10.62.179.32:9200 output hosts:http://10.62.179.33:9200 user 访问Elasticsearch集群的用户名。仅安全集群涉及,如果是非安全集群则此项使用“#”注释掉。 使用“#”注释掉 password 访问Elasticsearch集群的密码。仅安全集群涉及,如果是非安全集群则此项使用“#”注释掉。 使用“#”注释掉 index 需要迁移的索引信息,可以使用通配符设置。 index* 编辑完成后,单击“下一页”配置Logstash管道参数。 图8 配置管道参数 表8 管道参数说明 参数 说明 取值样例 pipeline.workers 并行执行管道的Filters和Outputs阶段的工作线程数。 4 pipeline.batch.size 单个工作线程在尝试执行其Filters和Outputs之前将从inputs收集的最大事件数,该值较大通常更有效,但会增加内存开销。 125 pipeline.batch.delay 管道事件批处理参数,以指定在将规模较小的事件批次调度至管道工作线程之前,对每个事件的等待时长。 50 query.type 用于事件缓冲的内部队列模型。 “memory”为基于内存的传统队列。 “persisted”为基于磁盘的ACKed持久化队列。 memory 配置完成后,单击“创建”,系统会自动进行配置文件校验,等待配置文件状态为“可用”,表示创建成功。 图9 配置文件校验