第一步. 下载ES:你要把ES安装到哪个路径就在那个路径下执行如下命令,通过linux命令来下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-linux-x86_64.tar.gz.sha512
# 如果安装了perl-Digest-SHA可以忽略这条命令,主要为下面命令服务的
yum install perl-Digest-SHA
shasum -a 512 -c elasticsearch-7.16.2-linux-x86_64.tar.gz.sha512
tar -xzf elasticsearch-7.16.2-linux-x86_64.tar.gz
cd elasticsearch-7.16.2/```
如果要下载安装包,再导入到linux,请到这个地址:https://www.elastic.co/guide/en/elastic-stack/7.2/index.html
要以自己下载安装包的形式安装ES请看下面教程,直接用命令下载安装的请忽略
第二步. 下载完成解压后,进入config目录下,打开elasticsearch.yml文件
全量复制如下内容,替换掉源文件内容(记得备份一份原文件)
这里我准备了3台服务器。如果是1台服务器实现3节点,注意端口要改一下9200,9201,9202,内部节点沟通端口要是9300,9400,9500,总之端口不要一样就行
# 集群名称(所有集群中的节点,名字要相同)
cluster.name: es-application
# 节点名称(每个节点不要一样), 第二个和第三个节点可以起【node-2, node-3】
node.name: node-1
# 是否有资格成为主节点
node.master: true
# 是否存储数据
node.data: true
# 最大集群节点数(集群有多少节点,这就写多少)
node.max_local_storage_nodes: 3
# 网关地址(服务器的ip)【注意这里,不同节点这里是不同的,写自己节点所在服务器的ip地址,要内网ip】
network.host: 172.31.13.102
# 端口
http.port: 9200
# 内部节点之间沟通端口
transport.tcp.port: 9300
# 写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["172.31.13.102:9300", "172.28.124.76:9300","172.31.13.103:9300"]
# 初始化一个新的集群时需要此配置拍选举master
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
# 数据和存储路径(这个路径就写你想把数据和日志存到路径即可,但是要切记,一定要把该路径赋予写权限 )
path.data: /software/es/data
path.logs: /software/es/logs
第三步. 赋予配置文件中/software/es/data和/software/es/logs路径权限,都是在es目录下,所以直接把es赋予权限
chmod -R 777 /software/es
第四步. 进入ES的bin目录
输入启动命令:
sh elasticsearch
咦,报了个错!
错误原因: 意思就是启动ES不能通过root账号来启动
解决方案:
(1).创建一个用户
adduser esUser
(2).创建用户密码,会让你需要输入两次,这里我也输入的是esUser, 他会报BAD PASSWORD, 无须理会,两次输入一样即可
passwd esUser
(3).将对应文件夹权限赋予用户(路径指定到你的ES目录即可), 我直接把es目录赋予权限了,即es文件夹内所有文件都有权限了 格式:chown -R 用户名 授权路径
chown -R esUser /software/es
(4). 切换至esUser 用户
su esUser
(5). 再次进入bin目录下
sh elasticsearch
哎,又报错
问题原因:明显是最大内存设置不足导致的
解决方案:
(1). 切换至root用户
su root
(2). 修改sysctl.conf 文件
vi /etc/sysctl.conf
(3). 在sysctl.conf中添加下面的配置
vm.max_map_count=655360
(4). 执行命令
sysctl -p
(5). 切换回esUser用户
su esUser
(6). 再次启动
sh elasticsearch
出现started表示启动成功,终于启动成功了,太难了!!!!!
我这里报错,但是如果你们的环境没有报错,可以忽略这两个错误
第五步. 以同样的方式启动另两个节点
温馨提示:大家跟着我一起启动【第一个节点】的时候会把所有的坑都踩完,如果大家跟我一样会报上述的两个错误,那么启动第二,第三个节点的时候基本也会出同样的问题,所以大家在启动第二,第三个节点的时候,要注意,先授权es目录写权限,在配置sysctl.conf最大内存, 再创建用户,再切换用户,最后再启动,这样就避免二次踩坑浪费时间
都启动后的效果
分别访问3台服务器的 http://ip:9200
再访问 http://ip:9200/_cat/health?v 来查看这3个节点是否真的在一个集群里
如下图,显示3,确实再同一个集群http://ip:9200/_cat/health?v
启动成功,至此,源码部署ES集群完成,大家以后再安装遇到上述两个异常,就不要慌了,直接干掉他
依然通过linux命令直接下载安装(kibana的版本要和ES的完全一致)
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.16.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.16.2-linux-x86_64.tar.gz.sha512
shasum -a 512 -c kibana-7.16.2-linux-x86_64.tar.gz.sha512
tar -xzf kibana-7.16.2-linux-x86_64.tar.gz
cd kibana-7.16.2/
进入到config目录执行
vim kibana.yml
把下面这3条配置前面的#去掉,
server.port: 5601
server.host: "172.31.13.102"
elasticsearch.hosts: ["http://172.31.13.102:9200","http://172.28.124.76:9200","http://172.31.13.103:9200"]
server.port: 5601 默认5601,直接解开#即可
server.host 默认localhost,改成你的ip地址,如果使用阿里云服务器,这里一定要写内网ip,不要写公网的ip
elasticsearch.hosts 默认http://localhost:9200, 改成你自己ES的访问地址,如果配置kibana的服务器可以和ES服务器进行内网通信。这里可以写内网地址,否则写公网地址。集群就把多台机器ip通过","隔开都写上。
进入bin目录执行
sh kibana