linux 上elasticsearch集群搭建详解,手把手教学(tar下载包)

1.安装jdk:

由于es是基于java的,所以先安装jdk:

  yum install java-1.8.0-openjdk* -y

此命令install结束后不用再去配置环境变量了,直接输入java -version即可查看到环境配置完成

2.远程下载elasticsearch

官网下载地址:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/targz.html

依次输入命令即可

3.运行前的准备

3.1 创建新用户

如果你直接以root用户启动bin下的elasticsearch,会报错,大致的意思就是不能以root用户启动elasticsearch

1. useradd es #创建一个es用户
2. passwd es  #为es用户创建密码

 

3.2 创建完成后给es账号赋予root权限:

如果不给es权限,很多事做不了。修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

## Allow root to run any commands anywhere

root    ALL=(ALL)     ALL

es ALL=(ALL)     ALL

保存:wq!(需要使用有个感叹号)

3.3 解压压缩包

新建一个文件夹,将下好的tar压缩包放到文件夹中,我个人是放在/usr/local/workspace下,解压

3.4 创建data和logs文件夹

在workspace下创建data和logs文件夹,用来存放elasticsearch的数据和日志,为什么不用默认的呢?因为有可能你会经历升级,这样的话默认的文件夹就用不了了

3.5 修改系统配置

elasticsearch对系统配置也是有要求的,可以去看官网

1.

vi /etc/security/limits.conf 
添加以下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
#当你将elasticsearch.yml中的bootstrap.memory_lock: true打开,就必须设置下面两个,否则报错
* hard memlock unlimited 
* soft memlock unlimited

2.

vi /etc/sysctl.conf
添加以下代码:
vm.max_map_count = 655360
保存后执行
sysctl -p
使得配置生效

 

 3.6 修改elasticsearch.yml的配置

  • 集群的名称

通过 cluster.name 可以配置集群的名称,集群是一个整体,因此名称都要一致,所有主机都配置成相同的名称,配置示例:

cluster.name: germey-es-clusters
  • 节点的名称

通过 node.name 可以配置每个节点的名称,每个节点都是集群的一部分,每个节点名称都不要相同,可以按照顺序编号,配置示例:

node.name: es-01

其他的主机可以配置为 es-02es-03 等。

  • 是否有资格成为主节点

通过 node.master 可以配置该节点是否有资格成为主节点,如果配置为 true,则主机有资格成为主节点,配置为 false 则主机就不会成为主节点,可以去当数据节点或负载均衡节点。注意这里是有资格成为主节点,不是一定会成为主节点,主节点需要集群经过选举产生。这里我配置所有主机都可以成为主节点,因此都配置为 true,配置示例:

node.master: true
  • 是否是数据节点

通过 node.data 可以配置该节点是否为数据节点,如果配置为 true,则主机就会作为数据节点,注意主节点也可以作为数据节点,当 node.masternode.data 均为 false,则该主机会作为负载均衡节点。这里我配置所有主机都是数据节点,因此都配置为 true,配置示例:

node.data: true
  • 数据和日志路径

通过 path.datapath.logs 可以配置 Elasticsearch 的数据存储路径和日志存储路径,可以指定任意位置,这里我指定存储到 1T 硬盘对应的路径下,另外注意一下写入权限问题,配置示例:

path.data: /usr/local/workspace/data/elasticsearch
path.logs: /usr/local/workspace/logs/elasticsearch
  • 设置访问的地址和端口

我们需要设定 Elasticsearch 运行绑定的 Host,默认是无法公开访问的,如果设置为主机的公网 IP 或 0.0.0.0 就是可以公开访问的,这里我们可以都设置为公开访问或者部分主机公开访问,如果是公开访问就配置为:

network.host: 0.0.0.0

如果不想被公开访问就不用配置。

另外还可以配置访问的端口,默认是 9200:

http.port: 9200
  • 集群地址设置

通过 discovery.zen.ping.unicast.hosts 可以配置集群的主机地址,配置之后集群的主机之间可以自动发现,这里我配置的是内网地址,配置示例:

discovery.zen.ping.unicast.hosts: ["10.0.0.4", "10.0.0.5", "10.0.0.6", "10.0.0.7", "10.0.0.8", "10.0.0.9", "10.0.0.10"]

这里请改成你的主机对应的 IP 地址。

但是该配置已过时,建议使用新的配置:discovery.seed_hosts

官网原话: This setting was previously known as discovery.zen.ping.unicast.hosts. Its old name is deprecated but continues to work in order to preserve backwards compatibility. Support for the old name will be removed in a future version.

  • 节点数目相关配置

为了防止集群发生“脑裂”,即一个集群分裂成多个,通常需要配置集群最少主节点数目,通常为 (可成为主节点的主机数目 / 2) + 1,例如我这边可以成为主节点的主机数目为 7,那么结果就是 4,配置示例:

discovery.zen.minimum_master_nodes: 4

另外还可以配置当最少几个节点回复之后,集群就正常工作,这里我设置为 4,可以酌情修改,配置示例:

gateway.recover_after_nodes: 4

bootstrap.memory_lock: true #系统默认会进行内存交换,这样会导致 Elasticsearch 的性能变差,所以要置为true

bootstrap.system_call_filter: false 

#下面两个是为了能让head插件可以正常访问

http.cors.enabled: true
http.cors.allow-origin: "*"

#初始化主节点,必须设置,否则报错找不到主节点,根据你设置的主节点进行设置
cluster.initial_master_nodes: ["es-01", "es-02","es-03"]


3.7 修改文件夹的权限

由于压缩tar文件夹是以root用户压缩的,所以压缩出来的文件夹归属权也是root用户的,如果不修改归属权,会导致es用户操作不了该文件夹下的所有文件,比如修改文本,创建文件等

使用命令:chown -R <用户> <文件夹>

chown -R es /usr/local/workspace

- R 是递归遍历将该文件夹下的所有子孙文件的归属权全部改掉

还有一点要注意的是,如果你设置的elasticsearch的data和logs文件夹是在root用户所创建的文件夹下,一定要修改你创建的这两个文件夹的归属权,否则elasticsearch没有权限在data或logs文件夹下创建文件,就会导致启动失败

3.8 启动

进入bin文件夹下,运行elasticsearch脚本,可以加-d参数,后台运行:

./elasticsearch -d

3.9 查看单个节点是否启动成功:

curl -get localhost:9200

localhost 看你设置的host,如果指定了ip,那么localhost就没用了

3.10 外部访问

让外部浏览器可以访问,关闭防火墙:systemctl stop firewalld.service

或者开放9200端口(作为Http协议,主要用于外部通讯)和9300端口(9300作为Tcp协议,jar之间就是通过tcp协议通讯,ES集群之间是通过9300进行通讯)

 

3.11 关闭elasticsearch服务

使用jps查看elasticsearch运行id,然后使用kill -9 id ,关闭

3.12 集群

如果单个节点启动没问题,那么就将系统复制几份,我是用的虚拟机,所以我是直接复制虚拟机,然后修改下elasticsearch.yml中的几个集群配置就行了

3.13 查看集群是否启动成功

curl -XGET 'http://localhost:9200/_cluster/state?pretty'

运行后会有每个节点的信息

3.14 单节点集群

如果你的项目比较小,还不需要特别庞大的集群,但是又考虑到之后的扩展性而使用集群时,可以使用单节点集群。单节点集群的配置非常简单,只需要在elasticsearch.yml中配置如下属性即可

discovery.type: single-node(注意该配置只在单节点集群中使用,多节点集群不能使用,使用默认类型,即不要这属性)

cluster.name: search

node.name: es-node

bootstrap.memory_lock: true
bootstrap.system_call_filter: false

network.host: 192.168.20.105

http.port: 9200

http.cors.enabled: true
http.cors.allow-origin: "*"

其他的cluster.initial_master_nodes等集群配置不用填,以免报错

3.15 其他报错

1.Caused by: java.lang.IllegalStateException: failed to obtain node locks, tried [[/opt/elasticsearch-5.5.2/data/ymq]] with lock id [0];

删除你指定的data下的nodes文件夹

2.一开始集群正常,之后重新启动linux系统导致访问不了,一般是防火墙没关,要重新关一下

3.16 具体配置查看官网

必须要看一遍,否则你就算配置成功了,你也不知道是用来干嘛的,之后遇到问题都不知道怎么解决,自己最好不要一下就把配置全部搞上去,从0开始去运行,遇到错误再去解决,这样理解的更深刻

3.17 其他

想要使用docker-compose更快速方便的搭建整个ELK系统,请查看我的其他博客,我将其分成了4部分

3.18 本文参考博客

https://cloud.tencent.com/developer/article/1189282

https://blog.csdn.net/abc_321a/article/details/82184344

概念:https://www.cnblogs.com/leeSmall/p/9220535.html

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

巴中第一皇子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值