【Elasticsearch】集群部署

news2024/11/24 14:07:40

文章目录

    • 本地集群Windiows
      • 创建 elasticsearch-cluster 文件夹,在内部复制三个 elasticsearch 服务
      • 修改集群文件目录中每个节点的 config/elasticsearch.yml 配置文件
      • 启动集群
      • 测试集群-查看集群状态
    • 本地开启集群Linux
      • 软件下载
      • 软件安装
      • 创建用户
      • 修改配置文件
      • 启动软件
      • 测试集群
    • Docker开启集群

本着生产ES基本上都部署在Linux系统上,本文主要介绍如何在Linux上部署ES集群,分两个部分:非docker版与docker版

本地集群Windiows

创建 elasticsearch-cluster 文件夹,在内部复制三个 elasticsearch 服务

修改集群文件目录中每个节点的 config/elasticsearch.yml 配置文件

  • node-1001节点

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

    #节点 2 的配置信息:
    #集群名称,节点之间要保持一致
    cluster.name: my-elasticsearch
    #节点名称,集群内要唯一
    node.name: node-1002
    node.master: true
    node.data: true
    #ip 地址
    network.host: localhost
    #http 端口
    http.port: 1002
    #tcp 监听端口
    transport.tcp.port: 9302
    discovery.seed_hosts: ["localhost:9301"]
    discovery.zen.fd.ping_timeout: 1m
    discovery.zen.fd.ping_retries: 5
    #集群内的可以被选为主节点的节点列表
    #cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
    #跨域配置
    #action.destructive_requires_name: true
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
  • node-1003 节点

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

启动集群

  • 启动前先删除每个节点中的 data 目录中所有内容(如果存在)

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

测试集群-查看集群状态

  • node-1001 节点

本地开启集群Linux

软件下载

官网下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-8-0

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz

软件安装

# 解压缩
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz -C /opt/module
# 改名
mv elasticsearch-7.8.0 es-cluster

创建用户

ES不允许root用户直接运行,所以每一个节点中要创建新用户

useradd es #新增 es 用户
passwd es #为 es 用户设置密码
userdel -r es #如果错了,可以删除再加
chown -R es:es /opt/module/es-cluster #文件夹所有者

修改配置文件

  • 修改/opt/module/es/config/elasticsearch.yml 文件

    # 加入如下配置
    #集群名称
    cluster.name: cluster-es
    #节点名称,每个节点的名称不能重复
    node.name: node-1
    #ip 地址,每个节点的地址不能重复
    network.host: linux1
    #是不是有资格主节点
    node.master: true
    node.data: true
    http.port: 9200
    # head 插件需要这打开这两个配置
    http.cors.allow-origin: "*"
    http.cors.enabled: true
    http.max_content_length: 200mb
    #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
    cluster.initial_master_nodes: ["node-1"]
    #es7.x 之后新增的配置,节点发现
    discovery.seed_hosts: ["linux1:9300","linux2:9300","linux3:9300"]
    gateway.recover_after_nodes: 2
    network.tcp.keep_alive: true
    network.tcp.no_delay: true
    transport.tcp.compress: true
    #集群内同时启动的数据任务个数,默认是 2 个
    cluster.routing.allocation.cluster_concurrent_rebalance: 16
    #添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
    cluster.routing.allocation.node_concurrent_recoveries: 16
    #初始化数据恢复时,并发恢复线程的个数,默认 4 个
    cluster.routing.allocation.node_initial_primaries_recoveries: 16
    
  • 修改/etc/security/limits.conf

    # 在文件末尾中增加下面内容
    es soft nofile 65536
    es hard nofile 65536
    
  • 修改/etc/security/limits.d/20-nproc.conf

    # 在文件末尾中增加下面内容
    es soft nofile 65536
    es hard nofile 65536
    * hard nproc 4096
    # 注:* 代表 Linux 所有用户名称
    
  • 修改/etc/sysctl.conf

    # 在文件中增加下面内容
    vm.max_map_count=655360
    
  • 重新加载

    sysctl -p
    

启动软件

分别在不同节点上启动 ES 软件

cd /opt/module/es
#启动
bin/elasticsearch
#后台启动
bin/elasticsearch -d

测试集群

Docker开启集群

docker-compose.yml文件编写

version: '3'
services:
  es01:
    image: elasticsearch:7.9.3        # 使用elasticsearch:7.9.3镜像
    container_name: es01              # 容器名称
    environment:
      - node.name=es01                # 设置节点名称
      - cluster.name=mycluster        # 设置集群名称
      - discovery.seed_hosts=es02,es03 # 设置发现种子主机列表
      - cluster.initial_master_nodes=es01,es02,es03 # 设置初始主节点列表
    networks:
      esnet:                          # 将服务放置在esnet网络中
        ipv4_address: 172.20.0.2      # 分配静态IP地址
    volumes:
      - /path/to/data1:/usr/share/elasticsearch/data # 将数据目录映射到主机上的/path/to/data1
    ports:
      - "9200:9200"                   # 将Elasticsearch的9200端口映射到主机的9200端口
      - "9300:9300"                   # 将Elasticsearch的9300端口映射到主机的9300端口
  es02:
    image: elasticsearch:7.9.3        # 使用elasticsearch:7.9.3镜像
    container_name: es02              # 容器名称
    environment:
      - node.name=es02                # 设置节点名称
      - cluster.name=mycluster        # 设置集群名称
      - discovery.seed_hosts=es01,es03 # 设置发现种子主机列表
      - cluster.initial_master_nodes=es01,es02,es03 # 设置初始主节点列表
    networks:
      esnet:                          # 将服务放置在esnet网络中
        ipv4_address: 172.20.0.3      # 分配静态IP地址
    volumes:
      - /path/to/data2:/usr/share/elasticsearch/data # 将数据目录映射到主机上的/path/to/data2
  es03:
    image: elasticsearch:7.9.3        # 使用elasticsearch:7.9.3镜像
    container_name: es03              # 容器名称
    environment:
      - node.name=es03                # 设置节点名称
      - cluster.name=mycluster        # 设置集群名称
      - discovery.seed_hosts=es01,es02 # 设置发现种子主机列表
      - cluster.initial_master_nodes=es01,es02,es03 # 设置初始主节点列表
    networks:
      esnet:                          # 将服务放置在esnet网络中
        ipv4_address: 172.20.0.4      # 分配静态IP地址
    volumes:
      - /path/to/data3:/usr/share/elasticsearch/data # 将数据目录映射到主机上的/path/to/data3
  kibana:
    image: kibana:7.9.3               # 使用kibana:7.9.3镜像
    container_name: kibana            # 容器名称
    environment:
      - ELASTICSEARCH_HOSTS=http://es01:9200 # 设置Kibana使用的Elasticsearch URL
    ports:
      - "5601:5601"                   # 将Kibana的5601端口映射到主机的5601端口
  es-head:
    image: mobz/elasticsearch-head:5 # 使用mobz/elasticsearch-head:5镜像
    container_name: es-head           # 容器名称
    ports:
      - "9100:9100"                   # 将ES-head的9100端口映射到主机的9100端口
    environment:
      - "ES_CONNECT=http://es01:9200" # 设置ES-head使用的Elasticsearch URL
    networks:
      esnet:                          # 将服务放置在esnet网络中
        ipv4_address: 172.20.0.5      # 分配静态IP地址
networks:
  esnet:                              # 创建名为esnet的网络
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/16       # 指定子网
          gateway: 172.20.0.1         # 指定网关

启动集群

docker-compose up

ik中文分词器->插件

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

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

相关文章

链表及链表的常见操作和用js封装一个链表

最近在学数据结构和算法,正好将学习的东西记录下来,我是跟着一个b站博主学习的,是使用js来进行讲解的,待会也会在文章后面附上视频链接地址,大家想学习的可以去看看 本文主要讲解单向链表,双向链表后续也会…

Java后端:html转pdf实战笔记

目录 1、htmltopdf有什么用? 2、什么是wkhtmltopdf 3、wkhtmltopdf 参数介绍 4、示例项目 5、预览效果 1、htmltopdf有什么用? htmltopdf 是一款基于wkhtmltopdf技术的html转pdf文档java类库,支持html转pdf和url转pdf。 2、什么是wkhtmltopdf…

Renesa 瑞萨 A4M2 移植文件系统FAT32

配置SDIO底层驱动(SD card) 跳到对应GPIO,进行复用 将Operation Mode配置 SD_MMC 4Bit,系统会自动配置 会到stacks 根据上面提示,解决错误。 解决第一个error mmc配置 mmc 以上SD卡底层配置完成 使用串口作为…

linux rs485功能增加

目录 串口驱动层级结构 485配置流程 dts相关 配置注册 初始化 485收发切换 delay_after_send 目前linux 内核中已经支持了485的实现,但由于底层驱动的支持情况,导致我们采用不同芯片时需要对底层驱动进行修改,以满足内核485的各个回调…

Linux-基本指令2

文章目录 touch(新建一个文件)whoami(查看当前用户名)概念:1.你是如何看待指令的?2.我们在执行指令之前,我们应该先做什么? 概念:/tree . (树状显示文件夹和文件)rmdir && rmrmdirrm ctrl c通配符…

【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)

例题来源:侯忠生教授的《无模型自适应控制:理论与应用》(2013年科学出版社)。 👉对应书本 4.4 单输入单输出系统(SISO)全格式动态线性化(FFDL)的无模型自适应控制(MFAC) 上两篇博客分别介绍了基于紧格式和偏格式动态线…

软件分享--安卓纯文本记事本软件,支持多记事本与密码

文章目录 软件名字:LS记事本支持多记事本安全性:备份和恢复:搜索功能:显示功能:字体调节:轻量绿色下载地址 软件名字:LS记事本 支持多记事本 安全性: 1.每个记事本支持设置访问密码…

【Elasticsearch】几点核心概念

文章目录 核心概念系统架构分布式集群单节点集群故障转移水平扩容应对故障 路由计算(确定哪个主分片)分片控制(确定哪个节点)创建个集群如何查看数据呢?写流程读流程更新流程 分片原理倒序索引文档搜索动态更新索引持久化变更 文档分析内置分…

“Lunar Lobster “现已经可以下载

Canonical近日发布了Ubuntu 23.04(Lunar Lobster)操作系统,这是对其流行的GNU/Linux发行版的一次重大更新,带来了一些最新和最伟大的技术和开源软件。 被称为 “Lunar Lobster”,Ubuntu 23.04由最新的Linux 6.2内核系列…

【计算机网络】学习笔记:第五章 传输层【王道考研】

基于本人观看学习b站王道计算机网络课程所做的笔记&#xff0c;不做任何获利 仅进行交流分享 特此鸣谢王道考研 若有侵权请联系&#xff0c;立删 如果本篇笔记帮助到了你&#xff0c;还请点赞 关注 支持一下 ♡>&#x16966;<)!! 主页专栏有更多&#xff0c;如有疑问欢迎…

【数据结构与算法】哈希—— 位图 | 布隆过滤器 | 哈希切割

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《数据结构与算法》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 哈希是一种映射思想&#xff0c;这里再讲解两种应用哈希思想的数据结构。 哈希—— 位图 | …

边学边记——数据结构☞堆(包括优先级队列的介绍)

目录 一、堆&#xff08;二叉堆&#xff09; 堆是用来干什么的&#xff1f; 堆是用什么存储结构存储的&#xff1f; 1. 堆的概念 2. 堆的性质 3. 堆的存储方式 下标之间的规则&#xff1a; 4. 堆的基本操作 (1). 向下调整/堆化操作 (2).堆的创建 (3).堆的插入 (4…

2023-04-30:用go语言重写ffmpeg的resampling_audio.c示例,它实现了音频重采样的功能。

2023-04-30&#xff1a;用go语言重写ffmpeg的resampling_audio.c示例&#xff0c;它实现了音频重采样的功能。 答案2023-04-30&#xff1a; resampling_audio.c 是 FFmpeg 中的一个源文件&#xff0c;其主要功能是实现音频重采样。 音频重采样是指将一段音频数据从一个采样率…

duubo+zookeeper

1、Dubbo简介 1. Dubbo是什么&#xff1f; 高性能、轻量级、开源、基于java Dubbo 是阿里集团开源的远程服务调用的分布式框架&#xff08;告别Web Service模式中的WSDL&#xff0c;以服务者与消费者的方式在dubbo上注册&#xff09; 协议和序列化框架都可以插拔是及其鲜明…

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

代码相当复杂&#xff0c;操作很繁琐&#xff0c;自己都要研究半天T_T 文件夹展示 01提取提取新表的已有内容&#xff08;提取大8班、大7班的新版本里面的额内容&#xff09; &#xff08;需要里面的一些反思&#xff0c;用来占位&#xff09; 这里有一份根据新模板用Python批…

spring2:创建和使用

目录 1.创建Spring项目 1.1创建Maven类 1.2添加Spring支持框架 1.3添加启动类 2.存储Bean对象 2.0 spring项目中添加配置文件(第一次) 2.1创建Bean 2.2把Bean注册到容器中 3.获取并使用Bean对象 3.1创建上下文 3.2获取指定Bean对象 getBean()方法 --> 获取什么…

双周赛103(模拟、网格图BFS、树状数组)

文章目录 双周赛103[6406. K 个元素的最大和](https://leetcode.cn/problems/maximum-sum-with-exactly-k-elements/)模拟 [6405. 找到两个数组的前缀公共数组](https://leetcode.cn/problems/find-the-prefix-common-array-of-two-arrays/)模拟 [6403. 网格图中鱼的最大数目](…

Java 基础进阶篇(一)——— static 静态关键字与单例模式

文章目录 一、static 静态关键字1.1 静态成员变量与实例成员变量1.2 静态成员方法与实例成员方法1.3 static 访问注意事项1.4 内存使用情况 二、工具类三、代码块四、单例模式4.1 饿汉单例4.2 懒汉单例 一、static 静态关键字 static&#xff1a;代表静态的意思&#xff0c;可…

【博学谷学习记录】超强总结,用心分享丨人工智能 AI项目 collate_fn函数理解与记录

目录 Dataloader取数据过程使用报错&#xff1a;默认collate_fn处理不同长度的数据自定义collate_fn伪代码示例 Dataloader取数据过程 取出大小等同于batch size的index列表;将列表列表中的index输入到dataset的getitem()函数中&#xff0c;取出该index对应的数据;对每个index…

一种基于坑位模版的分页方案

一. 概述 1.1 业务诉求 想象一个向用户展示数据的下拉列表&#xff0c;数据的来源有多种方式。支持在每一页都按固定的数据源类型及顺序展示。 1.2 业务场景 up主的主页展示带货商品列表 商品来源有多种&#xff1a;up主自选、官方推荐的、根据up主风格AI推荐用户推荐视频列表…