Docker 部署分布式搜索引擎 Elastic Search的详细过程

下面我来为你详细讲解“Docker 部署分布式搜索引擎 Elastic Search的详细过程”。

什么是 Elastic Search

Elastic Search 是一个分布式的、可扩展的全文搜索引擎,可以帮助我们快速地索引、搜索数据。它基于Lucene搜索引擎构建,提供了 RESTful API 接口,可以对数据进行复杂的搜索。

Docker 安装 Elastic Search

首先我们需要安装 Docker,如果您已经安装,请跳过以下步骤:

  1. 在命令行运行以下命令,安装 Docker:

bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

  1. 运行以下命令,验证 Docker 是否正确安装:

bash
docker run hello-world

如果输出“Hello from Docker!”表示 Docker 安装成功。

  1. 运行以下命令,下载 Elastic Search Docker 镜像:

bash
docker pull elasticsearch:7.9.2

  1. 运行以下命令,启动 Elastic Search 容器:

bash
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.9.2

这里我们使用了 Docker 的 -p 参数来映射容器中的端口到宿主机的端口上,方便我们访问 Elastic Search。而 -e 参数则是用来设置 Elastic Search 的环境变量。

  1. 运行以下命令,确认 Elastic Search 容器已经启动成功:

bash
docker ps

输出如下信息表示容器启动成功:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b0e62cff449 elasticsearch:7.9.2 "/usr/local/bin/dock…" 31 seconds ago Up 31 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch

创建 Elastic Search 集群

创建 Elastic Search 集群可以帮助我们实现高可用和负载均衡。以下是两种不同的方式:

1. 使用 Docker Compose

Docker Compose 是 Docker 的一个工具,可以帮助我们定义和运行多个 Docker 容器。

以下是一个使用 Docker Compose 部署 Elastic Search 集群的示例:

  1. 创建一个名为 docker-compose.yml 的文件,定义 Elastic Search 集群和 Kibana(Elastic Search 的可视化工具):

yaml
version: '3'
services:
elasticsearch1:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: elasticsearch1
environment:
- node.name=elasticsearch1
- cluster.name=es-cluster
- discovery.seed_hosts=elasticsearch2,elasticsearch3
- cluster.initial_master_nodes=elasticsearch1,elasticsearch2,elasticsearch3
- network.publish_host=elasticsearch1
- ES_JAVA_OPTS=-Xms512m -Xmx512m
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- esdata1:/usr/share/elasticsearch/data
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
- 9300:9300
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: elasticsearch2
environment:
- node.name=elasticsearch2
- cluster.name=es-cluster
- discovery.seed_hosts=elasticsearch1,elasticsearch3
- cluster.initial_master_nodes=elasticsearch1,elasticsearch2,elasticsearch3
- network.publish_host=elasticsearch2
- ES_JAVA_OPTS=-Xms512m -Xmx512m
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- esdata2:/usr/share/elasticsearch/data
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
elasticsearch3:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: elasticsearch3
environment:
- node.name=elasticsearch3
- cluster.name=es-cluster
- discovery.seed_hosts=elasticsearch1,elasticsearch2
- cluster.initial_master_nodes=elasticsearch1,elasticsearch2,elasticsearch3
- network.publish_host=elasticsearch3
- ES_JAVA_OPTS=-Xms512m -Xmx512m
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- esdata3:/usr/share/elasticsearch/data
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
kibana:
image: docker.elastic.co/kibana/kibana:7.9.2
container_name: kibana
environment:
- "ELASTICSEARCH_HOSTS=http://elasticsearch1:9200,http://elasticsearch2:9200,http://elasticsearch3:9200"
- "XPACK_SECURITY_ENABLED=false"
ports:
- "5601:5601"
depends_on:
- elasticsearch1
- elasticsearch2
- elasticsearch3
volumes:
esdata1:
esdata2:
esdata3:

  1. 在命令行中运行以下命令启动 Elastic Search 集群:

bash
docker-compose up -d

  1. 运行以下命令检查 Elastic Search 集群的状态:

bash
curl http://localhost:9200/_cluster/state?pretty

如果集群状态正常,会返回包含集群信息的 JSON 数据。

2. 使用 Kubernetes

Kubernetes 是一个开源的容器编排系统,可以帮助我们管理和部署容器化的应用程序。

以下是一个使用 Kubernetes 部署 Elastic Search 集群的示例:

  1. 创建一个名为 elasticsearch.yml 的文件,定义 Elastic Search 集群:

```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: elasticsearch
spec:
serviceName: elasticsearch
replicas: 3
selector:
matchLabels:
app: elasticsearch
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
app: elasticsearch
spec:
terminationGracePeriodSeconds: 10
containers:
- name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
ports:
- containerPort: 9200
name: http
- containerPort: 9300
name: transport
env:
- name: cluster.name
value: elasticsearch-cluster
- name: discovery.seed_hosts
value: "elasticsearch-0.elasticsearch,elasticsearch-1.elasticsearch,elasticsearch-2.elasticsearch"
- name: cluster.initial_master_nodes
value: "elasticsearch-0,elasticsearch-1,elasticsearch-2"
volumeMounts:
- name: data
mountPath: /usr/share/elasticsearch/data
resources:
limits:
cpu: 1000m
memory: 2Gi
requests:
cpu: 500m
memory: 1Gi
volumes:
- name: data
persistentVolumeClaim:
claimName: elastic-pvc


apiVersion: v1
kind: Service
metadata:
name: elasticsearch
spec:
selector:
app: elasticsearch
ports:
- name: http
protocol: TCP
port: 9200
targetPort: http
- name: transport
protocol: TCP
port: 9300
targetPort: transport
clusterIP: None
```

  1. 在 Kubernetes 集群中运行以下命令,创建 Elastic Search 集群:

bash
kubectl apply -f elasticsearch.yml

  1. 运行以下命令检查 Elastic Search 集群的状态:

bash
kubectl get statefulsets
kubectl get pods
kubectl describe pod elasticsearch-0
kubectl exec -it elasticsearch-0 -- /bin/bash
./bin/elasticsearch-cluster-health.sh

总结

以上就是 Dcoker 部署分布式搜索引擎 Elastic Search 的详细过程。通过以上步骤我们可以快速高效地搭建我们的 Elastic Search 集群,提高我们的工作效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker 部署分布式搜索引擎 Elastic Search的详细过程 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Python的条件语句与运算符优先级详解

    Python是一门非常流行的编程语言,其中条件语句与运算符优先级是编写Python程序的重要组成部分。本文将为读者详细介绍Python中条件语句与运算符优先级的相关知识。 一、条件语句 在Python中,条件语句用于基于不同的条件执行不同的代码块。其中最常见的条件语句是if语句。if语句通常有一个布尔表达式作为条件,如果这个表达式的结果为True,则执行if…

    other 2023年6月27日
    00
  • 基于HTML5 FileSystem API的使用介绍

    基于 HTML5 FileSystem API 的使用介绍 简介 HTML5 FileSystem API 允许web应用程序访问本地文件系统,从而增强了web应用程序的功能。这个API不需要服务器端的帮助,可以让用户本地文件系统的访问变得十分简单。 HTML5 FileSystem API通过两个对象的集合来实现:FileWriter和FileReader…

    other 2023年6月28日
    00
  • 解析在PHP中使用全局变量的几种方法

    解析在PHP中使用全局变量的几种方法 在PHP中,全局变量是在整个脚本中都可用的变量。它们可以在函数内部和外部使用。本攻略将详细介绍在PHP中使用全局变量的几种方法。 方法一:使用$GLOBALS数组 PHP提供了一个名为$GLOBALS的超全局数组,可以在任何地方访问全局变量。该数组的键是全局变量的名称,值是变量的值。 下面是一个示例,演示如何使用$GLO…

    other 2023年7月28日
    00
  • vue报错”vue-cli-service‘不是内部或外部命令,也不是…”的解决办法

    当我们使用Vue CLI 4.x版本创建项目时,有时候会出现“vue-cli-service‘不是内部或外部命令,也不是可运行的程序”这个错误提示。这个问题通常是因为npm或yarn没有正确安装Vue CLI的命令行工具导致的。 以下是详细的解决步骤: 第一步:检查Vue CLI的版本 为了解决这个问题,我们首先需要检查我们安装的Vue CLI版本是否正确。…

    other 2023年6月27日
    00
  • iOS13.2 Beta1更新了什么 如何升降级 iOS13.2 beta1新特性与升降级全攻略

    iOS 13.2 Beta 1 更新内容 iOS 13.2 Beta 1 是苹果公司发布的 iOS 13.2 的测试版本之一。它带来了一些新特性和改进。以下是 iOS 13.2 Beta 1 的更新内容: Deep Fusion 技术:iOS 13.2 Beta 1 引入了 Deep Fusion 技术,这是一种图像处理技术,旨在提高 iPhone 11 系…

    other 2023年8月3日
    00
  • 电脑如何重装系统 电脑重新安装系统全程图解

    电脑如何重装系统 本文将详细讲解电脑如何重装系统,并提供全程图解和两个示例说明,帮助读者快速掌握这个过程。 准备工作 在重装系统之前,我们需要做好以下准备工作: 备份数据:重装系统会清空电脑中的所有数据,因此在重装系统之前请务必备份好自己的重要数据。 准备安装盘:电脑重装系统需要使用安装盘,可以是光盘或U盘。如果没有安装盘,可以下载Windows官方安装工具…

    other 2023年6月28日
    00
  • C++对数组的引用实例分析

    C++中,数组是一组相同类型的数据结构,可以作为一个整体进行操作。使用数组时,常常需要传递数组的引用。那么本篇攻略就会给你详细讲解C++对数组的引用实例分析,结合两条示例实现对数组的引用。 常规数组的引用 #include <iostream> using namespace std; const int ARRAY_SIZE = 10; voi…

    other 2023年6月25日
    00
  • 台电凌珑S迷你主机评测 书本大小 办公不卡

    台电凌珑S迷你主机评测攻略 1. 介绍 台电凌珑S迷你主机是一款体积小巧、性能强大的迷你主机,适合办公使用。本文将详细介绍该主机的特点、性能以及使用体验。 2. 特点 书本大小:台电凌珑S迷你主机的体积非常小,与一本书的大小相当,非常便于携带和放置。 强大性能:尽管体积小,台电凌珑S迷你主机配备了高性能的处理器和大容量内存,能够满足办公需求,运行各种办公软件…

    other 2023年8月2日
    00
合作推广
合作推广
分享本页
返回顶部