Es三节点+vip集群搭建部署方案

news2024/11/19 16:42:30

线上环境Es三节点集群搭建部署方案

1. 目标

  1. Es 集群架构图

!在这里插入图片描述

2. 搭建步骤

  • 官网教程: https://elasticsearch.bookhub.tech/set_up_elasticsearch/installing_elasticsearch/
  1. 确定 Es 安装目录

机器名内网IPEs 版本重点目录
es-node01192.18.233.2407.15.1安装目录: /home/work/elasticsearch/ 数据目录: /mnt/es/esdata 快照仓库: /mnt/es/snapshot 日志目录: /mnt/logs/eslogs
es-node02192.18.233.229
es-node03192.18.233.230
  1. 下载地址

  • es下载:
    • https://mirrors.huaweicloud.com/elasticsearch/
    • 目前Es8.x 处于开发阶段, 目前最新的稳定版本是 Elasticsearch 7.15.1
      • https://mirrors.huaweicloud.com/elasticsearch/7.15.1/elasticsearch-7.15.1-linux-x86_64.tar.gz
  • kibana下载:
    • https://mirrors.huaweicloud.com/kibana/
  1. 下载安装

# 下载,解压即可
cd /home/work/elasticsearch
wget https://mirrors.huaweicloud.com/elasticsearch/7.15.1/elasticsearch-7.15.1-linux-x86_64.tar.gz
# 解压
tar -zxvf elasticsearch-7.15.1-linux-x86_64.tar.gz
  • 解压后的文件目录结构
    • 在这里插入图片描述
  1. 初始化Es用户

#创建账号esadmin
useradd esadmin

#初始化密码
passwd esadmin
es1#user

#对esadmin授权目录
chown -R esadmin /home/work/elasticsearch/
chown -R esadmin /mnt/es/esdata
chown -R esadmin /mnt/logs/eslogs
chown -R esadmin /mnt/es/snapshot

chmod 777 /home/work/
  1. 修改Es配置文件(必要的重点设置项)

  • 官方参考:
    • https://elasticsearch.bookhub.tech/set_up_elasticsearch/configuring_elasticsearch/
    • 重点配置设置:
      • https://elasticsearch.bookhub.tech/set_up_elasticsearch/configuring_elasticsearch/import_elasticsearch_configuration
      • 在生产中,我们强烈建议你设置 elasticsearch.yml 中的 path.datapath.logs$ES_HOME 之外的位置。
      • 断路器设置: https://elasticsearch.bookhub.tech/set_up_elasticsearch/configuring_elasticsearch/circuit_breaker_settings
    • Elasticsearch有三个配置文件:(这些文件位于 config 目录中)
      • elasticsearch.yml 用于配置 Elasticsearch
      • jvm.options 用于配置 Elasticsearch JVM 设置
      • log4j2.properties 用于配置 Elasticsearch 日志记录
  • 示例如下: 以 node01(192.18.233.240) 为例,其他节点中可以直接复用这个配置,只修改
    • node.name 值即可。

    • elasticsearch.yml

      • # 备份默认的配置文件
        mv elasticsearch.yml elasticsearch.yml-bak
        # 编辑一个新文件
        vi elasticsearch.yml
        
        # 集群名
        cluster.name: es-cluster-prod
        # 节点名称
        node.name: es-node01
        
        ## 下面的配置项其他节点都统一内容##
        
        # HTTP端口
        http.port: 9200
        # Transport TCP端口
        transport.tcp.port: 9300
        
        # 数据存储路径
        path.data: /mnt/es/esdata
        # 设置快照仓库目录
        path.repo: ["/mnt/es/snapshot"]
        # 日志存储路径(将影响默认的执行日志,gc日志,致命错误日志的输出目录)
        path.logs: /mnt/logs/eslogs
        
        # 监听地址
        network.host: 0.0.0.0
        # 设置提供群集中其他节点的列表,这些节点具有选主资格
        discovery.seed_hosts: ["172.18.233.240:9300", "172.18.233.229:9300", "172.18.233.230:9300"]
        # 初始主节点列表
        cluster.initial_master_nodes: ["es-node01", "es-node02", "es-node03"]
        
        # 每隔多长时间ping一个node
        discovery.zen.fd.ping_interval: 30s
        # 每次ping的超时时间
        discovery.zen.fd.ping_timeout: 120s
        # 一个node被ping多少次失败就认为是故障了
        discovery.zen.fd.ping_retries: 6
        
        # 集群脑裂问题参数配置
        # elasticsearch则可以配置返回消息的节点数量, 一般情况下会配置(n/2 + 1)个节点
        # 注意:discovery.zen.minimum_master_nodes 已经在Elasticsearch 7.x中被废弃
        # 请使用 cluster.initial_master_nodes 参数来指定初始主节点列表
        
        # 节点角色设置(默认就是启用的)
        node.ingest: true
        
        # HTTP跨域设置
        http.cors.enabled: true
        http.cors.allow-origin: "*"
        
    • vi jvm.options

      • 官方建议: 默认情况下,Elasticsearch 根据节点的角色和总内存自动设置 JVM 堆大小。我们建议大多数生产环境使用默认大小。
      • cp jvm.options jvm.options-bak
        
        vim jvm.options
        # 限制最大堆3GB
        -Xms3g
        -Xmx3g
        
        # 默认的HeapDumpPath是输出到安装目录的,因此可以修改。
        -XX:HeapDumpPath=/mnt/logs/eslogs/heapdump
        
        # 致命错误日志
        #-XX:ErrorFile=logs/hs_err_pid%p.log
        -XX:ErrorFile=/mnt/logs/eslogs/hs_err_pid%p.log
        
        # JDK 8 GC 日志
        #8:-Xloggc:logs/gc.log
        8:-Xloggc:/mnt/logs/eslogs/gc.log
        
        # JDK 9 GC 日志
        # 将 file=logs/gc.log 改成 file=/mnt/logs/eslogs/gc.log
        #9-:-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m
        9-:-Xlog:gc*,gc+age=trace,safepoint:file=/mnt/logs/eslogs/gc.log:utctime,pid,tags:filecount=32,filesize=64m
        
  1. 修改系统设置

  2. 在 /etc/sysctl.conf 中添加

# 临时设置临时增加 vm.max_map_count 参数的值:
sysctl -w vm.max_map_count=262144

# 永久设置
vim /etc/sysctl.conf 
vm.max_map_count=655360

# 保存后执行这个生效
sysctl -p
  1. 修改 /etc/security/limits.conf
vim /etc/security/limits.conf

esadmin  soft nofile 65536
esadmin  hard nofile 131072
esadmin  soft nproc 4096
esadmin  hard nproc 4096

# 保存退出后,重新登录 esadmin 用户检查效果
 ulimit -a 
  1. 启动

# 进入安装目录
cd /home/work/elasticsearch/elasticsearch-7.15.1/bin

#切换账号
su esadmin

#后台启动命令
./elasticsearch -d

# 启动成功后,验证
curl 
  • 如果用 esadmin 用户启动时报错 AccessDeniedException: /home/work/elasticsearch/elasticsearch-7.15.1/config/elasticsearch.keystore 。 这个是因为 elasticsearch.keystore 文件默认是启动后才创建的,因此重新设置下文件权限即可
    • sudo chmod -R 755 /home/work/elasticsearch/elasticsearch-7.15.1/config/
      
  • 如果启动时报错提示 could not find java in bundled JDK at xxxx
    • 解决方案1: elasticsearch 7系列版本以上都是自带的jdk,可以在es的bin目录下找到 elasticsearch-env.bat 这个文件,配置es的jdk。官方推荐使用es自带的jdk。
      • warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME

      • sudo vi /etc/profile
        export ES_JAVA_HOME=/home/work/elasticsearch/elasticsearch-7.15.1/jdk
        source /etc/profile
        
    • 解决方案2: 使用系统安装的JDK
    • 首先,确认已经安装了 Java。可以通过运行以下命令来检查 Java 是否已经安装:
      java -version
      如果 Java 尚未安装,请使用以下命令安装 OpenJDK:
      sudo yum install java-1.8.0-openjdk-devel
      
      打开终端,并使用以下命令编辑 /etc/profile 文件:
      sudo vi /etc/profile
      
      在文件的末尾添加以下行,设置 JAVA_HOME 环境变量:
      
      export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
      export PATH=$PATH:$JAVA_HOME/bin
      
      # 保存并关闭文件。然后,运行以下命令使更改生效:
      source /etc/profile
      最后,可以通过运行以下命令来验证 JAVA_HOME 是否已正确设置:
      echo $JAVA_HOME
      
  • 三个节点都启动后,检查搭建结果
    • [root@iZwz9iqrw0w0p7ry2a8597Z ~]#
      [root@iZwz9iqrw0w0p7ry2a8597Z ~]# curl -XGET 'localhost:9200/_cat/health?v&pretty'
      epoch      timestamp cluster         status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
      1701780738 12:52:18  es-cluster-prod green           3         3      2   1    0    0        0             0                  -                100.0%
      
      [root@iZwz9iqrw0w0p7ry2a8597Z ~]# curl -XGET 'localhost:9200/_cat/nodes?v&pretty'
      ip             heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
      172.18.233.229            6          87   5    0.07    0.27     0.21 cdfhilmrstw -      es-node02
      172.18.233.230            7          86   4    0.05    0.21     0.19 cdfhilmrstw -      es-node03
      172.18.233.240           23          60   4    0.03    0.19     0.17 cdfhilmrstw *      es-node01
      
  1. 阿里云内网SLB配置

  2. 创建一个内网SLB

  3. 配置SLB,指向我们部署的三个ES服务节点

  4. 微服务直接使用内网SLB的域名来代理ES的访问

附录

  1. 日常运维注意

  2. 关于数据目录的管理

    1. 不要修改数据目录中的任何内容或运行可能会干扰其内容的进程。如果 Elasticsearch 以外的其他内容修改了数据目录的内容,则 Elasticsearch 可能会失败,报告损坏或其他数据不一致,或者可能在默默丢失部分数据后正常工作。不要尝试对数据目录进行文件系统备份;不支持还原此类备份的方法。相反,请使用快照和还原来安全地进行备份。不要在数据目录上运行病毒扫描程序。病毒扫描程序可能会阻止 Elasticsearch 正常工作,并可能会修改数据目录的内容。数据目录不包含可执行文件,因此病毒扫描只会发现误报。

  3. 多数据路径在 7.13 中已被弃用,并将在未来版本中删除。

    1. 如果需要额外的磁盘空间,建议你添加新节点,而不是其他数据路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1338030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在k8s中使用cert-manager部署gitlab集群

写在前面的话:前面有详细的分享过在k8s集群中部署gitlab,不过当时使用gitlab的访问证书是阿里云上免费的ssl证书,今天特意专门介绍下另外一种基于cert-manager发布自签证书的方式实现部署gitlab到k8s集群中。 往期gitlab部署系列如&#xff1…

什么是数据可视化?数据可视化的流程与步骤

前言 数据可视化将大大小小的数据集转化为更容易被人脑理解和处理的视觉效果。可视化在我们的日常生活中非常普遍,但它们通常以众所周知的图表和图形的形式出现。正确的数据可视化以有意义和直观的方式为复杂的数据集提供关键的见解。 数据可视化定义 数据可视化…

扫描全能王启动鸿蒙原生应用开发,系HarmonyOS NEXT智能扫描领域首批

近期,“鸿蒙合作签约暨扫描全能王鸿蒙原生应用开发启动仪式”(简称“签约仪式”)正式举行。合合信息与华为达成鸿蒙合作,旗下扫描全能王将基于HarmonyOS NEXT正式启动鸿蒙原生应用开发。据悉,扫描全能王是鸿蒙在智能扫…

【论文笔记】Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks

论文地址:Run, Dont Walk: Chasing Higher FLOPS for Faster Neural Networks 代码地址:https://github.com/jierunchen/fasternet 该论文主要提出了PConv,通过优化FLOPS提出了快速推理模型FasterNet。 在设计神经网络结构的时候&#xff…

Y9000P + ubuntu22.04 配置Anaconda+pycharm +pytorch

Anaconda3 的安装及使用方法安装 Anaconda3 Anaconda3 是 Anaconda 的具体版本 Anaconda3 中的 Python 解释器默认使用的是 Python3.x 版本,而不是 Python2.x 版本 Python2.x 版本中,字符串是以 ASCII 编码处理的,而在 Python3.x 版本中&am…

基于gradio快速部署自己的深度学习模型(目标检测、图像分类、语义分割模型)

gradio是一款基于python的算法快速部署工具,本博文主要介绍使用gradio部署目标检测、图像分类、语义分割模型的部署。相比于flask,使用gradio不需要自己构造前端代码,只需要将后端接口写好即可。此外,基于gradio实现的项目&#x…

浅谈数据仓库运营

一、背景 企业每天都会产生大量的数据,随着时间增长,数据会呈现几何增长,尤其在系统基建基础好的公司。好的数据仓库需要提前规划和好的运营,才能支持企业的发展,为企业提供数据分析基础。 二、目标 提高数据仓库存储…

排序算法讲解

1)排序思想: 2)排序代码: 3)注意点: 4)时间/空间复杂度和稳定性 下面的排序是以实现升序讲解的。 (一)直接插入排序 1)排序思想: 把待排序的…

[Angular] 笔记 10:服务与依赖注入

什么是 Services & Dependency Injection? chatgpt 回答: 在 Angular 中,Services 是用来提供特定功能或执行特定任务的可重用代码块。它们可以用于处理数据、执行 HTTP 请求、管理应用程序状态等。Dependency Injection(依赖注入&#…

竞赛保研 基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类

文章目录 0 简介1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径,图像尺寸,数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

002、使用 Cargo 创建新项目,打印 Hello World

1. Cargo 简介 Cargo 是 Rust 的构建系统和包管理工具,比如构建代码、下载依赖的库、构建这些库等等。在安装 Rust 时,Cargo也会一起安装。 2. 创建新项目的具体步骤 步骤1: 我们在桌面新建一个文件夹,用于存放后面练习用的代码文…

如何让机器人具备实时、多模态的触觉感知能力?

人类能够直观地感知和理解复杂的触觉信息,是因为分布在指尖皮肤的皮肤感受器同时接收到不同的触觉刺激,并将触觉信号立即传输到大脑。尽管许多研究小组试图模仿人类皮肤的结构和功能,但在一个系统内实现类似人类的触觉感知过程仍然是一个挑战…

【计算机网络】快速做题向 极限数据传输率的计算(有噪声/无噪声)

首先需要理解什么是码元 码元在课本上的概念比较难理解 但是只要记住 二进制码元在图上显示的就是有两种高度的横杠“—”(对应0,1),即,有两种二进制码元 四进制就是有四种高度的横杠“—”(对应00&…

与擎创科技共建一体化“数智”运维体系,实现数字化转型

小窗滴滴小编获取最新版公司简介 前言: 哈喽大家好,最近分享的互联网IT热讯大家都挺喜欢,小编看着数据着实开心,感谢大家支持,小编会继续给大家推送。 新岁即将启封,我们一年一期的运维干货年末大讲也要…

【C++】开源:fast-cpp-csv-parser数据解析库配置使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍fast-cpp-csv-parser数据解析库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一…

小程序面试题 | 22.精选小程序面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

亚马逊云科技 re:Invent 大会 - ElastiCache Serverless 模式来袭

大会介绍 亚马逊云科技的 re:Invent 大会是一年一度的,面向全球技术开发者科技盛会。几乎每次都会发布云科技、云计算等相关领域的产品重磅更新,不但将时下主流热门的技术不断整合,也未将来的发展标明了方向。 亚马逊云科技开发者社区为开发…

一键启动Python世界:PyCharm安装全攻略与pyinstaller魔法转换

文章目录 一、 前言二、PyCharm1.PyCharm的介绍2.PyCharm相比较cmd的优势3.PyCharm的下载4.PyCharm的安装4.1 第一步4.2 第二步4.3 第三步4.4 第四步4.5 第五步4.6 第六步4.7 安装完成4.8 同意条款4.9 数据共享4.10 软件界面4.11 新建项目4.12 项目编写和运行4.13 汉化 三、 打…

python消费rabbitmq

队列经常用,能保持信息一致性。也能跨语言,java写的生产者,推到队列中,python写的消费者消费。 这里,生成者,我们是java,已经发了一条消息了。 python是使用pika来链接rabbitmq 安装pika pip…

java SSM课程平台系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM课程平台系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S…