前言
谁还不是个标题党呢。(:з」∠)
还没有安装JDK的请先安装JDK,传送门在此QAQ
安装中遇到颇多问题,在此我都做了问题记录。
请合理使用ctrl+F
在文中进行问题定位。
安装须知
- 请先创建一个elasticsearch目录,并在目录执行下载操作。
- 因为版本原因,ES不允许root用户启动,所以启动时注意切换 用户角色
su 其他用户
所以没有创建其他用户的朋友请先创建用户useradd 新用户
。
[root@localhost ~]# useradd zyla
[root@localhost ~]# passwd zyla
更改用户 zyla 的密码 。
新的 密码:
重新输入新的 密码:
抱歉,密码不匹配。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]#
- 因为安装过程中,需要到
/etc
目录下修改文件,由于权限限制,注意切换为root用户进行操作。
下载
指定目录下执行命令wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.0.tar.gz
下载失败,点击此处传送至官网,魔法传送阵
如图所示
- 解压
命令tar -zxvf elasticsearch-6.5.0.tar.gz
- 切换用户并执行
su 除root外用户
- 进入
elasticsearch-6.5.0/bin
执行./elasticsearch
如果以root用户执行,会出现
稍等一会,直到加载出starting
、started
说明成功,再打开一个连接窗口输入curl -X GET http://localhost:9200
检验。
[root@localhost ~]# curl -X GET http://localhost:9200
{
"name" : "gQmdXvU",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "mUi47EFHQuat6RcdM-l6Kg",
"version" : {
"number" : "6.5.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "816e6f6",
"build_date" : "2018-11-09T18:58:36.352602Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
如果遇到AccessDeniedException:xxxx/elasticsearch-6.5.0/config/jvm.options
问题
说明当前用户没有用户权限,请以root用户登录情况下使用
chown 你的非root用户名 es安装目录 -R
来赋予权限。
你以为到此就完了吗?too young too simple。打开主机浏览器输入ip:9200
发现访问失败。
根据网上的方案,我首先添加了network.host
任一用户
打开/elasticsearch-6.5.0/config/elasticsearch.yml
,在network注释附近添加
network.host: 你的ip
discovery.zen.ping.unicast.hosts: ["你的ip"]
添加后,重启./elasticsearch
,出现vm.max_map_count [65530] is too low, increase to at least [262144]
这类vm.max_map_count
错误。
- 请以
root
用户打开文件vi /etc/sysctl.conf
- 添加
vm.max_map_count = 655360
- 保存退出后执行
sysctl -p
根据我的经验,如果执行以上步骤后,切换为非root用户启动es还是会失败并遇到以下问题
所以继续打开
/etc/security/limits.conf
文件新增以下内容
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
你的用户名 soft nofile 65536
你的用户名 hard nofile 65536
你的用户名 soft nproc 4096
你的用户名 hard nproc 4096
保存退出后,用户退出重新登录以非root用户再启动es,发现:在你修改network之后启动es不再报错了。但是依然无法在主机以及其他机器访问es。那我上述操作有什么用?
然后根据我的探索发现,获取了一下信息:
- centos默认只打开22端口,所以9200外面访问不到。
- centos7加强了防火墙[1],以firewall替代iptables
通过以上信息我想你应该知道怎么做了吧。
执行firewall-cmd --zone=public --add-port=9200/tcp --permanent
添加9200端口
执行service firewalld restart
重启防火墙
执行firewall-cmd --zone=public --query-port=9200/tcp
查看9200端口是否加入名单,会返回yes
最后在确保es启动的情况下,在主机浏览器上访问ip:9200,会发现成功,喜极而泣。
参考链接:
Linux:centos7防火墙开放端口
elasticSearch本地可以访问网页无法访问的解决方法
Linux /etc/profile文件详解
-
--zone 作用域
--add-port=80/tcp 添加端口,格式为:端口/通讯协议
--permanent 永久生效,没有此参数重启后失效 ↩