由于ElasticSearch的安装比较简单(下载解压即可),就不做阐述,这里主要记录在Ubuntu上安装ElasticSearch 6.3.2过程中遇到的问题及解决方法。
在ubuntu上新建一个用户
Elasticsearch 要求不能在超级用户root上运行,所以需要新建一个普通用户。
注意:下面的命令都需要root权限,Ubuntu用户在命令前面加上sudo
- 新建用户组,我这里用户组名设置为
es
groupadd es
- 新建用户,用户名为
es
useradd -s /bin/bash -g es -d /usr/es -m es
- -s 指定用户登录的shell
- -g 指定用户组
- -d 指定用户的主目录,如果目录不存在,同时使用-m可以创建主目录
- 添加权限,是的用户可以使用
sudo
命令。修改/etc/sudoers
文件,文件为只读文件,所以需要强制写入:w!
,并且需要root权限才可以。添加如下的行
youuser ALL=(ALL) ALL
针对于我刚刚创建的es
用户,就应该是添加es ALL=(ALL) ALL
这一行,然后使用:w!
强制写入。
其他问题
针对问题1:max file descriptors [10240] for elasticsearch process likely too low, increase to at least [65536]
这是来自官方的解释:
Elasticsearch uses a lot of file descriptors or file handles. Running out of file descriptors can be disastrous and will most probably lead to data loss. Make sure to increase the limit on the number of open files descriptors for the user running Elasticsearch to 65,536 or higher.
就是说当前系统设置的文件描述符太小了,至少为65,536或者更高。
解决方案:
- 查看当前的max file descriptors
ulimit -Hn
- 修改
/etc/security/limits.conf
文件(需要root权限)。在该文件中添加如下的一行,其中user为安装ElasticSearch的用户
user - nofile 65536
- Ubuntu用户这里还需要一步才能成功。由于Ubuntu会忽略
/etc/security/limits.conf
,所以为了是刚刚的配置生效,所以需要修改/etc/pam.d/su
文件(需要root权限),找到下面给出的行,并取消它的注释。
# session required pam_limits.so
改为
session required pam_limits.so
- 退出当前的session,重新打开一个session。
- 也就是关闭当前终端,打开一个新的终端
- 或者关闭链接服务器的软件,重新链接
参考链接
维基百科
文件描述符(file descriptors) :文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。
针对问题2:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
max_map_count 的值是指一个进程最多可用于的内存映射区(memory map areas),在调用malloc会用到,由mmap/mprotect生成。
解决方案:
- 修改
/etc/sysctl.conf
文件(需要root权限),加入一行
vm.max_map_count=655360
- 使用
sysctl -p
使其生效