写点什么

Linux 环境快速搭建 elasticsearch6.5.4 集群和 Head 插件

作者:程序员欣宸
  • 2022 年 7 月 28 日
  • 本文字数:5528 字

    阅读完需:约 18 分钟

Linux环境快速搭建elasticsearch6.5.4集群和Head插件

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos


  • 今天来一起实战 Linux 环境下搭建 elasticsearch6.5.4 集群和 Head 插件;

环境信息

  • 操作系统:Ubuntu 16.04.5 LTS

  • JDK:1.8.0_191

  • elasticsearch:6.5.4

  • nodejs:v10.15.0

  • 本次实战准备了两台机器,它们的基本情况如下所示:


操作步骤整理

  • 整个实战由以下操作步骤组成,注意:有的步骤需要在两台机器上都要做,在具体操作的地方,我会用红字说明


  1. 修改主机名;

  2. 修改 hosts;

  3. 修改 linux 文件描述符限制;

  4. 修改最大线程数限制;

  5. 修改内存限制;

  6. 安装 JDK;

  7. 创建用户;

  8. 给 es 用户增加 sudo 权限

  9. 安装 elasticsearch;

  10. 在 node-0 机器安装 nodejs

  11. 设置 elasticsearch;

  12. 启动 elasticsearch

  13. 安装 head 组件(只在 node-0 上安装)

  14. 验证

修改主机名

  • 注意:以下的操作在 node-0 和 node-1 两台机器上都要做

  • 打开文件**/etc/hostname**,将内容修改为本次实战所需的 hostname(node-0 和 node-1);

修改 hosts

  • 注意:以下的操作在 node-0 和 node-1 两台机器上都要做

  • 打开文件令**/etc/hosts**,增加以下两行,读者请注意改为自己机器的 IP 地址:


192.168.119.152 node-0192.168.119.153 node-1
复制代码

修改 linux 文件描述符限制

  • 注意:以下的操作在 node-0 和 node-1 两台机器上都要做

  • 执行命令 ulimit -Hn,查看硬限制:


[root@localhost es]# ulimit -Hn4096
复制代码


  • 执行命令 ulimit -Sn,查看软限制(程序中可以提升):


[root@localhost es]# ulimit -Sn1024
复制代码


  • 上述限制会导致 elasticsearch 启动失败,所以需要调整;

  • 打开文件**/etc/security/limits.conf**,增加以下两行设置(注意,如果是已有配置就修改对应的值):


*               soft    nofile           65536*               hard    nofile           65536
复制代码


  • 修改完成后退出重新登录,再次查看发现配置已经生效:


[root@localhost ~]# ulimit -Hn65536[root@localhost ~]# ulimit -Sn65536
复制代码

修改最大线程数限制

  • 注意:以下的操作在 node-0 和 node-1 两台机器上都要做

  • 打开文件**/etc/security/limits.conf**,增加以下两行设置(注意,如果是已有配置就修改对应的值):


*               soft    nproc           4096*               hard    nproc           4096
复制代码


  • 修改完毕后,需要重启才会生效;

修改内存限制

  • 注意:以下的操作在 node-0 和 node-1 两台机器上都要做

  • 修改进程中内存映射区域的最大数量,修改/etc/sysctl.conf 文件,增加以下配置(注意,如果是已有配置就修改对应的值):


vm.max_map_count=262144
复制代码


  • 修改完成后,重启生效;

安装 JDK

  • 注意:以下的操作在 node-0 和 node-1 两台机器上都要做

  • 在官网下载 JDK,地址是 https://www.oracle.com/technetwork/java/index.html ,在上面选择合适的版本下载;

  • 将下载的 JDK 安装文件放在目录**/usr/lib/jvm**,解压;

  • 我这边 JDK 解压后的完整路径是**/usr/lib/jvm/jdk1.8.0_191**,在/etc/profile 文件增加以下内容:


export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_191export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH
复制代码


  • 修改完毕后执行命令 source /etc/profile 使设置立即生效,执行 java -version 查看设置是否成功:


[root@localhost jdk1.8.0_191]# java -versionjava version "1.8.0_191"Java(TM) SE Runtime Environment (build 1.8.0_191-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
复制代码

创建用户

  • 注意:以下的操作在 node-0 和 node-1 两台机器上都要做

  • es 不允许 root 用户启动应用,因此需要创建用户:


  1. 执行命令 useradd es,即可创建用户 es;

  2. 执行命令 passwd es,按照提示修改用户密码;

给 es 用户增加 sudo 权限

  • 注意:以下的操作在 node-0 和 node-1 两台机器上都要做

  • 给文件/etc/sudoers 增加写权限:


chmod a+w /etc/sudoers
复制代码


  • 打开文件/etc/sudoers;

  • 增加以下一行内容:


es      ALL=(ALL:ALL) ALL
复制代码


  • 保存后,修改 sudoers 文件的权限:


chmod 440 /etc/sudoers
复制代码

安装 elasticsearch

  • 注意:以下的操作在 node-0 和 node-1 两台机器上都要做

  • 在官网下载安装包,地址是:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz

  • 解压后的完整目录是**/usr/local/work/es/elasticsearch-6.5.4**,执行以下命令将文件夹的所有者和群组设置为 es


chown -R es:es /usr/local/work/es/elasticsearch-6.5.4
复制代码


  • 执行 ls 命令确认一下所属用户和群组:


root@node-0:/usr/local/work/es# ls -altotal 12drwxr-xr-x 3 root root 4096 Jan 11 18:54 .drwxr-xr-x 6 root root 4096 Jan 11 18:43 ..drwxr-xr-x 8 es   es   4096 Dec 17 13:21 elasticsearch-6.5.4
复制代码

在 node-0 机器安装 nodejs

  • 在 node-0 机器安装 nodejs,详细的操作步骤请参照文章《Ubuntu16 安装 nodejs10》,其实就是下载、解压、设置等操作,很快就能完成;

  • 执行以下命令,确保 es 账号能访问 nodejs 目录,是 nodejs 安装的目录:


sudo chmod 777 -R /usr/local/work/nodejs/node-v10.15.0-linux-x64
复制代码

设置 elasticsearch

  • 打开 node-0 机器的文件,新增或者修改以下配置信息:



  • 打开 node-1 机器的文件,新增或者修改以下配置信息:


  • 两台机器的配置中,只有 node.name 这个参数的值不同,其他的一模一样,在 node-0 机器上修改后的 elasticsearch.yml 文件如下所示:


启动 elasticsearch

  • 如果当前用户是 root,执行命令 su - es,切换到 es 用户;

  • 执行以下命令启动 node-0 的 elasticsearch:


/usr/local/work/es/elasticsearch-6.5.4/bin/elasticsearch
复制代码


  • 在 node-1 机器上执行步骤 1 和 2,node-1 的 elasticsearch 启动成功后,在 node-0 的控制台可以看到 node-1 加入集群的信息如下:


[2019-01-11T19:54:02,548][INFO ][o.e.c.s.MasterService    ] [node-0] zen-disco-node-join[{node-1}{bYrSztiTTzOi_SLAW_UdkA}{pC5ozVjZQF-jtHTWwyOXJA}{192.168.119.153}{192.168.119.153:9300}{ml.machine_memory=2078556160, ml.max_open_jobs=20, xpack.installed=true, ml.enabled=true}], reason: added {{node-1}{bYrSztiTTzOi_SLAW_UdkA}{pC5ozVjZQF-jtHTWwyOXJA}{192.168.119.153}{192.168.119.153:9300}{ml.machine_memory=2078556160, ml.max_open_jobs=20, xpack.installed=true, ml.enabled=true},}[2019-01-11T19:54:03,206][INFO ][o.e.c.s.ClusterApplierService] [node-0] added {{node-1}{bYrSztiTTzOi_SLAW_UdkA}{pC5ozVjZQF-jtHTWwyOXJA}{192.168.119.153}{192.168.119.153:9300}{ml.machine_memory=2078556160, ml.max_open_jobs=20, xpack.installed=true, ml.enabled=true},}, reason: apply cluster state (from master [master {node-0}{Qc3orkESRHSTTySc2DSJyA}{p0rWBQu_TweRS3TofB4NMA}{192.168.119.152}{192.168.119.152:9300}{ml.machine_memory=2078556160, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true} committed version [15] source [zen-disco-node-join[{node-1}{bYrSztiTTzOi_SLAW_UdkA}{pC5ozVjZQF-jtHTWwyOXJA}{192.168.119.153}{192.168.119.153:9300}{ml.machine_memory=2078556160, ml.max_open_jobs=20, xpack.installed=true, ml.enabled=true}]]])[2019-01-11T19:54:03,209][WARN ][o.e.d.z.ElectMasterService] [node-0] value for setting "discovery.zen.minimum_master_nodes" is too low. This can result in data loss! Please set it to at least a quorum of master-eligible nodes (current value: [1], total number of master-eligible nodes used for publishing in this round: [2])
复制代码


  • 在浏览器上访问 192.168.119.153:9300,可以返回基本信息如下图所示:



  • 至此,elasticsearch 集群搭建成功,接下来安装 head 组件;

安装 head 组件(只在 node-0 上安装)

  • 下载插件,地址:https://github.com/mobz/elasticsearch-head

  • 可以用 git clone 命令下载,也可以在网页上下载,如下图所示:



  • 下载到本地的是个名为 elasticsearch-head-master 的文件夹,放在目录**/usr/local/work/es**之下;

  • 确保文件夹的权限属于用户 es,以下命令以 root 账号身份执行:


chown -R es:es /usr/local/work/es/elasticsearch-head-master
复制代码


  • 以 es 账号的身份,在 elasticsearch-head-master 文件夹下执行命令 npm install -g grunt-cli


$ cd ../es/elasticsearch-head-master/$ npm install -g grunt-cli/usr/local/work/nodejs/node-v10.15.0-linux-x64/bin/grunt -> /usr/local/work/nodejs/node-v10.15.0-linux-x64/lib/node_modules/grunt-cli/bin/grunt+ grunt-cli@1.3.2added 152 packages from 122 contributors in 18.241s
复制代码


  • 上述命令安装了 grunt-cli,是用于构建的,接下来安装 head;

  • 在 elasticsearch-head-master 文件夹下执行命令 npm install,用于安装 head,由于网络问题有可能安装失败,提示信息类似以下:


$ npm installnpm WARN deprecated coffee-script@1.10.0: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)npm WARN deprecated http2@3.3.7: Use the built-in module in node 9.0.0 or newer, instead
> phantomjs-prebuilt@2.1.16 install /usr/local/work/es/elasticsearch-head-master/node_modules/phantomjs-prebuilt> node install.js
PhantomJS not found on PATHDownloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2Saving to /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2Receiving...
Error making request.Error: connect ECONNREFUSED 52.216.82.80:443 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1117:14)
Please report this full log at https://github.com/Medium/phantomjsnpm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expressionnpm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! phantomjs-prebuilt@2.1.16 install: `node install.js`npm ERR! Exit status 1npm ERR! npm ERR! Failed at the phantomjs-prebuilt@2.1.16 install script.npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:npm ERR! /.npm/_logs/2019-01-12T05_41_50_161Z-debug.log
复制代码


  • 出现此问题时建议重试几次,成功后的提示信息如下:


$ npm install
> phantomjs-prebuilt@2.1.16 install /usr/local/work/es/elasticsearch-head-master/node_modules/phantomjs-prebuilt> node install.js
PhantomJS not found on PATHDownloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2Saving to /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2Receiving... [=====================================---] 93%Received 22866K total.Extracting tar contents (via spawned process)Removing /usr/local/work/es/elasticsearch-head-master/node_modules/phantomjs-prebuilt/lib/phantomCopying extracted folder /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1547271795685/phantomjs-2.1.1-linux-x86_64 -> /usr/local/work/es/elasticsearch-head-master/node_modules/phantomjs-prebuilt/lib/phantomWriting location.js fileDone. Phantomjs binary available at /usr/local/work/es/elasticsearch-head-master/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjsnpm notice created a lockfile as package-lock.json. You should commit this file.npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expressionnpm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
added 67 packages from 69 contributors and audited 1751 packages in 16.681sfound 24 vulnerabilities (17 low, 1 moderate, 6 high) run `npm audit fix` to fix them, or `npm audit` for details
复制代码


  • 在 elasticsearch-head-master 文件夹下执行命令 grunt server,启动 head,控制台提示如下:


$ grunt serverRunning "connect:server" (connect) taskWaiting forever...Started connect web server on http://localhost:9100
复制代码


  • 在浏览器输入地址:http://192.168.119.152:9100 ,可见如下图信息,在红框中输入 http://192.168.119.153:9200 ,再点击绿框中的"连接"按钮,即可见到 elasticsharch 的基本情况:


验证

  • 这里我用的是 postman 来验证基本功能,读者请选择自己熟悉的 http 工具,或者写代码来执行;

  • 新建所以的操作如下图,选择类型为 PUT,地址是:http://192.168.119.152:9200/test001

  • 上图中,红框 4 是 elasticsearch 的响应信息,表示创建成功;

  • 去 head 的操作页面,点击下图红框中的“连接”按钮,可见最新的索引创建情况,以及副本分布:

  • 至此,Ubuntu16 环境搭建 elasticsearch6.5.4 集群和 head 插件实战就全部完成了,希望能在您安装的时候提供一些参考。

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

发布于: 1 小时前阅读数: 6
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
Linux环境快速搭建elasticsearch6.5.4集群和Head插件_Java_程序员欣宸_InfoQ写作社区