ElasticSearch 6.0.0 安装配置

原创 elasticsearch

一、 先决条件

安装好 JDK1.8u152;

从官网下载好 elasticsearch 二进制的 tarball,解压后放置在合适的安装位置,绿色无安装,例如 /opt/es/ 目录下;

安装 nodejs 环境,可以参考本站写的简单安装文档,如果不使用 elasticsearch-head,可以跳过;

注: $ES_HOME 代表 es 的安装位置。

二、 单实例安装运行

单实例非常简单,运行:$ES_HOME/bin/elasticsearch 命令。

处于安全方面的考虑,ElasticSearch 不再允许使用 root 账户启动,请使用普通账户启动它。

等待服务初始化并完成启动后,可以查看到 es 默认监听的 9200 端口。

使用 curl 或者浏览器检查服务启动状态:

三、 安装启动常见错误及解决

1. 不允许 root 启动

报错详情:

Caused by: java.lang.RuntimeException: can not run elasticsearch as root

这个其实很简单,而且在最新版本中似乎只能这么做了,那就是使用非 root 用户启动 elasticsearch,可以使用现有的非 root 用户启动,也可以单独为 elasticsearch 添加一个组和用户。前者测试方便,后者比较规范一点。

只需要使用 groupadd 添加一个组,用 useradd 添加一个用户,然后将 $ES_HOME 目录的组和所属权限赋予就行了。

2. 外部主机访问

默认情况下,ES 9200 端口不能被外部主机访问,需要修改 $ES_HOME/config/elasticsearch.yml 配置文件,修改网络绑定端口。

找到 network.host 并修改:

如果有需要,也可进行其他项配置。

配置文件中罗列了部分常用的配置项,如果需要完整了解,请参阅官方包中文档。

3. 系统配置限制检查

如上一节修改绑定端口后启动,会出现下面的错误:

进程最大打开文件数限制

报错详情:

max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

这个是 linux 下常见的错误,主要是因为 linux 会限制进程的最大打开文件数,只需要简单配置一下即可解决,在 ES 的官方文档中提供了两种解决方案。

这里我们只看系统基本的配置这种方式。

打开 /etc/security/limits.conf,添加如下配置:

#*               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
elasticsearch    -       nofile          65536    # 添加这一行
# End of file

保存即可,无需重启。

这里的 elasticsearch 是用户名,表明这个配置只对 elasticsearch 用户生效,如果你用来启动 elasticsearch 的用户名不是这个,那么你需要按你实际的用户名修改。

使用的虚拟内存限制

报错详情:

max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

这个是 ES 使用的虚拟内存,官方文档 给出了解决方案:

elasticsearch@master:/opt/es/es6-standalone$ sudo sysctl -w vm.max_map_count=262144

调大虚拟内存即可。

重新启动,就可以正常访问了,现在我们可以在任何机器上访问 ES 了。

不过上面的命令只生效一次,如果想要持久化永久生效,则请在 /etc/sysctl.conf 文件中加入以上配置: vm.max_map_count=262144,使用 sysctl -p 使之立即生效。

四、 安装 head 插件

插件地址:https://github.com/mobz/elasticsearch-head

直接下载 ZIP 包或者 git clone 下来。

因为 es 和 es-head 服务属于两个独立进程,还需要一些相关配置,才能使用 es-head 来管理 es 实例。

首先,修改 $ES_HOME/config/elasticsearch.yml

http.cors.enabled: true
http.cors.allow-origin: "*"

$ bin/elaticsearch –d 使 es 在后台运行,请再次检查确认服务是否正常启动,如果异常,可以查看 $ES_HOME/logs/elasticsearch.log 查看详细日志。

现在,使用 npm 或 cnpm 下载 elasticsearch-head 依赖,请 cd 到 elasticsearch-head 目录,执行:

# cnpm install // 或者 npm install,不再赘述

参考 git 上的安装运行文档,要启动运行head插件,请在目录下执行:

# cnpm run start

可以看到 elasticsearch-head 绑定 9100 端口,使用浏览器访问,输入服务地址,查询 es 健康状态:

至此,elasticsearch-head 插件安装完成。

五、 集群配置

如果前面单机的测试环境搭建没有问题,集群就非常简单了。

我们这里做一个3台机子的主从配置。

主节点

在上面单机配置的基础上,首先修改master节点的$ES_HOME/config/elasticsearch.yml文件,修改配置项:

cluster.name,集群名称,这个所有主从节点都要一致;
node.name: master,节点名称,以与集群中其他节点区分开;
node.master: true,主节点专用,标识此节点为master。

从节点1

从节点首先配置 cluster.name,保持和主节点一致,然后配置 node.name: slave1。

从节点还需要配置一个 discovery.zen.ping.unicast.hosts 项:

["master.daimafans.com"] 列表中为在本节点上可以 ping 通的主机地址。

然后启动本节点。

从节点2

配置和上面基本相同。不同点: cluster.name: slave2

查看集群状态

使用 elasticsearch-head 查看集群状态:

六、 基本概念和使用示例

  • 索引:含有相同属性的文档集合
  • 类型:索引可以定义一个或多个类型,文档必须属于一个类型
  • 文档:文档是可以被索引的基本数据单位
  • 分片:每个索引都有多个分片,每个分片是一个 Lucene 索引
  • 备份:拷贝一份分片就完成了分片的备份

API基本格式: http://ip:port/index/type/documentId

常用 HTTP 动词: GET/PUT/POST/DELETE

索引创建

如果觉得这对你有用,请随意赞赏,给与作者支持
评论 1
最新评论
#1 楼 谦谦君子 2018-11-12

ES 服务启动为后台进程,可以使用:

$ES_HOME/bin/elasticsearch -d

停止服务使用 pskill 管理。