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

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
概述: Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它可以处理大量结构化和非结构化数据。在本文中,我们将了解如何在Linux环境中搭建Elasticsearch集群。 步骤: 步骤1:安装Java 在安装Elasticsearch之前,Java是必需的。您可以使用以下命令从命令行安装Java: ``` sudo apt-get update sudo apt-get install default-jre ``` 步骤2:下载和安装Elasticsearch 您可以从Elasticsearch官方网站下载最新版本的Elasticsearch。下载完成后,您可以使用以下命令安装它: ``` sudo dpkg -i elasticsearch-7.10.1-amd64.deb ``` 步骤3:配置Elasticsearch 默认情况下,Elasticsearch将在本地主机上运行。您可以通过编辑以下文件来更改默认配置: ``` sudo nano /etc/elasticsearch/elasticsearch.yml ``` 在此文件中,您可以更改以下设置: - cluster.name:设置集群名称。 - node.name:设置节点名称。 - network.host:设置网络接口。 - http.port:设置HTTP端口。 步骤4:启动Elasticsearch 要启动Elasticsearch,请使用以下命令: ``` sudo systemctl start elasticsearch ``` 要检查Elasticsearch是否正在运行,请使用以下命令: ``` sudo systemctl status elasticsearch ``` 步骤5:配置Elasticsearch集群 要配置Elasticsearch集群,请编辑以下文件: ``` sudo nano /etc/elasticsearch/elasticsearch.yml ``` 在该文件中,您可以使用以下设置来配置集群: - cluster.name:设置集群名称。 - node.name:设置节点名称。 - network.host:设置网络接口。 - http.port:设置HTTP端口。 - discovery.seed_hosts:设置种子主机列表。 在配置文件中,您还需要更改以下设置: ``` cluster.initial_master_nodes: ["node-1", "node-2"] ``` 此设置定义了集群中的初始主节点。您需要在每个节点上设置不同的名称。 步骤6:启动Elasticsearch集群 要启动Elasticsearch集群,请使用以下命令: ``` sudo systemctl start elasticsearch ``` 要检查Elasticsearch集群是否正在运行,请使用以下命令: ``` curl -X GET "http://localhost:9200/_cluster/health?pretty=true" ``` 此命令将显示有关集群的健康状态信息。 结论: 在本文中,我们了解了如何在Linux环境中搭建Elasticsearch集群。我们从安装Java开始,然后下载和安装Elasticsearch。接下来,我们配置了Elasticsearch,并启动了它。最后,我们配置了Elasticsearch集群,并启动了它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fiercezm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值