windows部署集群的ES、linux单机、linux集群(超详细)

一、windows集群环境

1.下载ES压缩包,然后解压缩

https://pan.baidu.com/s/1lMJoWIhXVFmC24ToO5IJmg?pwd=5zcg 提取码: 5zcg

2.如果本地已经运行过ES,则需要删除里面的data、logs目录,没有运行过,找到config目录,然后打开elasticsearch.yml文件,打开这个地方的注释,第一个就是集群的名称,所有ES节点的集群名称必须保持一致(如果要改集群名称,其他节点的集群名称记得要改成一样的);第二个就是节点名称;第三个配置是该节点就是master节点;第四个配置就是当前节点也是数据节点;第五个就是本地IP地址;第六个就是ES对外的端口;第七个就是ES内部通信的端口号

cluster.name: my-application
node.name: node-1001
node.master: true
node.data: true
network.host: localhost
http.port: 1001
transport.tcp.port: 9301
#跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*
在这里插入图片描述

3.在文件最后加上允许跨域设置,到这里,第一个节点的配置就设置好了,找到bin目录,然后双击elasticsearch.bat,可以启动试试,服务能否正常启动成功。

在这里插入图片描述

3.1、可以看到已经成功启动一个节点,控制台已经打印出了集群名称、节点名称

在这里插入图片描述

3.2、再访问一下配置文件中对外暴漏的端口号,看能否访问,我这里是请求查看集群的健康状态
number_of_nodes表示当前节点
number_of_data_nodes表示当前数据节点
然后继续配置后面的集群节点,直接复制第一个节点的ES文件,复制出来的data、logs目录都不要,因为是全新的节点

在这里插入图片描述

4.修改第二个节点的配置,打开ES的yml文件,需要修改几个地方,第一步修改节点名称,不能跟第一节点的节点名称重复;第二步修改对外暴露的端口号,也不能跟第一节点的端口号冲突;第三步修改内部通信端口号;第四步增加tcp监听端口配置,因为是集群模式,所以需要知道其他节点的ip以及内部通信端口,然后启动第二节点的ES

cluster.name: my-application
node.name: node-1002
node.master: true
node.data: true
network.host: localhost
http.port: 1002
transport.tcp.port: 9402
#tcp监听端口,用于寻找其他ES节点,使用内部通讯端口
discovery.seed_hosts: [“localhost:9401”]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
#跨域配置
http.cors.enabled: true
http.cors.allow-origin: “*”
在这里插入图片描述

4.1第二个节点也启动成功

在这里插入图片描述

4.2然后再调用1001的接口,查询集群的健康状态,可以看到已经有两个节点以及两个数据节点

在这里插入图片描述

4.3 如果查看整个集群状态,只有一个节点,那证明两个节点通信失败,查看两个节点的log日志,ReceiveTimeoutTransportException: [node-1001][127.0.0.1:9301][internal:cluster/coordination/join] request_id [13] timed out after [60123ms],可以判断出在Elasticsearch集群中,节点 node-1001 尝试通过 127.0.0.1:9301端口进行内部集群协调加入操作时,请求超时了。
解决办法:
4.3.1 关闭防火墙
4.3.2 根据上面步骤查看一下两个节点的配置是不是有问题
4.3.3 删除两个节点中data目录,以及删除两个节点的logs目录下所有的文件(注意,这个是要保留logs目录的)
4.3.4 如果还是无法加入集群中,则查看你所命名的端口号是不是被占用了,打开cmd窗口,使用
使用命令 netstat -ano | findstr :端口号
如果被其他应用占用了端口,可以选择杀死进程或者将ES节点的内部通信端口改一下,改完内部通信端口,别忘了修改第二个节点中去通信第一个节点的端口。然后重复一下4.3.3操作,就可以正常启动成功

5.再复制第二个节点的ES文件作为第三个节点,还是先删除data、logs目录(logs目录需要保留,删除logs目录里面的文件)

cluster.name: my-application
node.name: node-1003
node.master: true
node.data: true
network.host: localhost
http.port: 1003
transport.tcp.port: 9403
discovery.seed_hosts: ["localhost:9401","localhost:9402"] 
discovery.zen.fd.ping_timeout: 1m 
discovery.zen.fd.ping_retries: 5 

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

5.1 然后再调接口查看集群的健康状况,可以看到集群节点是3个,数据节点是3个,证明集群环境搭建好了

在这里插入图片描述

二、linux单节点环境

1.linux环境ES下载

https://pan.baidu.com/s/13w32eMZxBTwiKHPxw-ZSDg?pwd=Qa9C
提取码:Qa9C

2.将上传的es.tar包解压,我这里是放在/opt中,然后修改了文件名

在这里插入图片描述

3.创建用户因为安全问题,Elasticsearch 不允许 root 用户直接运行,所以要创建新用户,在 root 用户中创建新用户

useradd es #新增es用户 passwd es #为es用户设置密码 
 
#注意  userdel -r es #如果错了,可以删除再加 
chown -R es:es /opt/es #文件夹所有者,目录的位置就是你存放es目录的位置

在这里插入图片描述

4.修改config/elasticsearch.yml 文件,这里加的配置在windos集群中都有解释

在这里插入图片描述

5.修改系统配置文件,因为es生成的文件、数据比较多,控制es的时候可能会出问题,所以需要修改一下系统配置,修改/etc/security/limits.conf

/etc/security/limits.conf 文件末尾中增加下面内容 # 每个进程可以打开的文件数的限制 
es soft nofile 65536 es hard nofile 65536 

在这里插入图片描述

5.1 修改/etc/security/limits.d/20-nproc.conf

# 在文件末尾中增加下面内容 # 每个进程可以打开的文件数的限制 
es soft nofile 65536
es hard nofile 65536
# 操作系统级别对每个用户创建的进程数的限制 
* hard nproc 4096
# 注:* 带表Linux所有用户名称

在这里插入图片描述

5.2 修改/etc/sysctl.conf

# 在文件中增加下面内容 
# 一个进程可以拥有的VMA(虚拟内存区域)的数量,默认值为65536 
vm.max_map_count=655360

在这里插入图片描述

5.3 重新加载

sysctl -p

6. 如果当前虚拟机的用户是root用户,是不允许直接启动es的,必须要切换到es用户

在这里插入图片描述

6.1 退回到config的上一层目录,也就是es的这个大目录下使用 bin/elasticsearch,可以看到,我这里已经启动成功了,访问虚拟机的ip以及设置的对外暴露端口

在这里插入图片描述

6.2 如果已经切换到es用户了,启动es的时候报错了,原因是启动es的时候会动态生成一些目录,这些生成的目录权限跟es没有关系,如下

在这里插入图片描述

解决办法,使用root用户重新设定一下目录的所有者权限
chown -R es:es /opt/es #文件夹所有者
然后再切换到es用户,重新启动
su es
cd /opt/es
#启动es
bin/elasticsearch

三、linux集群部署ES

1.linux环境ES下载

https://pan.baidu.com/s/13w32eMZxBTwiKHPxw-ZSDg?pwd=Qa9C
提取码:Qa9C

2.因为是集群的,所以需要创建三台虚拟机,然后将上传的es.tar包解压,我这里是放在/opt中,然后修改了文件名

在这里插入图片描述

3.linux环境下,集群和单节点都有因为安全问题,Elasticsearch 不允许 root 用户直接运行,所以要在每个节点中创建新用户,在 root 用户中创建新用户

useradd es #新增es用户 
passwd es #为es用户设置密码 
 
#userdel -r es #如果错了,可以删除再加 
chown -R es:es /opt/es-cluster #文件夹所有者 

3.修改集群中每个ES节点的elasticsearch.yml配置,在config目录中

vim /opt/es-cluster/config/elasticsearch.yml
注意请看注释描述,有些配置是不能重复

# 加入如下配置 
#集群名称 
cluster.name: cluster-es
#节点名称,每个节点的名称不能重复 
node.name: node-1 
#ip地址,每个节点的地址不能重复 
network.host: 192.168.10.100
#是不是有资格主节点 
node.master: true 
node.data: true 
http.port: 9200
# head 插件需要这打开这两个配置 
http.cors.allow-origin: "*" 
http.cors.enabled: true 
http.max_content_length: 200mb 
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master ,所以其他节点这个地方就
#不需要改
cluster.initial_master_nodes: ["node-1"]
#es7.x 之后新增的配置,节点发现 
discovery.seed_hosts: ["192.168.10.100:9300","192.168.10.101:9300","192.168.10.102:9300"]
gateway.recover_after_nodes: 2 
network.tcp.keep_alive: true 
network.tcp.no_delay: true
transport.tcp.compress: true
#集群内同时启动的数据任务个数,默认是2个 
cluster.routing.allocation.cluster_concurrent_rebalance: 16
#添加或删除节点及负载均衡时并发恢复的线程个数,默认4个 
cluster.routing.allocation.node_concurrent_recoveries: 16
#初始化数据恢复时,并发恢复线程的个数,默认4个 
cluster.routing.allocation.node_initial_primaries_recoveries: 16

3.1 修改每个节点的/etc/security/limits.conf

es soft nofile 65536 
es hard nofile 65536 

3.2 修改每个节点的/etc/security/limits.d/20-nproc.conf

# 在文件末尾中增加下面内容 
es soft nofile 65536 es hard nofile 65536 
* hard nproc 4096 
# 注:* 带表Linux所有用户名称 

3.3 修改每个节点的/etc/sysctl.conf

# 在文件中增加下面内容 
vm.max_map_count=655360 

4 然后在三台机器中切换到es用户,然后进入到/opt/es-cluster目录中使用命令启动三台机器中的es

#启动 
bin/elasticsearch 
#后台启动 
bin/elasticsearch -d 

使用get请求,可以看到集群所有节点,则证明集群部署完成
ip:9200/_cat/nodes

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值