2.ElasticSearch安装步骤
2.1-安装环境
- 首先是安装环境:
Centos7+jdk1.8
2.2-主要配置文件
- 配置文件:
elasticsearch.yml(主要配置ElasticSearch集群信息) jvm.options(jvm内存信息)
2.3-创建文件夹并上传文件并解压
创建文件夹并上传文件并解压
mkdir -p /opt/es
将我们的文件上传到该目录下
这时候这些文件都是没有权限的,我么你需要给这些文件分配权限
解压文件: tar -zxvf elasticsearch-6.3.1.tar.gz
2.4-修改配置文件
修改配置文件
ES使用最大线程数,最大内存数,访问的最大文件数
如果是Centos6的话,上面三个都需要进行配置,否则linux不会允许该环境使用这么大的线程数
但是在Centos7里面就只需要配置访问的最大文件数即可.
主要就是elasticSearch的默认内存太大,可能超过了我们服务的承受范围,我这里默认的是1G
这里我们把他修改成256M
之后再去启动试试:
之后我们可能会遇到这个问题:
原因是在elasticSearch5.0版本以后,很多大公司也已经开始采用ElasticSearch作为他们搜索引擎的技术了,大公司使用之后发现ElasticSearch存在安全漏洞,因为在5版本的ElasticSearch中,ElasticSearch运行都是通过root用户进行的,所以有些黑客就通过这个特性直接获取到root用户的密码以及其他信息,使得信息外泄.
所以在5版本之后,ElasticSearch都开始采用这种方案,即所有的操作不能再是root用户,必须单独创建一个用户来操作elasticSearch.
所以我们如果按照默认的配置文件来启动ElasticSearch的话就还是通过root用户启动,所以我们需要重新创建一位用户并且通过在该用户的状态下启动ElasticSearch.
//创建一个新的用户 adduser es //切换到es用户下 su es
切换完成之后我们能够发现,前面的用户就已经改变了,并且命令前面的符号也已经发生改变了.不再是#号,而是换成了$符号
之后我们再来重新启动一下elasticSearch试试
之后我们又遇到这个问题,意思是:我们的es用户没有权限访问该文件jvm.options
所以我们需要切换回root用户去修改以下es用户的访问权限
//切换成root用户 su root //返回上级目录 cd .. //进入config cd config //将config下的所有文件都给予最大权限 chmod 777 *
这样我们的es用户即可访问jvm.options文件了.
之后我们再去重新启动一下我们的elasticSearch但是我们又会遇到下面的问题
该问题主要是es用户没有权限访问data文件夹(data是es的软件和日志数据目录)
这里为了解决之后所有可能遇到的权限不足的问题,我们决定通过切换到root用户,之后将elasticSearch的根目录下将所有的文件的权限都打开,但是 不建议大家这样做,最好是启动之后哪里报权限不足的时候,我们在依次切换到root用户去将相应的文件的权限打开.
我们切换到root用户之后,使用下面的命令将elasticSearch下的文件通过轮询的方式将权限都打开.
chmod 777 -R elasticsearch-6.3.1
这样我们就已经将所有文件的权限都已经打开了,这时候我们切换成es用户来进行我们接下来的操作.
之后我们需要去配置我们的默认ip以及端口号,这样外网才能访问我们的elasticSearch
这里我们是在elasticsearch.yml文件里面进行配置:
进去之后我们主要配置这两个参数:
如果不是云服务器的话,你就直接按下面我的提示配置即可
如果你是云服务器的话,那么你就不能这么配置了,如果还是按照上面的配置的话,那么我们启动elasticSearch就会出现下面的错误:
这时候我们需要这样配置:
记住这里不能填云服务器的公网ip地址,否则还是连不上的
并且这样配置完成之后,如果是云服务器,我们还需要在防火墙以及阿里云控制台打开9200以及9300两个端口,否则还是连接不上.
这样我们配置完就不会报上面的错误了,但是我们重新启动之后会报另外的问题:
意思就是elasticSearch鄙视我们当前的系统,说我们当前系统能够打开的最大文件数以及能够使用的最大内存数也都不够,需要升级到他相应的最低要求
既然这样我们就要去修改linux的配置(配合es的启动需求),该操作需要在root用户下进行,否则会提示权限不足:
1.修改linux的limits配置文件,设置内存线程和文件
该文件所在位置: /etc/security/limits.conf
添加下面的代码:
*hard nofile 65536 *soft nofile 131072 *hard nproc 4096 *soft nproc 2048
这些代码需要写在#End of file之前,否则这些代码是不会生效的,如果你是云服务器的话,那么你还需要将#End of file后面的参数也修改以下,否则之后启动还是会报相同的错误
之后我们中心刷新一下该文件,使其生效.
source /etc/security/limits.conf
2.修改linux的sysctl配置文件,配置系统使用内存
文件所在位置: /etc/sysctl.conf
添加下面的代码:
vm.max_map_count=655360 fs.file-max=655360
之后保存退出之后,我们就需要让该配置生效
sysctl -p
这样配置就已经生效了.
之后我们便可以重新用es用户去启动elasticSearch了,可以发现已经启动成功了:
虽然他显示的发布地址是通过我们的内网ip地址,但是我们通过浏览器访问的时候还是直接通过公网ip:9200访问即可.
这样我们的elasticSearch就算是安装并且启动成功了.