elasticsearch单台/多台部署

一、单机部署

单机部署步骤

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

1.从官网下载压缩包

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

  • 可根据需要的版本进行下载:
    elasticsearch单台/多台部署_第1张图片elasticsearch单台/多台部署_第2张图片

2.压缩包解压缩

elasticsearch单台/多台部署_第3张图片

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

elasticsearch单台/多台部署_第4张图片

3.创建用户,并授权:

  • elasticsearch 是不允许root用户直接运行的,需要创建新的用户
useradd es
passwd es

elasticsearch单台/多台部署_第5张图片

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

elasticsearch单台/多台部署_第6张图片

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

elasticsearch单台/多台部署_第7张图片

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

elasticsearch单台/多台部署_第8张图片
elasticsearch单台/多台部署_第9张图片

4.修改elasticsearch配置文件

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

elasticsearch单台/多台部署_第10张图片elasticsearch单台/多台部署_第11张图片
elasticsearch单台/多台部署_第12张图片
elasticsearch单台/多台部署_第13张图片

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%
    elasticsearch单台/多台部署_第14张图片
    elasticsearch单台/多台部署_第15张图片

修改文件创建数量的大小

修改文件创建数量的大小:
vim /etc/security/limits.conf

elasticsearch单台/多台部署_第16张图片

es soft nofile 65536
es hard nofile 65536

elasticsearch单台/多台部署_第17张图片

设置文件的大小参数

vim /etc/security/limits.d/20-nproc.conf 
末尾添加:
es soft nofile 65536
es hard nofile 65536
*  hard nproc  4096

elasticsearch单台/多台部署_第18张图片

设置最大内存的分配

vim /etc/sysctl.conf 
末尾添加:
vm.max_map_count=655360

elasticsearch单台/多台部署_第19张图片

重新加载配置
sysctl -p

elasticsearch单台/多台部署_第20张图片

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

在这里插入图片描述此刻正在运行中:
elasticsearch单台/多台部署_第21张图片

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

在这里插入图片描述

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

elasticsearch单台/多台部署_第22张图片

elasticsearch单台/多台部署_第23张图片

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

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

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

elasticsearch单台/多台部署_第24张图片
其中node2节点要注意:

  • 节点名称:
    elasticsearch单台/多台部署_第25张图片
  • 本机端口

elasticsearch单台/多台部署_第26张图片其他相同安装

验证

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

elasticsearch单台/多台部署_第27张图片
访问页面:192.168.133.20
elasticsearch单台/多台部署_第28张图片

集群健康状态:

http://192.168.133.20:9200/_cluster/health?pretty

elasticsearch单台/多台部署_第29张图片

查看集群状态

http://192.168.133.10:9200/_cluster/state?pretty

elasticsearch单台/多台部署_第30张图片

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

你可能感兴趣的