Quickwit项目在AWS上的集群部署指南

Quickwit项目在AWS上的集群部署指南

quickwit Sub-second search & analytics engine on cloud storage quickwit 项目地址: https://gitcode.com/gh_mirrors/qu/quickwit

前言

Quickwit作为一款高性能的分布式搜索和分析引擎,在AWS云环境中的部署需要特别注意几个关键配置环节。本文将详细介绍在AWS上部署Quickwit集群的完整流程,帮助开发者避免常见错误,确保集群顺利运行。

AWS凭证配置

Quickwit节点启动时,会按照以下顺序自动查找AWS凭证:

  1. 环境变量:优先检查AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN(可选)环境变量

  2. 凭证配置文件:默认查找~/.aws/credentials文件,也可以通过AWS_SHARED_CREDENTIALS_FILEAWS_PROFILE环境变量指定其他位置

  3. ECS容器凭证:如果设置了AWS_CONTAINER_CREDENTIALS_RELATIVE_URI环境变量,会从ECS容器获取凭证

  4. EC2实例配置文件:在EC2实例上运行时,会通过EC2元数据服务获取凭证

重要提示:如果凭证链中找不到有效凭证,Quickwit将返回错误。建议在部署前使用AWS CLI验证凭证是否有效。

AWS区域设置

Quickwit确定AWS区域的优先级如下:

  1. 环境变量(先检查AWS_REGION,然后是AWS_DEFAULT_REGION

  2. 配置文件(默认~/.aws/config,可通过AWS_CONFIG_FILE环境变量覆盖)

  3. EC2实例元数据服务(自动获取当前EC2实例所在区域)

  4. 默认回退值:us-east-1

性能注意:AWS凭证或区域解析可能需要几秒钟时间,特别是在EC2实例元数据服务响应较慢或不可用时。

IAM权限管理

S3存储桶权限

Quickwit需要以下S3操作权限:

  • ListBucket(直接针对存储桶)
  • GetObject
  • PutObject
  • DeleteObject
  • ListMultipartUploadParts
  • AbortMultipartUpload

示例IAM策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::my-bucket"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": ["arn:aws:s3:::my-bucket/*"]
    }
  ]
}

验证命令:

MY_BUCKET=<bucket name>
aws s3 ls $MY_BUCKET
echo "Hello, World!" | aws s3 cp - $MY_BUCKET/hello
aws s3 ls $MY_BUCKET/hello
aws s3 cp $MY_BUCKET/hello -
aws s3 rm $MY_BUCKET/hello

Kinesis流权限

使用Kinesis数据流时需要以下权限:

  • GetRecords
  • GetShardIterator
  • ListShards

验证命令:

MY_STREAM=<my stream name>
SHARD_ID=$(aws kinesis list-shards --stream-name $MY_STREAM | jq -r .Shards[0].ShardId)
SHARD_ITERATOR=$(aws kinesis get-shard-iterator --stream-name $MY_STREAM \
                                               --shard-id $SHARD_ID \
                                               --shard-iterator-type TRIM_HORIZON \
                          | jq -r .ShardIterator)
aws kinesis get-records --shard-iterator $SHARD_ITERATOR | jq -r .Records[0]

网络配置

安全组设置

Quickwit节点间通信需要开放以下端口:

  1. UDP端口:用于集群成员发现和健康检查
  2. TCP端口1:用于节点间RPC通信
  3. TCP端口2:用于HTTP API访问

最佳实践:建议为Quickwit集群创建专用的安全组,仅允许集群内部节点间的这些端口通信,同时根据实际需要限制管理API的访问来源。

常见错误排查

  1. 凭证错误

    Command failed: Another error occurred. `Metastore error`. Cause: `StorageError(kind=Unauthorized, source=failed to fetch object: s3://quickwit-dev/my-hdfs/metastore.json)`
    

    解决方案:检查AWS凭证是否正确配置,确保具有足够的权限。

  2. 区域错误

    Command failed: Another error occurred. `Metastore error`. Cause: `StorageError(kind=Internal, source=failed to fetch object: s3://your-bucket/your-index/metastore.json)`.
    

    解决方案:确认AWS区域设置是否正确,存储桶是否存在于指定区域。

  3. 网络连接问题: 如果节点无法互相发现或通信,检查安全组规则是否允许必要的端口通信,同时确认VPC配置是否正确。

部署后验证

成功部署后,建议进行以下验证:

  1. 检查所有节点日志,确认无错误信息
  2. 验证节点间网络连通性
  3. 测试基本的索引创建和搜索功能
  4. 监控系统资源使用情况,确保配置足够

通过以上步骤,您应该能够在AWS环境中成功部署和运行Quickwit集群。如果在部署过程中遇到任何问题,可以参考官方文档或社区资源获取更多帮助。

quickwit Sub-second search & analytics engine on cloud storage quickwit 项目地址: https://gitcode.com/gh_mirrors/qu/quickwit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时飞城Herdsman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值