Elasticsearch 环境

相关概念

单机 & 集群

单台 Elasticsearch 服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集群中。

除了负载能力,单点服务器也存在其他问题:

  • 单台机器存储容量有限
  • 单服务器容易出现单点故障,无法实现高可用
  • 单服务的并发处理能力有限

配置服务器集群时,集群中节点数量没有限制,大于等于2个节点就可以看做是集群了。-般出于高性能及高可用方面来考虑集群中节点数量都是3个以上。

集群 Cluster

一个集群就是由一个或多个服务器节点组织在一起,共同持有整个的数据,并一起提供索引和搜索功能。一个Elasticsearch 集群有一个唯一的名字标识,这个名字默认就是"elasticsearch"。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入集群。

节点 Node

集群中包含很多服务器,一个节点就是其中的一个服务器。作为集群的一部分,它存储数据,参与集群的索引和搜索功能

一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随机的漫威漫画角色的名字,这个名字会在启动的时候赋予节点。这个名字对于管理工作来说挺重要的,因为在这个管理过程中,你会去确定网络中的哪些服务器对应于 Elasticsearch 集群中的哪些节点。

一个节点可以通过配置集群名称的方式来加入一个指定的集群。默认情况下,每个节点都会被安排加入到一个叫做"elasticsearch"的集群中,这意味着,如果你在你的网络中启动了若干个节点,并假定它们能够相互发现彼此,它们将会自动地形成并加入到一个叫做"elasticsearch"的集群中。

Windows集群部署

修改config/elasticsearch.yml

复制代码
#集群名称,唯一,节点之间要保持一致
cluster.name: my-application
#节点名称,,集群内唯一
node.name: node-9201
#是否可以为master节点
node.master: true
#是否可以为data节点
node.data: true
#节点ip
network.host: localhost
#端口
http.port: 9201
#tcp通信端口
transport.tcp.port: 9303
# 配置节点之间的通信端口
discovery.seed_hosts: ["localhost:9301","localhost:9302","localhost:9301"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# 跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

依次启动节点查询集群状态

复制代码
GET:http://127.0.0.1:9201/_cluster/health

Linux单节点部署

本文使用docker进行部署

  1. 拉取镜像

    复制代码
    docker pull  docker.elastic.co/elasticsearch/elasticsearch:7.8.0
  2. 创建/es/data,/es/plugins路径并给权限

    复制代码
    mkdir /opt/es/data /opt/es/plugins
    #不给权限可能导致容器启动后,es无法启动
    chmod 777 /opt/es/data /opt/es/plugins
  3. 部署单点es,创建es容器

    复制代码
    docker run  -d \
    -p 9200:9200 -p 9300:9300 \
    --name es_master --privileged=true \
    -v /opt/es/data:/usr/share/elasticsearch/data \
    -v /opt/es/plugins:/usr/share/elasticsearch/plugins \
    -e "discovery.type=single-node" \
    docker.elastic.co/elasticsearch/elasticsearch:7.8.0

Linux集群部署(服务器内存限制无法部署多台es,按照配置文件修改即可)

  1. 创建/es/data,/es/plugins路径并给权限

    复制代码
    mkdir /opt/es/master
    mkdir /opt/es/node1
    mkdir /opt/es/node2
    chmod -R 777 es/
  2. 部署集群es,创建三个es容器

    复制代码
    docker run  -d \
    -p 9201:9201 -p 9301:9301 \
    --name es_master --privileged=true \
    -v /opt/es/data:/usr/share/elasticsearch/data \
    -v /opt/es/plugins:/usr/share/elasticsearch/plugins \
    -e "discovery.type=single-node" \
    docker.elastic.co/elasticsearch/elasticsearch:7.8.0
  3. 修改配置文件

    复制代码
    ## 集群名称,保证唯一
    cluster.name: my-application
    #### 节点名称,必须不一样
    node.name: es_master
    #是不是有资格成为主节点
    node.master: true
    #是否存储数据
    node.data: true
    #最大集群节点数
    node.max_local_storage_nodes: 3
    #ip地址.
    network.host: 0.0.0.0
    #端口
    http.port: 9201
    #内部节点之间沟通端口
    transport.tcp.port: 9301
    #es7.x  之后新增的配置,节点发现
    discovery.seed_hosts: ["localhost:9301","localhost:9302","localhost:9303"]
    #es7.x  之后新增的配置,初始化一个新的集群时需要次配置来选举master
    cluster.initial_master_nodes: ["es_master","es_node1","es_node2"]
    #跨域
    http.cors.enabled: true
    http.cors.allow-origin: "*"
相关推荐
今天我又学废了1 小时前
Spark,SparkSQL操作Mysql, 创建数据库和表
大数据·mysql·spark
杰克逊的日记3 小时前
Flink运维要点
大数据·运维·flink
markuszhang6 小时前
Elasticsearch 官网阅读之 Term-level Queries
大数据·elasticsearch·搜索引擎
帝锦_li7 小时前
ElasticSearch
elasticsearch·搜索引擎
Hello World......7 小时前
Java求职面试:从核心技术到大数据与AI的场景应用
大数据·java面试·技术栈·互联网大厂·ai服务
python算法(魔法师版)9 小时前
.NET NativeAOT 指南
java·大数据·linux·jvm·.net
星川皆无恙9 小时前
大模型学习:Deepseek+dify零成本部署本地运行实用教程(超级详细!建议收藏)
大数据·人工智能·学习·语言模型·架构
L耀早睡10 小时前
mapreduce打包运行
大数据·前端·spark·mapreduce
姬激薄10 小时前
MapReduce打包运行
大数据·mapreduce
计算机人哪有不疯的10 小时前
Mapreduce初使用
大数据·mapreduce