elasticsearch6.X 及head插件部署(完整版)

2018年04月28日 17:22:16 zou79189747 阅读数:3178

版权声明: https://blog.csdn.net/zou79189747/article/details/80111219

本文介绍了elasticsearch集群及head插件部署流程,包括后台启动脚本、开机自启动,面向生产环境的部署方式供大家参考。

因工作环境问题,几乎所有内容都是手打的,自己边部署边记录问题及步骤,百分百保证能成功部署,若某一步有问题的话,有可能是打错了,欢迎留言指正

集群环境

虚拟机(centos6.5) 是否可以成为主节点 是否为数据节点
100.0.26.217 true true
100.0.26.218     true true
100.0.26.219 true true

软件版本

jdk1.8.0_144.tar.gz

elasticsearch-6.2.4.tar.gz

node-v8.11.1-linux-x64.tar.xz

elasticsearch-head-master.zip(https://github.com/mobz/elasticsearch-head)

1、安装JDK

tar -zxvf jdk1.8.0_144.tar.gz

配置环境变量

vi /etc/profile

在文件末尾添加如下配置:

  1. export JAVA_HOME=/home/soft/jdk1.8.0_144

  2. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  3. export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

使用java、javac确定环境变量配置正确

2、安装ElasticSearch(单节点)

  1. tar -zxvf elasticsearch-6.2.4.tar.gz

  2. vi elasticsearch-6.2.4/config/elasticsearch.yml

将配置设置为如下:

  1. cluster.name: es6.2

  2. node.name: node-1

  3. node.master: true

  4. node.data: true

  5. network.host: 0.0.0.0

因为elasticsearch不能使用root用户运行,创建一个es用户

  1. adduser es

  2. chown -R es:es elasticsearch-6.2.4

  3. su es

  4. cd elasticsearch-6.2.4

  5. ./bin/elasticsearch

此时报错信息如下:

[2018-02-14T23:40:16,908][ERROR][o.e.b.Bootstrap          ] [node-1] node validation exception
[4] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max number of threads [1024] for user [elsearch] likely too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk   

[1]、[2] 解决办法:

vi /etc/security/limits.d/90-nproc.conf

修改配置如下:

  1. * soft nproc 4096

  2. root soft nproc unlimited

  3. es soft nofile 65536

  4. es hard nofile 65536

[3]解决办法:

vi /etc/sysctl.conf

添加如下配置:

vm.max_map_count = 262144

使配置生效

sysctl -p

[4]解决办法:

Centos 6.5不支持SecComp,而ES6.2.4默认bootstrap.system_call_filter为true, 在elasticsearch.yml增加如下配置:

  1. bootstrap.memory_lock: false

  2. bootstrap.system_call_filter: false

启动ES

./bin/elasticsearch

使用http://100.0.26.117:9200查看节点信息,若正常访问则表明服务启动成功

3、搭建集群

在elasticsearch.yml增加配置:

  1. discovery.zen.ping.unicast.hosts: ["100.0.26.117", "100.0.26.118", "100.0.26.119"]

  2. discovery.zen.minimum_master_nodes: 2

最终第一个节点的配置如下:

  1. cluster.name: es6.2

  2. node.name: node-1

  3. node.master: true

  4. node.data: true

  5. network.host: 0.0.0.0

  6. bootstrap.memory_lock: false

  7. bootstrap.system_call_filter: false

  8. discovery.zen.ping.unicast.hosts: ["100.0.26.117", "100.0.26.118", "100.0.26.119"]

  9. discovery.zen.minimum_master_nodes: 2

其他节点配置cluster.name必须一致且node.name不能一样,其他可以根据需求做改动

按照相同的步骤启动各个节点,控制台显示启动成功之后,访问http://100.0.26.117:9200/_cat/nodes,若配置的节点都在,则集群部署成功,有问题则具体问题具体解决。

这是我们搭的测试环境,在生产环境肯定需要后台启动elasticsearch,使用如下命令

./bin/elasticsearch -d

显然这种方式在机器重启之后服务就没了,因此我们需要配置机器重启后elasticsearch服务自启动,切换root用户,在/etc/init.d/目录下创建一个es_run文件配置如下:

su root
vi /etc/init.d/es_run
  1. #!/bin/sh

  2. #chkconfig: 2345 80 05

  3. #description: es

  4. export JAVA_HOME=/home/soft/jdk1.8.0_144

  5. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  6. export PATH=$PATH:$JAVA_HOME/bin

  7. case "$1" in

  8. start)

  9. es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`

  10. if [ "$es_pid" == "" ]; then

  11. echo "elasticsearch stoped, prepare to start..."

  12. su es<<!

  13. /home/soft/elasticsearch-6.2.4/bin/elasticsearch -d

  14. !

  15. while true

  16. do

  17. es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`

  18. if [ "$es_pid" == "" ]; then

  19. sleep 1;

  20. echo "elasticsearch starting..."

  21. else

  22. echo "elasticsearch started,pid is $es_pid"

  23. break

  24. fi

  25. done

  26. else

  27. echo "elasticsearch exist,pid is $es_pid"

  28. fi

  29. ;;

  30. stop)

  31. es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`

  32. if [ "$es_pid" == "" ]; then

  33. echo "elasticsearch not started"

  34. else

  35. kill -9 $es_pid

  36. echo "elasticsearch stoped"

  37. fi

  38. ;;

  39. restart)

  40. es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`

  41. if [ "$es_pid" == "" ]; then

  42. echo "elasticsearch stoped, prepare to start..."

  43. su es<<!

  44. /home/soft/elasticsearch-6.2.4/bin/elasticsearch -d

  45. !

  46. while true

  47. do

  48. es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`

  49. if [ "$es_pid" == "" ]; then

  50. sleep 1;

  51. echo "elasticsearch starting..."

  52. else

  53. echo "elasticsearch started,pid is $es_pid"

  54. break

  55. fi

  56. done

  57. else

  58. kill -9 $es_pid

  59. echo "elasticsearch stoped"

  60. su es<<!

  61. /home/soft/elasticsearch-6.2.4/bin/elasticsearch -d

  62. !

  63. while true

  64. do

  65. es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`

  66. if [ "$es_pid" == "" ]; then

  67. sleep 1;

  68. echo "elasticsearch starting..."

  69. else

  70. echo "elasticsearch started,pid is $es_pid"

  71. break

  72. fi

  73. done

  74. fi

  75. ;;

  76. *)

  77. echo "start|stop|restart"

  78. ;;

  79. esac

  80. exit $?

注意脚步文件的前两行不可缺少

给脚步赋予可执行权限,并添加到开机启动项中。此时服务并没有启动,重启机器才会启动。当前需手动启动一次服务。

  1. chmod +x /etc/init.d/es_run

  2. chkconfig --add /etc/init.d/es_run

  3. service es_run start

每个节点按照同样的方式操作,完成机器重启后elasticsearch服务自启动

4、安装head插件

解压node-v8.11.1-linux-x64.tar.xz 之前确保系统已安装xz,若无则先安装

  1. yum install xz

  2. tar xvf node-v8.11.1-linux-x64.tar.xz

配置node环境变量

vi /etc/profile
  1. export JAVA_HOME=/home/soft/jdk1.8.0_144

  2. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  3. export NODE_PATH=/home/soft/node-v8.11.1-linux-x64

  4. export PATH=$PATH:$JAVA_HOME/bin:$NODE_PATH/bin

source /etc/profile

可以在控制台输入node或npm在验证node是否配置正确

配置node镜像源

npm set registry http://ip:port

下载head插件需要的依赖

  1. cd /home/soft/elasticsearch-head-master

  2. npm install

由于每个人的镜像源不一致可能会导致依赖不能完完整整下下来,这时可以考虑提示下载不下来的依赖,单独下载。像我使用的内网镜像源,碰到了三个问题:

1、bluebird依赖下载失败,

npm info bluebird

查看镜像源中所有bluebird所有版本信息,最新版本为3.5.1,npm install 默认下载的是镜像源中的最新版本

手动测试:

npm install bluebird@3.5.1

发现3.5.1版本下载不下来,而换成3.5.0 就ok了,具体原因没有去深究,有了解的朋友欢迎分享。下载好后继续全量下载

npm install bluebird@3.5.0
npm install 

2、core-js也碰到同样的问题,最终下载的2.5.0。下载好后继续全量下载

npm install core-js@2.5.0
npm install

3、phantomjs-prebuilt下载失败,错误信息如下:

  1. npm ERR! phantomjs-prebuilt@2.1.14 install: `node install.js`

  2. npm ERR! Exit status 1

  3. npm ERR!

  4. npm ERR! Failed at the phantomjs-prebuilt@2.1.14 install script 'node install.js'.

网上找到解决办法,原文地址:https://stackoverflow.com/questions/40992231/failed-at-the-phantomjs-prebuilt2-1-13-install-script-node-install-js

npm install phantomjs-prebuilt@2.1.14 --ignore-scripts

继续下载其他依赖:

npm install

直至没有错误信息,表明所有依赖已下载完成

上述3个问题前两个应该跟我的环境有关,但第三个应该大家都会碰到

修改Gruntfile.js配置,在keepalive: true下增加hostname:'*'

vi Gruntfile.js
  1. connect: {

  2. server: {

  3. options: {

  4. port: 9100,

  5. base: '.',

  6. keepalive: true,

  7. hostname: '*'

  8. }

  9. }

  10. }

修改保存后启动head 服务

npm run start

网上有些说使用grunt 启动,这种方式你得先全局安装一下grunt-cli,个人觉得多此一举,方式如下:

  1. npm -g install grunt-cli

  2. grunt server

浏览器打开http://100.0.26.117:9100,此时发现页面能正常打开,但是提示集群健康值:未连接,这个问题由两个地方的配置导致的,网上查资料基本只说一种情况,可能他们只基于本地测试,不是面向生产环境,所有有些问题并未发现。

1、修改elasticsearch.yml,增加如下配置并重启ES:

  1. http.cors.enabled: true

  2. http.cors.allow-origin: "*"

service es_run restart

2、再次打开http://100.0.26.117:9100,显示还是未连接,如下图:

注意图片上用红框标注的,生产环境中客户端访问的时候, 连接localhost肯定是访问不了的,这时把localhost改成100.0.26.117就可以了,也可以修改app.js的一个配置:

vi /home/soft/elasticsearch-head-master/_site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://100.0.26.117:9200";

重启head 服务就OK了。

很容易想到接下来就是后台启动以及开机自启动,配置过程跟elasticsearch相似

vi /etc/init.d/es_head_run

配置如下:

  1. #!/bin/sh

  2. #chkconfig: 2345 80 05

  3. #description: es_head_run

  4. export NODE_PATH=/home/soft/node-v8.11.1-linux-x64

  5. export PATH=$PATH:$NODE_PATH/bin

  6. cd /home/soft/elasticsearch-head-master

  7. nohup npm run start >/home/soft/elasticsearch-head-master/nohup.out 2>&1 &

赋权限及添加到开机启动项

  1. chmod +x /etc/init.d/es_head_run

  2. chkconfig -add /etc/init.d/es_head_run

  3. service es_head_run

到这里整个部署流程已经完成

elasticsearch6.X 及head插件部署(完整版)相关推荐

  1. MongoDB分片+副本+keyFile认证(新手部署完整版)

    MongoDB分片+副本+keyFile认证(新手部署完整版) 部署详情 服务器yhcs_1 IP:192.168.43.211 服务器yhcs_2 IP:192.168.43.212 服务器yhcs ...

  2. 2022年青龙面板部署完整版教程(多图)

    前言 0.0 安装对象推荐 centos7.6 0.1 服务器租用推荐腾讯云.阿里云 传送门: 腾讯云 阿里云 教程开始 1.1 系统选择: centos7.6 下面以腾讯云服务器为例,先选地区.然后 ...

  3. 蓝鲸智云App应用部署(完整版)

    App应用发布部署,其中包含了docker部署gitea,mysql,redis组件 2.1新建应用,填写应用信息,如下图所示 2.2填写git仓库 2.3修改app应用代码中配置 修改 config ...

  4. 蓝鲸智云5.1版本安装部署(完整版)

    环境要求: 1.蓝鲸部署机器:centos 7 2.App 应用部署机器:centos 7 一:蓝鲸安装部署 1.1环境准备 1.2使用 epel 源 yum install epel-release ...

  5. 【甘道夫】Hadoop2.4.1尝鲜部署+完整版配置文件

    引言 转眼间,Hadoop的stable版本已经升级到2.4.1了,社区的力量真是强大!3.0啥时候release呢? 今天做了个调研,尝鲜了一下2.4.1版本的分布式部署,包括NN HA(目前已经部 ...

  6. 第一季8:mpp的部署、sample的编译和测试、完整版根文件(包含mpp)制作

    mpp是别人写好的一些驱动.库等内容,我们需要部署这些内容,即复制粘贴在合适的位置. 一.mpp文件结构 二.部署ko文件和部署lib文件 (1)在板载系统的profile中添加设置网卡IP地址. / ...

  7. 织梦手机站 html 插件,织梦DEDECMS手机端生成静态页面插件完整版

    织梦DEDECMS手机端生成静态页面插件完整版[已解决] 实现手机端(wap版)静态生成 一.添加后台导航栏目链接 1 打开dede/inc/inc_menu.php,在146行下面添加代码: 二.更 ...

  8. 宝塔面板在同一服务器下创建多个端口部署项目(轻量应用服务器一键部署网站、博客、GltLab完整版)

    [从零开始使用轻量应用服务器快速搭建自己的GitLab]https://blog.csdn.net/qq_38629292/article/details/123982234 在上一篇博客中,我们详细 ...

  9. 实现图片滑动验证码js插件+后台(完整版)

    之前一直比较忙,最近也看到之前发的很多人问,现在我就提取出来发个简化完整版的. 我后端采用python+flask+redis,简易实现图片验证功能,如需复杂验证,请记录鼠标拖动轨迹,后端实现分析,具 ...

最新文章

  1. 阿里云前端周刊 - 第 29 期
  2. java2的7次方怎么表示_python编程解方程第二弹:10行代码解二次方程(纯字符)...
  3. python编程入门 电子书-Python编程从入门到实践PDF电子书
  4. ASP.NET MVC 2.0
  5. 学习nginx接口调用之摘录
  6. 新浪微博开放平台开发-android客户端(2)
  7. Windows学习总结(6)——MindManager新手入门教程
  8. 商用密码技术与应用创新的方向是什么?安全牛发布《商密报告》全面揭晓
  9. 做产品经理的第1年、第5年和第10年...
  10. 设计灵感案例|教你图像在海报中可以如何摆放!
  11. MySQL Innodb数据库性能实践——VARCHAR vs CHAR
  12. System Toolkit for Mac(系统维护工具)
  13. DIAMOND: 超快的蛋白序列比对软件
  14. CI520读卡芯片 软硬件兼容替换CV520
  15. AC A2C A3C
  16. 中国电信物联网平台入门学习笔记6:电信平台数据模拟采集
  17. WINDOWS2008 SERVER服务器上网实战
  18. Openbravo ERP介绍
  19. 视频如何加水印文字?
  20. Unity 中 创建 TextMeshPro 中文字体(含常见汉字 TXT 文件)

热门文章

  1. 将长度为n的绳子分为m段求各段乘积的最大值
  2. java $.class_java文件编译后额外生成的$1.class是怎么一回事
  3. hmcl整合包导入_SSM实战第一篇_SSM的整合
  4. 表格布局(tablelayout)
  5. php取汉字第一个字,php---------取汉字的第一个字的首字母
  6. hadoop中的jps是什么,Jps命令—使用详解【笔记自用】
  7. python 写 log
  8. python为什么用号做注释符_Python为什么用#号作注释符?
  9. input自适应_一种Dynamic ReLU:自适应参数化ReLU(调参记录26)Cifar10~95.92%
  10. kali安装步骤失败 选择并安装软件_Pycharm2019.3.3软件安装步骤