ElasticSearch集群环境

ElasticSearch集群环境

1、Linux单机

下载地址:LINUX X86_64 (elastic.co)

下载之后进行解压

tar -zxf elasticsearch-7.8.0-linux-x86_64.tar.gz 

image-20240507095707572

名字太长了改个名字改成es

mv elasticsearch-7.8.0 es

image-20240507095749658

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

useradd es
password es

修改es文件的所有者为es

chown -R es:es /opt/es

image-20240507165740327

修改配置文件

修改/es/config/elasticsearch.yml 文件,添加以下配置

cluster.name: elasticsearch
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]

image-20240507103642070

修改/etc/security/limits.conf,在文件的尾行增加每个进程可以打开的文件数的限制

es soft nofile 65536
es hard nofile 65536

image-20240507164456424

修改/etc/security/limits.d/20-nproc.conf,和上面的限制一样还是限制每个进程可以打开的文件数以及操作系统级别对每一个用户创建的进程数的限制。

es soft nofile 65536
es hard nofile 65536
# 操作系统级别对每个用户创建的进程数的限制
* hard nproc 4096
# 注:* 带表 Linux 所有用户名称

image-20240507164959626

修改/etc/sysctl.conf

# 一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536
vm.max_map_count=655360

image-20240507165159710

重新加载一下系统配置文件

sysctl -p

image-20240507165820949

先切换为es用户然后到es目录下启动es

su es
bin/elasticsearch

image-20240507170217353

现在虚拟机中的浏览器访问一下9200端口,出现node-1节点的相关信息访问成功

image-20240507171018837

把防火墙关闭之后使用本地的浏览器访问也能显示json串

image-20240507171245863

linux单机的就这样结束

2、Linux集群

linux中开几个文件把端口信息改掉就好

这里因为要重复三次一样的解压、改名、赋予权限的操作太麻烦,直接写一个脚本自动执行。

#!/bin/bash  
#注意:解压缩和命名操作均在当前文件夹下执行
# 检查是否存在要解压的文件  
if [ ! -f "elasticsearch-7.8.0-linux-x86_64.tar.gz" ]; then  echo "elasticsearch-7.8.0-linux-x86_64.tar.gz 文件不存在,请检查文件路径。"  exit 1  
fi  
# 设置目标用户和组(这里es用户和组已经存在)  
TARGET_USER="es"  
TARGET_GROUP="es"  # 循环两次以创建esnode2和esnode3  
for i in {1..2}; do  # 解压缩文件(如果目录已存在,则先删除)  if [ -d "elasticsearch-7.8.0" ]; then  rm -rf elasticsearch-7.8.0  fi  tar -zxf elasticsearch-7.8.0-linux-x86_64.tar.gz  # 重命名目录  NEW_NAME="esnode$(($i+1))"  mv elasticsearch-7.8.0 "$NEW_NAME"  # 更改目录的所属用户和组  chown -R "$TARGET_USER:$TARGET_GROUP" "$NEW_NAME"  echo "已成功创建并设置 $NEW_NAME 的所属用户和组为 $TARGET_USER:$TARGET_GROUP"  
done  
echo "所有操作已完成。"

修改/esnode1/config/elasticsearch.yml文件

#集群名称
cluster.name: my-cluster
#节点名称
node.name: "es-node-1"
#定义1为主节点
node.master: true
#定义节点2节点3为数据节点
node.data: true
#访问的IP地址,0.0.0.0表示不限制
network.host: 0.0.0.0
#访问端口号
http.port: 9201
#集群通讯端口号
transport.tcp.port: 9300#所有节点的ip地址
discovery.zen.ping.unicast.hosts: ["192.168.73.66:9300", "192.168.73.66:9301", "192.168.73.66:9302"]

修改/esnode2/config/elasticsearch.yml文件

#集群名称
cluster.name: my-cluster
#节点名称
node.name: "es-node-2"
#定义1为主节点
node.master: true
#定义节点2节点3为数据节点
node.data: true
#访问的IP地址,0.0.0.0表示不限制
network.host: 0.0.0.0
#访问端口号
http.port: 9202
#集群通讯端口号
transport.tcp.port: 9301#所有节点的ip地址
discovery.zen.ping.unicast.hosts: ["192.168.73.66:9300", "192.168.73.66:9301", "192.168.73.66:9302"]

修改/esnode3/config/elasticsearch.yml文件

#集群名称
cluster.name: my-cluster
#节点名称
node.name: "es-node-3"
#定义1为主节点
node.master: true
#定义节点2节点3为数据节点
node.data: true
#访问的IP地址,0.0.0.0表示不限制
network.host: 0.0.0.0
#访问端口号
http.port: 9203
#集群通讯端口号
transport.tcp.port: 9302#所有节点的ip地址
discovery.zen.ping.unicast.hosts: ["192.168.73.66:9300", "192.168.73.66:9301", "192.168.73.66:9302"]

注意: Elasticsearch 默认的 JVM 堆大小是最小/最大 1 GB,所以我使用的虚拟机的内存必须是4G因为你启动了三个服务要确保它们能各分1G正常启动,否则就会报错内存不足无法启动。

分别用es用户身份启动它们

image-20240511135028867

获取每个节点的信息

主节点es-node-1

image-20240511141235648

es-node-2

image-20240511141302381

es-node-3

image-20240511141314703

3、windows集群

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

image-20240511160311941

修改集群文件目录中每个节点的 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目录需要先删除再逐一启动。

image-20240511161816546

查看一下集群

image-20240511161930994

localhost:1001/_cluster/health

image-20240511162031377
向主节点中添加一个索引user

image-20240511162817264

分别在节点2和3中查询一下

image-20240511163018436

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

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

相关文章

性能优化 | el-table中内嵌大量el-input控件导致渲染卡顿的问题

场景 项目中有一个应用场景,用户需要在表单中大量使用选择框以及输入框填写数据(每一行大概有三十几个输入框),当选择框与输入框达到一定数量的时候,页面会出现输入不连续、卡顿的现象,如下图:…

【信息系统项目管理师知识点速记】风险管理:规划风险管理

规划风险管理是确保项目风险得到有效管控的关键前期步骤,它为整个项目生命周期中识别、分析、应对和监控风险提供了蓝图。 核心目的 匹配度:确保风险管理策略与项目风险水平、组织及干系人重要性相匹配。适时调整:项目初期完成,但需在重大变动时重新评估和调整。输入要素 …

16.直方图均衡化

数字图像处理(17): 直方图均衡化处理 简介 直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用于增强动态范围偏小的图像的对比度。当原始图像的灰度分布较为集中的时候,可能造成图像不够清晰&…

如何高效率阅读文献

很多导师曾说,不应该花费超过30分钟阅读一篇论文,在某些特殊的时间段,30分钟甚至可能都算是太多的时间,比如:你正准备毕业论文或者想要发表论文的时候…… 文献阅读为何如此重要?又该如何有效快速的阅读&a…

C++基础与深度解析 | 什么是C++ | C++开发环境与相关工具 | C++编译/链接模型

文章目录 一、什么是C二、C的开发环境与相关工具三、C的编译/链接模型 一、什么是C C是一门比较流行的编程语言(高级语言),同时也是一门复杂的语言。从TIOBE 编程社区指数中可以看出:在2024.04中,其编程语言受欢迎程度…

HCIP【BGP综合实验】

目录 一、实验拓扑图: 二、实验要求: 三、实验思路: 四、实验步骤: 1、进行网段的子网划分(整个实验总共有19条网段): (1)首先,根据实验要求,将172.16.0.0/16全部划…

2024湖南理工学院程序设计竞赛(同步赛) G. 区间递减(思维题 分类讨论 ST表)

题目 https://ac.nowcoder.com/acm/contest/82672/G 思路来源 出题人 涼風青葉7代码 题解 注意到三种情况即可, 第一种情况,10 9 8 1 2,保留1 第二种情况,6 5 10 9 4 4,保留5 4 4 第三种情况,6 5 4&…

基于STM32单片机的二轮平衡小车

设计一个基于STM32单片机的二轮平衡小车是一个涉及硬件选择、软件编程、控制算法和机械设计的复杂项目。这里我可以给你一个大致的项目概述和一些基础的代码示例,但请注意,完整的项目设计和实现将需要更详细的规划和大量的调试工作。 1. 项目概述 二轮…

SpringBoot使用腾讯云实现短信功能

引入依赖 <!-- 腾讯云依赖 --> <dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>3.1.270</version> </dependency>配置文件 # 腾讯云短信配置 sms:tence…

jdk8的新特征

1&#xff1a; jdk8中新增的方法 在jdk8中对接口进行了增强&#xff0c;在jdk8之前 interface 接口名{ 静态常量&#xff1a; 抽象方法&#xff1a; } 在jdk8之后 interface 接口名{ 静态常量&#xff1a; 抽象方法&#xff1a; 默认方法&#xff1a; 静态方法&#xff1a; } 2…

linux使用/etc/hosts.deny拒绝恶意ssh到本机

一、目标 在某些特殊情况下&#xff0c;服务器有很多恶意暴力ssh破解的攻击。解决的办法有很多&#xff0c;这里用/etc/hosts.deny增加黑名单的方式来简单阻止一下。 二、前言 /etc/hosts.allow 优先于 /etc/hosts.deny。 如果在allow和deny文件中都有某个ip&#xff0c;那…

JAVA基础--IO

IO 什么是IO 任何事物提到分类都必须有一个分类的标准&#xff0c;例如人&#xff0c;按照肤色可分为&#xff1a;黄的&#xff0c;白的&#xff0c;黑的&#xff1b;按照性别可分为&#xff1a;男&#xff0c;女&#xff0c;人妖。IO流的常见分类标准是按照*流动方向*和*操作…

人形机器人的组成原理、相关技术和行业应用

人形机器人的部件和工作原理 人形机器人的部件通常包括机身、关节、传感器、驱动器、控制器等。其工作原理是通过传感器收集环境信息&#xff0c;控制器根据预设的算法和程序生成动作指令&#xff0c;驱动器驱动关节运动&#xff0c;从而实现机器人的各种动作。 人形机器人主要…

Google与哈佛大学的科学家团队共同创造了一张人脑中一个极小部分的精细地图

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

插件:Best HTTP

一、简介 WebSocket WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据。在WebSocket API中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c;两者之间就直接可以创建持久性的连接&#xff0c;并进行双向数据传输。…

【SRC实战】无法支付的修改金额支付漏洞

挖个洞先 https://mp.weixin.qq.com/s/F4f8R4uKN0Q9BnTmjDMleg “ 以下漏洞均为实验靶场&#xff0c;如有雷同&#xff0c;纯属巧合 ” 01 — 漏洞证明 一、企业用户&#xff0c;标准商品 “ 支付订单需要公对公银行卡转账&#xff0c;如何绕过&#xff1f;” 1、点击任意…

bert 的MLM框架任务-梯度累积

参考&#xff1a;BEHRT/task/MLM.ipynb at ca0163faf5ec09e5b31b064b20085f6608c2b6d1 deepmedicine/BEHRT GitHub class BertConfig(Bert.modeling.BertConfig):def __init__(self, config):super(BertConfig, self).__init__(vocab_size_or_config_json_fileconfig.get(vo…

java入门-面向对象的三大特性

面向对象三大特性 封装 什么是封装 封装 是将代码及其处理的数据绑定在一起的一种编程机制&#xff0c;该机制保证了程序和数据都不受外部干扰且不被误用。 封装的作用 访问控制符 方法传参-值传递 传参类型是基本类型 程序案例&#xff1a; public static void main(St…

C++笔记(体系结构与内核分析)

1.OOP面向对象编程 vs. GP泛型编程 OOP将data和method放在一起&#xff0c;目的是通过封装、继承、多态提高软件的可维护性和可扩展性GP将data和method分开&#xff0c;可以将任何容器与任何算法结合使用&#xff0c;只要容器满足塞饭所需的迭代器类型 2.算法与仿函数的区别 …

Flutter 中的 Column 小部件:全面指南

Flutter 中的 Column 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;Column 是一个垂直布局的小部件&#xff0c;用于将子控件沿着垂直轴排列。Column 与 Row 相对&#xff0c;Row 是水平布局&#xff0c;而 Column 则是垂直布局。它非常适合用来创建列式布局&#xf…