配置多节点集群- Elastic Stack 实战手册

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 如何使用Elastic Helm Chart来部署一个多节点的Elasticsearch集群。

970X90.png

· 更多精彩内容,请下载阅读全本《Elastic Stack实战手册》

· 加入创作人行列,一起交流碰撞,参与技术圈年度盛事吧

创作人:刘晓国

如何使用 Elastic Helm Chart 来部署一个多节点的 Elasticsearch 集群。

Elastic Helm Chart: https://github.com/elastic/helm-charts/

安装

安装 VM

在今天的安装中,我选择使用 virtualbox 来部署我们的 ECK。我们也可以选择 Docker 及其它的容器来进行。你可以使用如下的命令

brew install virtualbox

安装 Minikube 及 kubectl

针对不同版本的 MasOS,安装的方法可能不能。对于有些版本的 MacOS 来说,你需要打入如下的命令:

brew cask install minikube

或者:

brew install minikube

一般来说在安装 minikube 的过程中,它也会同时帮我们安装 kubectl。如果kubectl命令不能正常被执行,那么你可以尝试使用如下的命令来进行安装:

brew install kubernetes-cli

当我们把 minikube 及 kubectl 完全进行安装后,我们可以通过打入如下的命令来检查安装是否已经完成:

$ minikube version
minikube version: v1.9.0
commit: 48fefd43444d2f8852f527c78f0141b377b1e42a

如果你能看到上面的信息,则表明我们的 minikube 的安装时正确的。同样:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:16:51Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:27:17Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}

我们可以打入上面的命令来检查 kubectl 的版本信息。

目前 ECK 对于 kubernetes 的要求是:

  • kubectl 1.11+
  • Kubernetes 1.12+ or OpenShift 3.11+
  • Elastic Stack: 6.8+, 7.1+

一旦 minikube 安装好后,我可以通过如下的命令来检查哪些 plugin 已经被加载

minikube addons list

1.png

我们可以通过如下的命令来 enable 一个 plugin:

minikube addons enable dashboard

或者使用如下的命令来 disable 一个 plugin:

minikube addons disable dashboard

安装 Helm

我们可以使用如下的命令来安装 Helm:

brew install helm

针对其它的操作系统,请参照链接:https://helm.sh/docs/intro/install/

一旦完成我们们上面的安装后,我们也就可以开始来部署我们的 ECK 了。

使用 Elastic Helm Chart 安装 Elasticsearch 集群

首先我们启动 minikube。在启动 minikube 之前,我们需要对 minikube 的启动参数来进行配置。我是这样来启动我的 minikube 的:

minikube start --driver=virtualbox --cpus 4 --memory 10240 --kubernetes-version 1.16.0

在上面,我使用 virtualbox 来作为驱动。你也可以使用docker来启动。在这里我配置了cpu的个数是 4,内存是10G。同时由于一个一致的 bug,目前 minikube 不能和最新的 kubernetes 一起进行安装工作。在上面我特别指出了 kubernetes 的版本信息为1.16.0。

上面的命令的输出为:

2.png

对于中国的开发者来说,由于网路的限制,那么在使用上面的命令时,可能会出现 k8s.gcr.io 网址不能被访问的情况。那么我们怎么解决这个问题呢?答案是我们可以使用使用阿里云服务器。我们可以尝试使用如下的命令:

$ minikube start --help |grep repo

      --image-repository='': Alternative image repository to pull docker images from. This can be used when you have limited access to gcr.io. Set it to "auto" to let minikube decide one for you. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers

根据上面的提示,我们可以修改我们上面的命令为:

$ minikube start --driver=virtualbox --cpus 4 --memory 10240 --kubernetes-version 1.16.0 --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'

那么根据上面的命令运行后的结果为:

3.png

一旦 minikube 被成功启动起来,我们可以使用如下的命令:

minikube dashboard

当上面的命令执行后,它就会启动一个 web 的接口让我们来对 kubernetes 监控和管理:

4.png

等我们上面的 Minikube 已经被启动后,我们使用如下的命令:

helm repo add elastic https://helm.elastic.co

上面的命令返回:

$ helm repo add elastic https://helm.elastic.co
"elastic" has been added to your repositories

接着我们使用如下的命令:

curl -O https://raw.githubusercontent.com/elastic/helm-charts/master/elasticsearch/examples/minikube/values.yaml
$ curl -O https://raw.githubusercontent.com/elastic/helm-charts/master/elasticsearch/examples/minikube/values.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   478  100   478    0     0    810      0 --:--:-- --:--:-- --:--:--   808

上面的 values.yaml 的内容如下:

---
# Permit co-located instances for solitary minikube virtual machines.
antiAffinity: "soft"
 
# Shrink default JVM heap.
esJavaOpts: "-Xmx128m -Xms128m"
 
# Allocate smaller chunks of memory per pod.
resources:
  requests:
    cpu: "100m"
    memory: "512M"
  limits:
    cpu: "1000m"
    memory: "512M"
 
# Request smaller persistent volumes.
volumeClaimTemplate:
  accessModes: [ "ReadWriteOnce" ]
  storageClassName: "standard"
  resources:
    requests:
      storage: 100M

我们使用 helm 来对我们的 Elasticsearch 进行安装:

 helm install elasticsearch elastic/elasticsearch -f ./values.yaml 

上面的命令的输出为:

$ helm install elasticsearch elastic/elasticsearch -f ./values.yaml 
NAME: elasticsearch
LAST DEPLOYED: Sun Apr  5 19:04:46 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Watch all cluster members come up.
  $ kubectl get pods --namespace=default -l app=elasticsearch-master -w
2. Test cluster health using Helm test.
  $ helm test elasticsearch --namespace=default

我们使用上面显示的命令来进行监控:

kubectl get pods --namespace=default -l app=elasticsearch-master -w
$ kubectl get pods --namespace=default -l app=elasticsearch-master -w
NAME                     READY   STATUS    RESTARTS   AGE
elasticsearch-master-0   0/1     Running   0          98s
elasticsearch-master-1   0/1     Running   0          98s
elasticsearch-master-2   0/1     Running   0          98s
elasticsearch-master-1   1/1     Running   0          106s
elasticsearch-master-2   1/1     Running   0          110s
elasticsearch-master-0   1/1     Running   0          116s

上面显示我们的 Elasticseach 已经被成功地部署好了。

接下来,我们来部署我们的 Kibana:

helm install kibana elastic/kibana

我们可以通过如下的命令来监控 Kibana 的创建过程:

kubectl get pods -w
$ kubectl get pods -w
NAME                             READY   STATUS              RESTARTS   AGE
elasticsearch-master-0           1/1     Running             0          4m12s
elasticsearch-master-1           1/1     Running             0          4m12s
elasticsearch-master-2           1/1     Running             0          4m12s
kibana-kibana-69f5ddd4bd-ql4s7   0/1     ContainerCreating   0          26s
kibana-kibana-69f5ddd4bd-ql4s7   0/1     Running             0          60s

如果我们看到 Kibana 的状态已经变为 Running,则表明我们的 Kibana 的创建是成功的。

最后,我们需要把 Kibana 的 5601 口进行 port forward:

kubectl port-forward deployment/kibana-kibana 5601

上面命令的运行结果为:

$ kubectl port-forward deployment/kibana-kibana 5601
Forwarding from 127.0.0.1:5601 -> 5601
Forwarding from [::1]:5601 -> 5601
Handling connection for 5601

这样我们的 Elasticsearch 已经被成功部署了。我们启动浏览器,并输入地址 localhost:5601

5.png

上面显示我们的 Elasticsearch 已经被成功部署了。

我们使用 Dev tools:

6.png

从上面我们可以看出来,我们已经成功地部署了 3 个 Elasticsearch 节点的集群。

如果你想了解 helm 更多,你可以使用如下的命令:

helm --help

helm 目前有很多的命令:

Available Commands:
  completion  Generate autocompletions script for the specified shell (bash or zsh)
  create      create a new chart with the given name
  dependency  manage a chart's dependencies
  env         Helm client environment information
  get         download extended information of a named release
  help        Help about any command
  history     fetch release history
  install     install a chart
  lint        examines a chart for possible issues
  list        list releases
  package     package a chart directory into a chart archive
  plugin      install, list, or uninstall Helm plugins
  pull        download a chart from a repository and (optionally) unpack it in local directory
  repo        add, list, remove, update, and index chart repositories
  rollback    roll back a release to a previous revision
  search      search for a keyword in charts
  show        show information of a chart
  status      displays the status of the named release
  template    locally render templates
  test        run tests for a release
  uninstall   uninstall a release
  upgrade     upgrade a release
  verify      verify that a chart at the given path has been signed and is valid
  version     print the client version information

我们可以通过命令:

helm list

来显示已经发布了的:

$ helm list
NAME             NAMESPACE    REVISION    UPDATED                                 STATUS      CHART                  APP VERSION
elasticsearch    default      1           2020-04-05 19:04:46.629021 +0800 CST    deployed    elasticsearch-7.6.2    7.6.2      
kibana           default      1           2020-04-05 19:08:32.566291 +0800 CST    deployed    kibana-7.6.2           7.6.2

我们也可以使用如下的命令来卸载已经发布了的:

helm uninstall

比如:

$ helm uninstall kibana
release "kibana" uninstalled
liuxg:kube liuxg$ helm uninstall elasticsearch
release "elasticsearch" uninstalled
liuxg:kube liuxg$ kubectl get pods 
No resources found.
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 消息中间件 运维
Kubernetes中部署ELK Stack日志收集平台(上)
Kubernetes中部署ELK Stack日志收集平台
Kubernetes中部署ELK Stack日志收集平台(上)
|
9月前
|
机器学习/深度学习 算法 Python
机器学习:归一化
这段内容主要讨论了归一化的目的和两种类型的归一化方法。归一化是为了确保在梯度下降过程中,不同维度的参数以相似的幅度调整,避免因数据尺度差异导致的优化问题。文中提到了最大值最小值归一化和标准归一化,后者更不易受到离群值的影响,并且可以使数据符合正态分布。通过Python代码示例展示了如何使用`StandardScaler`进行标准归一化。
313 2
|
9月前
|
关系型数据库 MySQL Linux
Alibaba Cloud Linux release 3 (Soaring Falcon)操作系统
Alibaba Cloud Linux release 3 (Soaring Falcon)操作系统
|
6月前
|
存储 关系型数据库 MySQL
2022年最新最详细的MYSQL数据库安装(详细图解过程、毕成功)
这篇文章提供了2022年最新最详细的MYSQL数据库安装教程,包括下载、安装步骤图解、初始化配置文件创建、登录密码修改注意事项,并分享了作者在安装过程中遇到的常见问题及其解决方法。
2022年最新最详细的MYSQL数据库安装(详细图解过程、毕成功)
|
存储 Kubernetes Ubuntu
helm部署mysql
在K8S部署mysql的步骤可用helm来简化,今天就来实战通过helm部署mysql,并且将之前遇到的问题和解决方法列出来
1619 1
helm部署mysql
|
9月前
|
存储 监控 安全
保护企业财产:ERP系统的安全与数据保护策略
保护企业财产:ERP系统的安全与数据保护策略
655 0
|
9月前
|
存储
Hudi Log日志文件格式分析(一)
Hudi Log日志文件格式分析(一)
219 1
|
9月前
|
存储 监控 关系型数据库
mysql 主备延迟的原因及解决思路,优化方法
MySQL 主备延迟(replication delay)是指主服务器(master)上的数据更新操作与备服务器(slave)上相同数据更新操作之间的时间差。这种延迟可能会导致数据不一致,影响系统的可用性和可靠性。以下是主备延迟的常见原因、解决思路和优化方法: ### 常见原因 1. **网络延迟**:主备服务器之间的网络不稳定或带宽不足。 2. **硬件性能**:备服务器的硬件性能不足,如 CPU、内存、磁盘 I/O 等。 3. **大量数据写入**:主服务器上的大量数据写入操作导致备服务器难以同步。 4. **复杂的查询**:备服务器执行复杂的查询操作,影响同步速度。 5. **二进制
561 0
|
网络安全 数据安全/隐私保护
ansible的get_url模块
ansible的get_url模块
164 1
|
9月前
|
Python
NPM【问题 01】npm i node-sass@4.14.1报错not found: python2及Cannot download问题处理
NPM【问题 01】npm i node-sass@4.14.1报错not found: python2及Cannot download问题处理
937 0

热门文章

最新文章