• Elasticsearch - Elasticsearch集群Cluster(三)


    阅读本文前可先参考

    https://blog.csdn.net/MinggeQingchun/article/details/126618387

    一、单机 & 集群

    1、单机

    单台 Elasticsearch 服务器提供服务,负载能力有限,超过这个阈值,服务器性能就会大大降低甚至不可用,因此在生产环境中,一般都会部署Elasticsearch 服务器集群

    单点服务器缺点:

    (1)负载能力有限

    (2)单台机器存储容量有限

    (3)单服务器容易出现单点故障,无法实现高可用

    (4)单服务的并发处理能力有限

    2、集群 Cluster

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

    配置服务器集群时,集群中节点数量没有限制,大于等于 2 个节点就可以看做是集群了

    一般出于高性能及高可用方面来考虑,集群中节点数量都是 3 个以上

    3、节点 Node

    集群中包含很多服务器,一个节点就是其中的一个服务器

    作为集群的一部分,它存储数据,参与集群的索引和搜索功能。 一个节点也是由一个名字来标识的,这个名字会在启动的时候赋予节点。这个名字对于管理工作来说挺重要的,因为在这个管理过程中,你会去确定网络中的哪些服务器对应于 Elasticsearch 集群中的哪些节点

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

    在一个集群里,可以拥有任意多个节点。而且,如果当前你的网络中没有运行任何Elasticsearch 节点,这时启动一个节点,会默认创建并加入一个叫做“elasticsearch”的集群

    二、Windows集群

    1、部署集群

    1、创建elasticsearch-cluster文件夹,复制或者重新解压缩 3个elasticsearch服务

    注:如果复制需要将data文件夹以及logs文件夹下的所有日志文件删除

    2、修改集群文件中每个elasticsearch节点目录下的 config/elasticsearch.yml 文件

    (1)node-1

    1. #节点 1 的配置信息:
    2. #集群名称,节点之间要保持一致
    3. cluster.name: my-elasticsearch
    4. #节点名称,集群内要唯一
    5. node.name: node-1
    6. node.master: true
    7. node.data: true
    8. #ip 地址
    9. network.host: localhost
    10. #http 端口
    11. http.port: 1001
    12. #tcp 监听端口
    13. transport.tcp.port: 9301
    14. #discovery.seed_hosts: ["localhost:9301", "localhost:9302","localhost:9303"]
    15. #discovery.zen.fd.ping_timeout: 1m
    16. #discovery.zen.fd.ping_retries: 5
    17. #集群内的可以被选为主节点的节点列表
    18. #cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
    19. #跨域配置
    20. #action.destructive_requires_name: true
    21. http.cors.enabled: true
    22. http.cors.allow-origin: "*"

    (2)node-2节点 

    1. #节点 2 的配置信息:
    2. #集群名称,节点之间要保持一致
    3. cluster.name: my-elasticsearch
    4. #节点名称,集群内要唯一
    5. node.name: node-2
    6. node.master: true
    7. node.data: true
    8. #ip 地址
    9. network.host: localhost
    10. #http 端口
    11. http.port: 1002
    12. #tcp 监听端口
    13. transport.tcp.port: 9302
    14. # 候选主节点的地址,在开启服务后可以被选为主节点
    15. discovery.seed_hosts: ["localhost:9301"]
    16. discovery.zen.fd.ping_timeout: 1m
    17. discovery.zen.fd.ping_retries: 5
    18. #集群内的可以被选为主节点的节点列表
    19. #cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
    20. #跨域配置
    21. #action.destructive_requires_name: true
    22. http.cors.enabled: true
    23. http.cors.allow-origin: "*"

    (3)node-3节点

    1. #节点 3 的配置信息:
    2. #集群名称,节点之间要保持一致
    3. cluster.name: my-elasticsearch
    4. #节点名称,集群内要唯一
    5. node.name: node-3
    6. node.master: true
    7. node.data: true
    8. #ip 地址
    9. network.host: localhost
    10. #http 端口
    11. http.port: 1003
    12. #tcp 监听端口
    13. transport.tcp.port: 9303
    14. #候选主节点的地址,在开启服务后可以被选为主节点
    15. discovery.seed_hosts: ["localhost:9301", "localhost:9302"]
    16. discovery.zen.fd.ping_timeout: 1m
    17. discovery.zen.fd.ping_retries: 5
    18. #集群内的可以被选为主节点的节点列表
    19. #cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
    20. #跨域配置
    21. #action.destructive_requires_name: true
    22. http.cors.enabled: true
    23. http.cors.allow-origin: "*"

    2、启动集群

    (1)删除 data 文件夹下文件(如果存在)

    (2)分别双击执行 bin/elasticsearch.bat, 启动节点服务器,启动后,会自动加入指定名称的集群

    3、测试集群 

    (1)查看node-1节点状态

    GET请求:http://localhost:1001/_cluster/health

    同理可查看node-2、node-3节点状态

    2、查看集群状态

    在Elasticsearch集群中,节点的状态有Green、Yellow、Red三种

    Green,绿色,表示节点运行状态为健康状态。所有主分片和副本分片都可以正常工作,集群100%健康

    Yellow,黄色,表示节点的运行状态为预警状态。所有的主分片都可以正常工作,但是至少有一个副本分片是不能正常工作的。此时集群仍然可以正常工作,但集群的高可用性在某种程度上被弱化

    Red,红色,表示集群无法正常工作。此时,集群中至少有一个分片的主分片及他的全部副本都不可正常工作。虽然集群的查询操作还可以进行,但是也只能返回部分数据(其他正常分片的数据可以被正常返回),而分配到这个有问题分片的写入请求会报错,最终造成数据丢失

    节点数量;GET请求 http://localhost:1001/_cat/nodes 

    (2)在 node-1中新增索引,在node-2、node-3中查看

    3、 elasticsearch-head-chrome-plugin 插件查看集群状态

    1、下载插件地址:https://codeload.github.com/mobz/elasticsearch-head/zip/master

    2、下载完成之后,解压缩

    3、进入crx目录下,复制es-head.crx,将副本后缀改成rar,然后解压成es-head目录文件夹

    4、 打开开发者模式>>加载已解压的扩展程序,选择刚刚第3步中解压缩的es-head插件目录

    5、使用插件:点击浏览器的右上角 “扩展程序”图标,选择刚才添加的elasticsearch-head插件,进入页面后,设置自己的ES地址和端口就可以看到信息了 

     

    三、Linux集群

    (一)Linux单机

    1、下载安装,下载地址

    https://www.elastic.co/cn/downloads/past-releases#elasticsearch

    博主下载 elasticsearch-7.16.0-linux-x86_64.tar.gz 版本

    2、解压安装

     tar -zxvf elasticsearch-7.16.0-linux-x86_64.tar.gz -C /opt/software/

    3、创建用户

    因为安全问题,Elasticsearch 不允许 root 用户直接运行,所以要创建新用户,在 root 用户中创建新用户

    1. useradd es #新增 es 用户
    2. passwd es #为 es 用户设置密码
    3. userdel -r es #如果错了,可以删除再加
    4. chown -R es:es /opt/software/elasticsearch-7.16.0 #文件夹所有者

    4、修改配置文件

    (1)修改/opt/software/elasticsearch-7.16.0/config/elasticsearch.yml 文件

    1. # 加入如下配置
    2. cluster.name: elasticsearch
    3. node.name: node-1
    4. network.host: 0.0.0.0
    5. http.port: 9200
    6. cluster.initial_master_nodes: ["node-1"]

    (2) 修改/etc/security/limits.conf

    1. # 在文件末尾中增加下面内容
    2. # 每个进程可以打开的文件数的限制
    3. es soft nofile 65536
    4. es hard nofile 65536

    (3)修改/etc/security/limits.d/20-nproc.conf

    1. # 在文件末尾中增加下面内容
    2. # 每个进程可以打开的文件数的限制
    3. es soft nofile 65536
    4. es hard nofile 65536
    5. # 操作系统级别对每个用户创建的进程数的限制
    6. * hard nproc 4096
    7. # 注:* 带表 Linux 所有用户名称

    (4)修改/etc/sysctl.conf

    1. # 在文件中增加下面内容
    2. # 一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536
    3. vm.max_map_count=655360

    重新加载

    sysctl -p

    5、启动ES

    1. cd /opt/software/elasticsearch-7.16.0
    2. #启动
    3. bin/elasticsearch
    4. #后台启动
    5. bin/elasticsearch -d

    此时可能会报错

    注:!!!

    1、启动前需要先切换到es用户( 因为安全问题, Elasticsearch 不允许 root 用户直接运行,所以要创建新用户es,启动ES时并切换到该用户下)

    1. su es
    2. cd /opt/software/elasticsearch-7.16.0
    3. #启动
    4. bin/elasticsearch
    5. #后台启动
    6. bin/elasticsearch -d

    2、 安装JDK,并配置Java环境变量

    可参考

    https://blog.csdn.net/MinggeQingchun/article/details/125501714

    3、关闭防火墙

    1. #暂时关闭防火墙
    2. systemctl stop firewalld
    3. #永久关闭防火墙
    4. systemctl enable firewalld.service #打开放货抢永久性生效,重启后不会复原
    5. systemctl disable firewalld.service #关闭防火墙,永久性生效,重启后不会复原

    此时浏览器中输入网址访问即可:http://IP:9200/

    (二)Linux集群

    基本所有步骤和Linux单机步骤相同,唯一不同的是

    第4步 修改配置文件

    修改 /opt/software/elasticsearch-7.16.0/config/elasticsearch.yml 文件

    1. # 加入如下配置
    2. #集群名称
    3. cluster.name: cluster-es
    4. #节点名称,每个节点的名称不能重复
    5. node.name: node-1
    6. #ip 地址,每个节点的地址不能重复
    7. network.host: linux1
    8. #是不是有资格主节点
    9. node.master: true
    10. node.data: true
    11. http.port: 9200
    12. # head 插件需要这打开这两个配置
    13. http.cors.allow-origin: "*"
    14. http.cors.enabled: true
    15. http.max_content_length: 200mb
    16. #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
    17. cluster.initial_master_nodes: ["node-1"]
    18. #es7.x 之后新增的配置,节点发现
    19. discovery.seed_hosts: ["linux1:9300","linux2:9300","linux3:9300"]
    20. gateway.recover_after_nodes: 2
    21. network.tcp.keep_alive: true
    22. network.tcp.no_delay: true
    23. transport.tcp.compress: true
    24. #集群内同时启动的数据任务个数,默认是 2 个
    25. cluster.routing.allocation.cluster_concurrent_rebalance: 16
    26. #添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
    27. cluster.routing.allocation.node_concurrent_recoveries: 16
    28. #初始化数据恢复时,并发恢复线程的个数,默认 4 个
    29. cluster.routing.allocation.node_initial_primaries_recoveries: 16
  • 相关阅读:
    JavaScript快速入门
    2022年G3锅炉水处理试题及模拟考试
    神经网络的主要内容特点,神经网络的种类和特点
    计算机毕业设计(附源码)python元江特色农产品售卖平台
    CENTOS7安装PROMETHUS(普罗米修斯)监控系统完整版
    商汤&上海AI实验室联合发布:自动驾驶全栈式高精度标定工具箱(含车、IMU、相机、激光雷达等的标定)
    【开发小记】vue项目预渲染(prerender-spa-plugin)
    为什么我的结巴分词和词云图不报错但是乱码啊
    JVM中jhat虚拟机堆转储快照分析工具
    Powerpoint不小心被覆盖?PPT误删文件如何恢复?
  • 原文地址:https://blog.csdn.net/MinggeQingchun/article/details/126738909