当前位置: 首页 > news >正文

AWS云上Quickwit部署指南与成本分析

1. Quickwit简介与部署方案概述

Quickwit是一个云原生的分布式搜索引擎,专为日志分析和搜索场景设计。在AWS云环境中,主要有三种部署方式:

  • EC2实例部署:传统虚拟机部署方式,适合中小规模场景
  • EKS集群部署:基于Kubernetes的容器化部署,适合大规模生产环境
  • 托管服务部署:使用Elest.io等托管服务,简化运维管理

在AWS云上安装配置Quickwit,可以设置S3存储桶作为对象存储,并将Quickwit部署在EC2实例,EKS集群或者使用托管服务上,比如Elest.io。
将Quickwit安装在EC2上,需要设置S3存储桶、配置IAM权限和在EC2上安装配置Quickwit,最后启动Quickwit服务。
将Quickwit带Helm安装在EKS上,需要设置S3存储桶、配置IAM权限、安装Kubernetes和Helm和使用Quickwit Helm chart来安装这个服务。

2. EC2实例部署方案

2.1 设置S3存储桶

# 创建S3存储桶
aws s3 mb s3://quickwit-data-bucket --region us-west-2# 配置存储桶策略
cat > bucket-policy.json << EOF
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"AWS": "arn:aws:iam::ACCOUNT-ID:role/QuickwitEC2Role"},"Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject","s3:ListBucket"],"Resource": ["arn:aws:s3:::quickwit-data-bucket","arn:aws:s3:::quickwit-data-bucket/*"]}]
}
EOFaws s3api put-bucket-policy --bucket quickwit-data-bucket --policy file://bucket-policy.json

2.2 配置IAM权限

创建IAM角色和策略:

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

2.3 安装配置Quickwit

启动EC2实例(推荐使用Amazon Linux 2023):

# 安装Quickwit
curl -L https://install.quickwit.io | sh
sudo mv quickwit-*/quickwit /usr/local/bin/# 创建配置文件
mkdir -p /etc/quickwit
cat > /etc/quickwit/quickwit.yaml << EOF
cluster_id: quickwit-cluster
node_id: quickwit-node-1metastore_uri: s3://quickwit-data-bucket/indexesrest_listen_port: 7280
grpc_listen_port: 7281s3:region: us-west-2endpoint: nullindexer:max_concurrent_split_uploads: 10searcher:max_num_concurrent_searches: 20
EOF

2.4 启动Quickwit服务

创建systemd服务:

cat > /etc/systemd/system/quickwit.service << EOF
[Unit]
Description=Quickwit Search Engine
After=network.target[Service]
Type=simple
User=quickwit
Group=quickwit
ExecStart=/usr/local/bin/quickwit run
WorkingDirectory=/var/lib/quickwit
Restart=always
RestartSec=5[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload
systemctl enable quickwit
systemctl start quickwit

3. EKS集群部署方案

3.1 设置S3存储桶

# 创建S3存储桶
aws s3 mb s3://quickwit-eks-data --region us-west-2

3.2 配置IAM权限

创建IAM OIDC提供商和ServiceAccount:

# 创建IAM策略
aws iam create-policy \--policy-name QuickwitS3Access \--policy-document file://quickwit-s3-policy.json# 创建ServiceAccount
eksctl create iamserviceaccount \--name quickwit-serviceaccount \--namespace quickwit \--cluster my-cluster \--attach-policy-arn arn:aws:iam::ACCOUNT-ID:policy/QuickwitS3Access \--approve \--override-existing-serviceaccounts

3.3 安装Kubernetes和Helm

# 安装eksctl
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin# 创建EKS集群
eksctl create cluster \--name quickwit-cluster \--version 1.28 \--region us-west-2 \--nodegroup-name workers \--node-type m5.large \--nodes 3 \--nodes-min 1 \--nodes-max 5# 安装Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

3.4 使用Helm Chart安装Quickwit

# 添加Quickwit Helm仓库
helm repo add quickwit https://helm.quickwit.io
helm repo update# 创建values.yaml配置文件
cat > values.yaml << EOF
global:image:repository: quickwit/quickwittag: latestsearcher:replicas: 2resources:requests:memory: "2Gi"cpu: "500m"limits:memory: "4Gi"cpu: "1000m"indexer:replicas: 2resources:requests:memory: "2Gi"cpu: "500m"limits:memory: "4Gi"cpu: "1000m"metastore:uri: "s3://quickwit-eks-data/indexes"s3:region: us-west-2serviceAccount:create: truename: quickwit-serviceaccount
EOF# 安装Quickwit
helm install quickwit quickwit/quickwit -f values.yaml --namespace quickwit --create-namespace

4. 托管服务部署(Elest.io)

4.1 部署步骤

  1. 访问Elest.io控制台

    • 注册账户并登录管理面板
  2. 创建Quickwit集群

    • 选择Quickwit服务模板
    • 配置集群规格(CPU、内存、存储)
    • 选择AWS区域
  3. 配置存储

    • 设置S3存储桶连接
    • 配置访问密钥和权限
  4. 网络配置

    • 设置VPC和子网
    • 配置安全组规则
  5. 部署和验证

    • 启动部署过程
    • 验证服务状态和连通性

5. 成本计算方法

5.1 EC2部署成本计算

硬件成本:

  • EC2实例:根据实例类型计算(如m5.large = $0.096/小时)
  • EBS存储:根据存储类型和容量计算(如gp3 = $0.08/GB-月)

网络成本:

  • 数据传输:$0.09/GB(出站数据)
  • S3请求:$0.005/1000次请求

示例计算(月成本):

EC2实例 (m5.large): $0.096 × 730 = $70.08
EBS存储 (100GB gp3): $0.08 × 100 = $8.00
数据传输 (100GB): $0.09 × 100 = $9.00
S3存储 (500GB): $0.023 × 500 = $11.50
S3请求 (1M次): $0.005 × 1000 = $5.00
总计: $103.58/月

5.2 EKS部署成本计算

集群管理成本:

  • EKS控制平面:$0.10/小时 = $73.00/月
  • EC2工作节点:根据实例类型和数量计算
  • ELB负载均衡器:$0.0225/小时 + $0.008/GB处理数据

存储成本:

  • EBS卷:$0.08-0.12/GB-月
  • S3存储:$0.023/GB-月

示例计算(3节点集群):

EKS控制平面: $73.00
EC2节点 (3×m5.large): $70.08 × 3 = $210.24
EBS存储 (300GB): $0.08 × 300 = $24.00
S3存储 (1TB): $0.023 × 1024 = $23.55
ELB (1个): $16.20 + $5.00数据传输
总计: $351.99/月

5.3 Elest.io托管服务成本

定价模型:

  • 基于资源使用量(vCPU、内存、存储)
  • 通常包含技术支持和管理服务费

示例定价:

基础套餐 (4vCPU, 16GB内存, 100GB存储): $200/月
额外存储 (每100GB): $15/月
数据传输: 按实际使用计费
技术支持: 包含或额外收费

5.4 成本优化建议

  1. 选择合适的实例类型

    • 计算密集型:C系列实例
    • 内存密集型:R系列实例
    • 通用型:M系列实例
  2. 利用预留实例

    • 1年预留节省30-40%
    • 3年预留节省50-60%
  3. 存储优化

    • 使用S3智能分层
    • 实施数据生命周期策略
    • 压缩索引数据
  4. 自动扩缩容

    • 基于负载自动调整节点数量
    • 使用Spot实例降低成本

6. 部署方案比较

特性EC2部署EKS部署Elest.io托管
部署复杂度中等
运维负担中等
扩展性有限
成本控制灵活灵活固定
适合场景中小规模大规模生产快速部署
http://www.dtcms.com/a/512104.html

相关文章:

  • ziplist、quicklist、listpack之间的区别
  • 1.序列式容器-vectorlist
  • 长沙外贸建站用spl做网站
  • 无锡网站建设818gxwordpress 迁移 域名
  • 使用beautifulSoup提取信息
  • 一种独特机理驱动的化学反应分类器详解
  • 南京佛搜做网站公司wordpress支付宝支付
  • C++ 多态:面向对象编程中的灵活性与扩展性
  • 微信公众号内嵌网站开发做团购的的网站有哪些
  • 当前非英语国家中出现的“去英语化”趋势
  • CR后的反思、编辑表格实现
  • MyBatis-Plus黑马
  • 网站建设需要几个部门网站首页布局设计
  • C语言基础入门--指针
  • 計組-中斷與子程序調用的區別
  • 做牛津布面料在哪个网站找客户八大员继续教育入口
  • SD-WAN是什么?与MPLS,MSTP,IPSEC,SSL 有什么区别?
  • 【操作系统】408操作系统核心考点精讲:宏内核、微内核与外核架构全解析​
  • EXCEL文本数字如何批量转换为数字
  • Linux 文件权限深度解析:从原理到实战管理
  • SpringMVC 数据校验和BindingResult以及自定义校验注解
  • [明道云专栏·里程碑] 从第一篇到第一百篇:这是一场属于“低代码实战者”的长跑
  • Ubuntu 安装 Harbor
  • 网站屏蔽ip地址河南网站备案系统短信
  • 中科院网站做的好的院所双鸭山网站建设公司
  • Linux配置Samba文件共享并访问Windows文件
  • Cursor配置markdown转Word的MCP工具教程
  • 常见springboot相关注解
  • ◆comfyUI教程◆第2章13节 XL模型专用工作流与refiner精炼
  • PostIn V1.3.1版本发布,新增在线更新程序命令,新增请求体json支持引用变量