elasticsearch单台/多台部署

本文详细介绍了Elasticsearch的单机及多台部署步骤,包括创建用户、配置文件修改、内存限制调整、跨域设置等。在多台部署中,强调了集群配置、节点间通信以及最小主节点数的设定,确保集群稳定性和容错性。同时,文中还提及了避免脑裂现象和使用单播发现的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、单机部署

单机部署步骤

  • elasticsearch 是不允许root用户直接运行的,需要创建新的用户,并且把elasticsearch 下所有的文件更改所属用户

1.从官网下载压缩包

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

  • 可根据需要的版本进行下载:
    在这里插入图片描述在这里插入图片描述

2.压缩包解压缩

在这里插入图片描述

解压软件包
tar zxvf elasticsearch-7.17.0-linux-x86_64.tar.gz

在这里插入图片描述

3.创建用户,并授权:
  • elasticsearch 是不允许root用户直接运行的,需要创建新的用户
useradd es
passwd es

在这里插入图片描述

chown -R es:es /opt/elasticsearch-7.17.0

在这里插入图片描述

递归创建日志路径:
mkdir -p /data/apps/elasticsearch-7.17.0/logs
mkdir -p /data/apps/elasticsearch-7.17.0/data

在这里插入图片描述

给es用户授权:
chown -R es:es /data/apps/elasticsearch-7.17.0/

在这里插入图片描述
在这里插入图片描述

4.修改elasticsearch配置文件
vim /opt/elasticsearch-7.17.0/config/elasticsearch.yml

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http.cors.enabled: true
开启跨域
http.cors.allow-origin: "*"
开启所有
node.master: false
node.data: true
node.ingest: false
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#xpack.security.enabled: true 
#xpack.security.transport.ssl.enabled: true 
#xpack.security.transport.ssl.verification_mode: certificate 
#xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 
#xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
cluster.max_shards_per_node: 500000
修改jvm空间分配
  • 调整JVM内存为物理机内存大小的50%
    在这里插入图片描述
    在这里插入图片描述
修改文件创建数量的大小
修改文件创建数量的大小:
vim /etc/security/limits.conf

在这里插入图片描述

es soft nofile 65536
es hard nofile 65536

在这里插入图片描述

设置文件的大小参数
vim /etc/security/limits.d/20-nproc.conf 
末尾添加:
es soft nofile 65536
es hard nofile 65536
*  hard nproc  4096

在这里插入图片描述

设置最大内存的分配
vim /etc/sysctl.conf 
末尾添加:
vm.max_map_count=655360

在这里插入图片描述

重新加载配置
sysctl -p

在这里插入图片描述

5.切换用户,启动服务
su es
cd /opt/elasticsearch-7.17.0/bin/
./elasticsearch

在这里插入图片描述此刻正在运行中:
在这里插入图片描述

6.验证
  • 验证端口是否打开:
netstat -natp | grep 9200

在这里插入图片描述

curl命令验证:
curl 'http://192.168.133.10:9200/?pretty'

在这里插入图片描述

在这里插入图片描述

二、多台部署(举例2台)

按照上面的部署方式部署:
其中node1节点的配置文件需要修改:

vim /opt/elasticsearch-7.17.0/config/elasticsearch.yml

在这里插入图片描述
其中node2节点要注意:

  • 节点名称:
    在这里插入图片描述
  • 本机端口

在这里插入图片描述其他相同安装

验证
curl 'http://192.168.133.20:9200/?pretty'

在这里插入图片描述
访问页面:192.168.133.20
在这里插入图片描述

集群健康状态:
http://192.168.133.20:9200/_cluster/health?pretty

在这里插入图片描述

查看集群状态
http://192.168.133.10:9200/_cluster/state?pretty

在这里插入图片描述

/opt/elasticsearch-7.17.0/config/elasticsearch.yml

cluster.name: my-application
node.name: node-1
path.data: /data/apps/elasticsearch-7.17.0/data
path.logs: /data/apps/elasticsearch-7.17.0/logs
network.host: 192.168.133.10
http.port: 9200
discovery.seed_hosts: ["192.168.133.10","192.168.133.20"]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: ["node-1","node-2"]


node.master: true
node.data: true
node.ingest: false
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#xpack.security.enabled: true 
#xpack.security.transport.ssl.enabled: true 
#xpack.security.transport.ssl.verification_mode: certificate 
#xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 
#xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
cluster.max_shards_per_node: 500000

三、官方文档扩展

配置

1.指定名字
elasticsearch.yml 文件中修改:

集群名称
cluster.name: elasticsearch_production
节点名称
node.name: elasticsearch_005_data

2.路径

默认情况下,Elasticsearch 会把插件、日志以及你最重要的数据放在安装目录下。这会带来不幸的事故, 如果你重新安装 Elasticsearch 的时候不小心把安装目录覆盖了。如果你不小心,你就可能把你的全部数据删掉了。

path.data: /path/to/data1,/path/to/data2 

# Path to log files:
path.logs: /path/to/logs
通过逗号分隔指定多个目录。

3.最小节点数

minimum_master_nodes:
这个配置就是告诉 Elasticsearch 当没有足够 master 候选节点的时候,
就不要进行 master 节点选举,等 master 候选节点足够了才进行选举。


最好至少保证有 3 个节点:
discovery.zen.minimum_master_nodes: 2

设定对你的集群的稳定 极其 重要。 当你的集群中有两个 masters(注:主节点)的时候,这个配置有助于防止 脑裂 ,
脑裂:一种两个主节点同时存在于一个集群的现象。
集群发生了脑裂,那么你的集群就会处在丢失数据的危险中

4.单播代替组播
Elasticsearch 默认被配置为使用单播发现,以防止节点无意中加入集群。只有在同一台机器上运行的节点才会自动组成集群。

  • 组播:会导致集群变的脆弱,一个节点意外的加入到了你的生产环境
  • 单播,你可以为 Elasticsearch 提供一些它应该去尝试连接的节点列表。 当一个节点联系到单播列表中的成员时,它就会得到整个集群所有节点的状态,然后它会联系 master 节点,并加入集群。

这意味着你的单播列表不需要包含你的集群中的所有节点, 它只是需要足够的节点,当一个新节点联系上其中一个并且说上话就可以了。如果你使用 master 候选节点作为单播列表,你只要列出三个就可以了。 这个配置在 elasticsearch.yml 文件中:

discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]

总结

1.cluster.name
集群名字,三台集群的集群名字都必须一致

2.node.name
节点名字,三台ES节点字都必须不一样

3.discovery.zen.minimum_master_nodes:2
表示集群最少的master数,如果集群的最少master数据少于指定的数,将无法启动,官方推荐node master数设置为集群数/2+1,我这里三台ES服务器,配置最少需要两台master,整个集群才可正常运行

4.node.master该节点是否有资格选举为master,如果上面设了两个master_node 2,也就是最少两个master节点,则集群中必须有两台es服务器的配置为node.master: true的配置,配置了2个节点的话,如果主服务器宕机,整个集群会不可用,所以三台服务器,需要配置3个node.master为true,这样三个master,宕了一个主节点的话,他又会选举新的master,还有两个节点可以用,只要配了node master为true的ES服务器数正在运行的数量不少于master_node的配置数,则整个集群继续可用

我这里则配置三台es node.master都为true,也就是三个master,master服务器主要管理集群状态,负责元数据处理,比如索引增加删除分片分配等,数据存储和查询都不会走主节点,压力较小,jvm内存可分配较低一点

5.node.data
存储索引数据,三台都设为true即可

6.bootstrap.memory_lock: true
锁住物理内存,不使用swap内存,有swap内存的可以开启此项
7.discovery.zen.ping_timeout: 3000s
自动发现拼其他节点超时时间

8.discovery.zen.ping.unicast.hosts: [“172.16.0.8:9300”,“172.16.0.6:9300”,“172.16.0.22:9300”]
设置集群的初始节点列表,集群互通端口为9300

9.discovery.seed_hosts:
discovery.seed_hosts:发现设置。有两种重要的发现和集群形成配置,以便集群中的节点能够彼此发现并且选择一个主节点。

discovery.seed_hosts 是组件集群时比较重要的配置,用于启动当前节点时,发现其他节点的初始列表。
如果要与其他主机上的节点组成集群,则必须设置 discovery.seed_hosts,用来提供集群中的其他主机列表(它们是符合主机资格要求的master-eligible并且可能处于活动状态的且可达的,以便寻址发现过程)。此设置应该是群集中所有符合主机资格的节点的地址的列表。 每个地址可以是 IP 地址,也可以是通过 DNS 解析为一个或多个 IP 地址的主机(hostname)。

服务器上部署Elasticsearch (ES) 集群虽然不是常见的生产环境做法(因为这会丧失集群应有的高可用性和容错能力),但在测试、学习或资源有限的情况下可以作为一种解决方案。 ### 步骤一:准备阶段 首先确认您的服务器满足运行多个ES实例的需求: - **内存**:建议每个节点最少有4GB以上RAM,并配置足够的交换空间。 - **JDK安装**:确保已正确安装了Java Development Kit (JDK),推荐版本为官方文档指定的支持范围内的最新稳定版。 - **文件描述符限制提升**:为了提高性能并防止因过多连接导致的问题,默认的文件句柄数需要增大。 ### 步骤二:下载与解压 访问[Elastic官网](https://www.elastic.co/cn/downloads/elasticsearch)获取适合您操作系统的压缩包。这里假设我们已经将tar.gz格式的压缩包上传至目标机器,则通过命令行工具将其解压到期望的位置,如`/opt/elasticsearch-7.x.x`. ```bash cd /path/to/downloaded/package/ tar -zxvf elasticsearch-7.*.tar.gz -C /opt/ ``` 创建软链接以便于管理不同版本之间的切换: ```bash ln -s /opt/elasticsearch-7.x.x /opt/es_home ``` ### 步骤三:复制多份实例配置 由于是在一主机内部署虚拟化的“集群”,所以你需要对刚才建立的基础目录进行多次拷贝来模拟出独立的工作元。例如,想要构建包含三个节点的小型集群的话,就分别命名为node1,node2以及node3. ```bash cp -r /opt/es_home{,.nodes/node1} cp -r /opt/es_home{,.nodes/node3} # 更新各自的配置路径 for dir in $(ls .nodes);do ln -sf ${PWD}/.nodes/${dir} /etc/init.d/$dir;done; ``` > 注意: 如果是Windows系统则无需设置服务启动项,直接修改config下的elasticsearch.yml即可调整端口等参数 接着进入每一个新生成的副本中编辑其对应的conf/elasticsearch.yml 文件以区分各个成员的身份标识(cluster.name 和 node.name), 并设定监听地址及传输端口号(默认9200,9300). 同时还要确保所有实例都指向相同的cluster name. 对于第i个节点(node-i): ```yaml cluster.name: my-cluster # 全部相同表示属于同一个逻辑组 node.name: es-node$i # 每个实例唯一识别码 network.host: 0.0.0.0 # 监听任意网卡设备 http.port: 920${i} # HTTP REST API对外提供的web service接口 transport.tcp.port: 930${i} # 节点间通信所使用的TCP端口 discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"] # 列表内应列出其他成员信息用于发现机制查找伙伴节点 cluster.initial_master_nodes: [ "es-node1", "es-node2", "es-node3" ] # 初始化主选举集合列表,在首次引导时发挥作用 ``` 最后一步就是依次启动这几个经过定制后的进程啦! --- 在实际环境中,还涉及到安全性考量比如开启xpack认证授权功能;考虑到磁盘I/O效率影响因素可以选择SSD作为存储介质;另外别忘了定期备份重要数据以防万一哦~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值