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: "*"
相关推荐
Kookoos10 分钟前
ABP vNext + Hive 集成:多租户大数据 SQL 查询与报表分析
大数据·hive·sql·.net·abp vnext
棠十一34 分钟前
docker 启动elasticsearch 与 kibana
elasticsearch·docker·容器
-代号95272 小时前
Maven相关问题:jna版本与ES冲突 + aop失效
elasticsearch·maven·aop·jna
柒间11 小时前
Elasticsearch 常用操作命令整合 (cURL 版本)
大数据·数据库·elasticsearch
G皮T13 小时前
【Elasticsearch】映射:fielddata 详解
大数据·elasticsearch·搜索引擎·映射·搜索·mappings·fielddata
ID_云泽13 小时前
Elasticsearch中多索引数据合并与Nested嵌套类型操作全解析
elasticsearch·搜索引擎·全文检索
viperrrrrrrrrr714 小时前
大数据学习(132)-HIve数据分析
大数据·hive·学习
夜影风15 小时前
大数据清洗加工概述
大数据
南朝雨15 小时前
linux下安装elasticsearch及ik分词器
linux·elasticsearch·全文检索