elasticsearch单台/多台部署

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

一、单机部署

单机部署步骤

  • 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)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值