阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7下Elasticsearch 安装操作指南

212次阅读
没有评论

共计 4608 个字符,预计需要花费 12 分钟才能阅读完成。

在网上现在有很多那种 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:“*”

未完待续,请关注。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4608字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中