带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(8)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(8)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.1.Elastic Stack 安装部署——3.4.1.8. ECK 安装(7) https://developer.aliyun.com/article/1231274


部署 Hot-Warm 架构 Elasticsearch 集群 和 Cerebro

 

定义一个 Elasticsearch 类型的资源文件部署一个冷热分离的 Elasticsearch 集群:

 

l 3 个 Master 节点,不存储数据,负责集群元数据的管理,集群范围的操作(创建或删除索引,跟踪集群节点,分片分配等等)。Master 节点因为没有读写数据的压力,因此选择最便宜的高效云盘。

l 3 个 Hot 节点,新的数据都会首先写入 Hot 节点,承受较大的读写压力,选择使用读写性能最好的 ESSD 硬盘。

l 3 个 Warm 节点,选择读写性能稍差的 SSD 硬盘。

l 3 个 Cold 节点,选择最便宜的高效云盘。


apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: hot-warm-elasticsearch
spec:
  #禁用 https
  http:
    tls:
      selfSignedCertificate:
        disabled: true
  version: 7.14.0
  nodeSets:
  #master 节点
  - name: master
    count: 3
    config:
      node.roles: ["master"]
    podTemplate:
      spec:
        containers:
        - name: elasticsearch
          resources:
            #限制资源使用
            limits:
              memory: 1Gi
              cpu: 1
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 20Gi
        storageClassName: alicloud-disk-efficiency #挂载高效云盘
  # hot 节点
  - name: hot
    count: 3
    config:
      node.attr.data: hot #节点属性
      node.roles: ["data","ingest"]
podTemplate:
      spec:
        containers:
        - name: elasticsearch
          resources:
            limits:
              memory: 2Gi
              cpu: 2
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 20Gi
        storageClassName: alicloud-disk-essd #挂载 ESSD
  # warm 节点
  - name: warm
    count: 3
    config:
      node.attr.data: warm #节点属性
      node.roles: ["data","ingest"]
    podTemplate:
      spec:
        containers:
        - name: elasticsearch
          resources:
            limits:
              memory: 2Gi
              cpu: 1
    volumeClaimTemplates:
- metadata:
        name: elasticsearch-data
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 60Gi
        storageClassName: alicloud-disk-ssd  #挂载 SSD
  # cold 节点
  - name: cold
    count: 3
    config:
      node.attr.data: cold #节点属性
      node.roles: ["data","ingest"]
    podTemplate:
      spec:
        containers:
        - name: elasticsearch
          resources:
            limits:
              memory: 2Gi
              cpu: 1
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 100Gi
        storageClassName: alicloud-disk-efficiency  #挂载高效云盘

为了方便我们观察索引在节点上的迁移情况,这里额外安装了 Cerebro,在 Cerebro 上可以很直观地看到索引在每个节点的分布情况。由于通过 ECK 安装的 Elasticsearch 默认都使用了自签名证书来进行 HTTPS 加密,而 Cerebro 默认只能连接受信任的 HTTPS 或者 HTTP 站点,因此我们在定义 Elasticsearch 资源文件时选择禁用 HTTPS,让 Cerebro 通过 HTTP 访问 Elasticsearch 集群。


apiVersion: apps/v1
kind: Deployment
metadata:
  name: cerebro
  labels:
    app: cerebro
spec:
  replicas: 1
  selector:
    matchLabels:
      app: cerebro
  template:
    metadata:
      labels:
        app: cerebro
    spec:
      containers:
      - name: cerebro
        image: lmenezes/cerebro:0.9.4
        ports:
        - containerPort: 9000

使用以下命令应用本实验的资源文件:

 

kubectl apply -f hot-warm/

查看创建的相关 Pod:


❯ kubectl get pod
NAME                                  READY   STATUS    RESTARTS   AGE
cerebro-99484576f-pwx85               1/1     Running   0          6h19m
hot-warm-elasticsearch-es-cold-0      1/1     Running   0          113s
hot-warm-elasticsearch-es-cold-1      1/1     Running   0          112s
hot-warm-elasticsearch-es-cold-2      1/1     Running   0          112s
hot-warm-elasticsearch-es-hot-0       1/1     Running   0          113s
hot-warm-elasticsearch-es-hot-1       1/1     Running   0          113s
hot-warm-elasticsearch-es-hot-2       1/1     Running   0          113s
hot-warm-elasticsearch-es-master-0    1/1     Running   0          113s
hot-warm-elasticsearch-es-master-1    1/1     Running   0          113s
hot-warm-elasticsearch-es-master-2    1/1     Running   0          113s
hot-warm-elasticsearch-es-warm-0      1/1     Running   0          113s
hot-warm-elasticsearch-es-warm-1      1/1     Running   0          113s
hot-warm-elasticsearch-es-warm-2      1/1     Running   0          113s
hot-warm-kibana-kb-7d5747887d-n8dzd   1/1     Running   0          82s

开启端口转发,将 Kibana 和 Cerebro 的服务转发到本地,方便我们访问。

 

kubectl port-forward pod/cerebro-99484576f-pwx85 9000
kubectl port-forward service/hot-warm-kibana-kb-http 5601

获取 elastic 用户密码:


PASSWORD=$(kubectl get secret hot-warm-elasticsearch-es-elastic-user \
-o go-template='{{.data.elastic | base64decode}}')
echo $PASSWORD
#elastic 用户密码
js373o37ZKu3DKDo69co97Ds

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.1.Elastic Stack 安装部署——3.4.1.8. ECK 安装(9) https://developer.aliyun.com/article/1231272

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
12月前
|
Kubernetes API 容器
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(2)
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(2)
108 0
|
12月前
|
存储 负载均衡 索引
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(21)
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(21)
|
12月前
|
存储 数据安全/隐私保护 索引
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(13)
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(13)
114 0
|
12月前
|
运维 负载均衡 监控
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(18)
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(18)
|
12月前
|
Kubernetes API 索引
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(16)
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(16)
163 0
|
12月前
|
网络协议
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(22)
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(22)
|
12月前
|
存储 Kubernetes 固态存储
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(5)
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(5)
117 0
|
12月前
|
容器 Perl
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(19)
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(19)
112 1
|
12月前
|
Kubernetes Linux 容器
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(3)
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(3)
107 0
|
12月前
|
数据安全/隐私保护
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(24)
带你读《Elastic Stack 实战手册》之15:——3.4.1.8. ECK 安装(24)
101 0