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: "*"
相关推荐
Aurora_NeAr41 分钟前
Spark SQL架构及高级用法
大数据·后端·spark
王小王-12342 分钟前
基于Hadoop的公共自行车数据分布式存储和计算平台的设计与实现
大数据·hive·hadoop·分布式·hadoop公共自行车·共享单车大数据分析·hadoop共享单车
数据与人工智能律师1 小时前
数字资产革命中的信任之锚:RWA法律架构的隐形密码
大数据·网络·人工智能·云计算·区块链
Edingbrugh.南空2 小时前
Flink OceanBase CDC 环境配置与验证
大数据·flink·oceanbase
全星0072 小时前
解锁研发高效密码:全星研发项目管理APQP软件的多维助力
大数据·汽车
时序数据说4 小时前
为什么时序数据库IoTDB选择Java作为开发语言
java·大数据·开发语言·数据库·物联网·时序数据库·iotdb
Codebee4 小时前
OneCode图表配置速查手册
大数据·前端·数据可视化
HGW6895 小时前
基于 Elasticsearch 实现地图点聚合
java·elasticsearch·高德地图
Jamie201901065 小时前
高档宠物食品对宠物的健康益处有哪些?
大数据·人工智能
陈敬雷-充电了么-CEO兼CTO5 小时前
推荐算法系统系列>推荐数据仓库集市的ETL数据处理
大数据·数据库·数据仓库·数据挖掘·数据分析·etl·推荐算法