1.下载地址:
https://www.elastic.co/products/elasticsearch
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-8-0
安装过程:直接tar -zxvf解压放在:opt/module/ 下,文件夹命名es7(位置可以自行选择,后续注意修改)
2.安装ES
- 上传安装包,将 elasticsearch 安装包上传到 /export/servers/software/目录下
- 将ES解压到opt/modlue目录下,并将ES重命名
tar -zxvf elasticsearch-7.8.0.tar.gz -C /opt/module/ cd /opt/module/ mv elasticsearch-7.8.0 es7
- 修改 ES 配置文件 elasticsearch.yml
#进入es7目录下 cd config/ vim elasticsearch.yml #修改以下文件 (1)集群名称,同一集群名称必须相同 cluster.name: my-es (2)单个节点名称,不同节点名称不能一样,例如:node-1,node-2,node-3 node.name: node-1 (3)把 bootstrap 自检程序关掉 bootstrap.memory_lock: false (4)网络部分 # 允许任意 ip 访问 network.host: 0.0.0.0 # 数据服务端口 http.port: 9200 # 集群间通信端口 transport.tcp.port: 9301 (5)自发现配置:新节点向集群报到的主机名 #集群的”介绍人”节点 discovery.seed_hosts: ["spark01:9301", "spark02:9301"] #默认候选 master 节点 cluster.initial_master_nodes: ["node-1", "node-2", "node-3"] #集群检测的超时时间和次数 discovery.zen.fd.ping_timeout: 1m discovery.zen.fd.ping_retries: 5 (6)修改 yml 配置的注意事项:每行必须顶格,不能有空格 “:” 后面必须有一个空格
- 分发ES到各个机器上,接着修改各台机器的节点名称:node.name:node-2 、node.name:node-3
3.修改配置参数
elasticsearch 是单机访问模式。但是我们会设置成允许应用服务器通过网络方式访问,而且生产环境也是这种方式。我们需要把服务器的一些限制打开,这样可以能支持更多并发
3.1修改系统允许 Elasticsearch 打开的最大文件数需要修改成 65536。
[root@spark01 es7]$ sudo vim /etc/security/limits.conf
#在文件最后添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 65536
#分发文件
[root@spark01 es7]$ scp -r /etc/security/limits.conf spark02:/etc/security/
[root@spark01 es7]$ scp -r /etc/security/limits.conf spark03:/etc/security/
3.2 修改一个进程可以拥有的虚拟内存区域的数量。
[root@spark01 es7]$ sudo vim /etc/sysctl.conf
#在文件最后添加如下内容
vm.max_map_count=262144
#分发文件
[root@spark01 es7]$ scp -r /etc/sysctl.conf spark02:/etc/
[root@spark01 es7]$ scp -r /etc/sysctl.conf spark03:/etc/
3.3 修改允许最大线程数为 4096(如果系统为CentOS7.x 不用改,跳过此步骤)
[root@spark01 es7]$ sudo vim /etc/security/limits.d/20-nproc.conf
#修改如下内容
* soft nproc 4096
#分发文件
[root@spark01 es7]$ scp -r /etc/security/limits.d/20-nproc.conf spark02:/etc/security/limits.d/
[root@spark01 es7]$ scp -r /etc/security/limits.d/20-nproc.conf spark03:/etc/security/limits.d/
3.4 重启linux使配置生效(三台机器)
4.启动es
elasticsearch为了安全,不允许使用root用户启动,由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,需要创建一个单独的用户用来运行ElasticSearch。否则启动报:can not run elasticsearch as root
方法可以给user赋权限或者创建用户组和用户,本人使用的是第二种方法:在modlue下:
#创建用户组和用户
groupadd es
useradd es -g es -p codingwhy
#更改 es7文件夹及内部文件的所属用户及组为es
chown -R es:es es7
切换用户:su es并启动 elasticsearch
在bin目录下前台启动,
./elasticsearch
#使用ctrl + c 可以停止elasticsearch服务
#后台启动,需要停止服务的话就用kill命令了
./elasticsearch -d
查看进程jps
命令行进行测试:curl http://spark01:9200
在浏览器地址栏中输入: http://spark01:9200 进行访问也可以得到上面结果
5.集群启动
创建脚本:es.sh 输入下面内容:
#!/bin/bash
case "$1" in
start)
for i in spark01 spark02 spark03
do
ssh $i su es -c "/opt/module/es7/bin/elasticsearch >/dev/null 2>&1 &"
echo "es start............"
done
;;
stop)
for i in spark01 spark02 spark03
do
ssh $i su es -c "jps | grep Elasticsearch | awk '{print \$1}' | xargs -n1 kill"
echo "es stopped........"
done
;;
*)
echo "error choice ! please input start or stop"
exit
;;
esac
循序各台机器使用su es -c "命令", 这个表示脚本内切换es用户一次,并执行-c后面文本的命令,然后退出es普通用户到当前用户
其中14行代码首先jps出es的端口号,接着再停掉,ssh过去的时候如果没有全局变量java,就会报错,执行不了jps,可以改成/export/servers/jdk/bin/jps,直接定义到java的安装绝对路径地址。
授权
chmod u+x es.sh
启动,查看进程,接着命令行测试:curl http://spark01:9200/_cat/nodes?v 同理:在浏览器地址栏中输入 http://spark01:9200/_cat/nodes?v 进行访问。
成功运行,master可以是任意节点。
6.完成
本文章如果写的不好请指正,文明交流,如果对你有帮助,一起努力学习大数据,谢谢!!!