CentOS 7下Elasticsearch 安装操作指南


在网上现在有很多那种ES步骤和问题的解决 方案的,不过没有一个详细的整合和问题的梳理;现在我们来记录一下自己安装的过程以及遇到问题的解决;有什么不对的和问题希望及时拍砖。

Linux系统:CentOS 7.5

ES安装环境的准备和初始化

现在比较新的版本Elasticsearch 5.6.3,官方建议安装Oracle的JDK8,安装前先检查机器是否已安装JDK。

检查环境机器是否已安装JDK

rpm -qa | grep -E '^open[jre|jdk]|j[re|dk]'

如果有的话,卸载掉,可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸载所有带有Java的文件,然后进行重新安装。

下载新的JDK

下载网址:

[linuxidc@localhost ~]$ wget --no-check-certificate --no-cookies \
> --header "Cookie: oraclelicense=accept-securebackup-cookie" \
> http://download.oracle.com/otn-pub/java/jdk/8u192-b12/750e1c8617c5452694857ad95c3ee230/jdk-8u192-linux-x64.tar.gz

JDK的下载可以去官网上直接下载,再次声明一下不要下载最新版本 JAVA 9 版本本人在次已经踩过坑了

ES 去官网直接下载,本人使用的是 5.6.3 版本;因为版本的不同安装head插件的时候安装步骤不同;好像是从5.0 以后的版本安装head 插件的步骤就不一样了;下面会详细介绍。

安装JDK环境

前提:查看该系统是否安装过Java 环境,如果安装过将其卸载安装最新的版本,更换Java 的版本也可以这样去操作。

执行命令 rpm -qa|grep jdk 如果安装过将会列出相应的版本,如果没有什么都不会输出。如果安装过使用rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.2.el7_2.x86_64 使用这个命令需要注意的就是,列出多少个版本插件就要卸载几个插件;执行完成后;在使用 rpm -qa|grep jdk 去查看一下是否有遗漏的插件没有卸载。

直接将下载好的 jdk-8u192-linux-x64.rpm 安装包 ;上传到自己创建好的java文件下;cd 命令进入到java文件下使用rpm 命令进行安装 rpm -ivh jdk-8u192-linux-x64.rpm

CentOS 7下Elasticsearch 安装操作指南

安装完成后执行 java -version 命令查看安装是否成功

查看安装目录命令,

命令一:

[linuxidc@localhost ~]$ java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

命令二:

[linuxidc@localhost ~]$ which java 
/usr/bin/java

[linuxidc@localhost ~]$ ls -lrt /usr/bin/java
lrwxrwxrwx. 1 root root 22 11月 12 18:23 /usr/bin/java -> /etc/alternatives/java

命令三:

[linuxidc@localhost ~]$ ls -lrt /etc/alternatives/java
lrwxrwxrwx. 1 root root 41 11月 12 18:23 /etc/alternatives/java -> /usr/java/jdk1.8.0_192-amd64/jre/bin/java

最后将会得出如如上这样的目录  /usr/java/jdk1.8.0_192-amd64/jre/bin/java

如下图:

CentOS 7下Elasticsearch 安装操作指南

配置环境变量,执行命令 nano /etc/profile;然后进入编辑模式,在文件的最后添加下面的配置,如图

JAVA_HOME=/usr/java/jdk1.8.0_192-amd64
JRE_HOME=/usr/java/jdk1.8.0_192-amd64/jre
CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

 CentOS 7下Elasticsearch 安装操作指南

修改完配置后,保存并退出。

执行命令 source /etc/profile 使用环境变量生效

CentOS 7下Elasticsearch 安装操作指南

验证环境变量是否生效,分别执行下面的命令

echo $JAVA_HOME

echo $CLASSPATH

echo $PATH

CentOS 7下Elasticsearch 安装操作指南

OK,到现在JDK就安装好了。

安装Elasticsearch

下载ES安装包elasticsearch-5.6.3.tar.gz

进入ES官网,选择合适的版本网址,进行下载

以下是5.6.3 版本的网址

wget  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.3.tar.gz

CentOS 7下Elasticsearch 安装操作指南

新建账号

因为使用root用户执行ES程序,将会出现错误;

[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

所以这里需要创建单独的用户去执行ES 文件;命令如下:

useradd estest  --添加账号

chown -R estest:estest elasticsearch-5.6.3 --为新增账号赋予文档目录的权限

su estest      ---切换账号

创建ES数据文件和日志文件,直接在root用户根目录一下创建就可以了

执行命令一:mkdir /data

CentOS 7下Elasticsearch 安装操作指南

命令二:chown -R estest:estest data

CentOS 7下Elasticsearch 安装操作指南

执行命令三:mkdir /logs

CentOS 7下Elasticsearch 安装操作指南

命令四:chown -R estest:estest logs

CentOS 7下Elasticsearch 安装操作指南

看看,如下图

CentOS 7下Elasticsearch 安装操作指南

修改ES配置文件,使用cd命令进入到config 文件下,执行 nano elasticsearch.yml 命令,如图所示,本人没有配置集群,只是简单的配置了一下;详细说明可以参考官网;

CentOS 7下Elasticsearch 安装操作指南

启动ES

在新建的账号estest下启动ES。

在ES 的bin 文件所在的目录下执行以下命令即可

./elasticsearch -d

验证 ES 是否正常启动

方法1. curl http://localhost:9200/ 检查,显示以下信息证明已启动OK。

CentOS 7下Elasticsearch 安装操作指南

CentOS 7下Elasticsearch 安装操作指南

启用远程IP 访问

Elasticsearch 默认是rest-api的端口是9200,不支持IP地址,只能在本机使用http://localhost:9200 来访问,如果需要完成访问,还需进行以下配置。

Step 1 修改elasticsearch.yml 文件中的network.host 和 http.port 参数

去除文件中network.host 和 http.port 参数前面的注释(#),且将network.host 的IP地址修改为本地的IP地址。

Step 2 .编辑/etc/security/limits.conf 文档,在文档中添加以下参数

sudo nano /etc/security/limits.conf

* soft nofile 65536
* hard nofile 131072

此参数主要解决以下错误:

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

需要退出当前用户,再次登录才能生效。

Step 3 . 编辑vim /etc/sysctl.conf  文档,在文档中添加以下参数

vm.max_map_count=655360

编辑保存后并执行命令: sysctl -p

此操作主要是解决以下问题

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

ps:别的机器进行访问时需要开放9200端口和9300端口,9200是http协议端口,9300是tcp协议端口,为java client服务的。我这里没有单独打开端口,只是关闭了防火强,CentOS7关闭防火墙和CentOS6不一样,7的防火墙是firewalld的服务,执行命令
//临时关闭
systemctl stop firewalld
//禁止开机启动
systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.Fedoraproject.FirewallD1.service.

集群时需要添加一些配置,如果搭三个虚拟机做集群,想cluster.name相同时发现并不是集群,在es配置文件中需要添加额外配置
discovery.zen.ping.unicast.hosts: ["xxx.xxx.xxx","xxx.xxx.xxx","xxx.xxx.xxx"]
discovery.zen.minimum_master_nodes: 3

解释说明:
bootstrap.memory_lock: false  这是锁定内存,在一篇调优文章中这个设置成true时会减少内存交换的消耗,这里先设置成false
 bootstrap.system_call_filter: false  这个配置设置true在CentOS6或以上时会出现错误, 因为Centos6不支持SecComp

cluster.name 集群名字,同一个集群中使用相同名字,单机就随意
node.name: node-01 节点名字
node.master: 是否为集群的master机器
node.data: true 是否作为数据节点
network.host: xxx.xxx.xxx.xxx 这个不用自然是配置ip地址的
http.port: 9200 端口号,不配置的话默认9200
 discovery.zen.ping.unicast.hosts: [“xxx.xxx.xxx”,”xxx.xxx.xxx”,”xxx.xxx.xxx”] 这个就是配置集群的时候要用的到了,[]中填上集群中其他集群的ip的地址,如果是master的话请把所有salve的机器地址填上
discovery.zen.minimum_master_nodes: 2 关于这个值配置多少合适的话大家去搜一下,自己权衡一下集群,这里我用了3台机器模拟集群,所以填上2。
http.cors.enabled: true 这个参数的设置和下面一个配置就关于ip的访问策略了,如果你发现其他ip地址访问不了就有可以这参数没有配置
http.cors.allow-origin: “*”

未完待续,请关注。

linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx

本文永久更新链接地址:https://www.linuxboy.net/Linux/2018-11/155297.htm

相关内容