ElasticSearch、ElasticSearch-head的安装和问题解决
前言:elasticsearch作为一个基于Lucene的分布式搜索引擎,其搜索功能的强大之处不用多说,而elasticsearch-head作为一个node项目,能够轻松管理elasticsearch的集群配置
安装elasticsearch
1、下载资源包并解压安装
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.4.3-linux-x86_64.tar.gz
- tar -zxvf elasticsearch-8.4.3-linux-x86_64.tar.gz -C /usr/local/ —C表示指定解压到的目录
2、因为es在5版本后不允许root账号启动,因此需要创建一个子用户
useradd es
chown -R es:es /usr/local/elasticsearch-8.4.3 对解压的目录赋予指定用户权限
3、启动可能报错问题的解决方法(修改时都要在root用户下进行)
1) 内存不足,因为内存默认为大小为4g,如果服务器有这个配置可以不改
vim /usr/local/elasticsearch-8.4.3/config/elasticsearch.yml
默认配置如下: -Xms4g -Xmx4g 默认的配置占用内存太多了,调小一些: -Xms256m -Xmx256m
2)线程数不足
vim /etc/security/limits.conf
* hard nofile 65536
* soft nofile 65536
* soft nproc 4096
* hard nproc 4096
//*表示任意用户,也可以写为启动es的用户,需要退出重新登录后生效
3)用户拥有的内存权限太小
vim /etc/sysctl.conf
文件末尾添加vm.max_map_count=2621441,保存后执行:sysctl -p 使其生效
4、Elasticsearch的多节点配置
a) 主节点配置(只有一个节点)
#集群名称 cluster.name: demon #对外访问ip,表示都可以访问 network.host: 0.0.0.0 //本机ip或写成0.0.0.0提供外部访问
#节点名称
node.name: elk-1
#存放数据的位置(这两个文件位置可以不改,默认会放在es的data目录下)
path.data: /data/es-data
#存放运行日志的位置
path.logs: /var/log/elasticsearch
#节点端口
http.port: 9200
#是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"
#初始化的master节点
cluster.initial_master_nodes: ["elk-1"]
a+) 主节点配置(集群)
#节点角色
node.roles: [master,data]
#集群名称
cluster.name: elasticsearch
#对外访问ip
network.host: 0.0.0.0
#节点名称
node.name: node-0
#存放数据的位置(这两个文件位置可以不改,默认会放在es的data目录下)
path.data: /data/es-data
#存放运行日志的位置
path.logs: /var/log/elasticsearch
#节点端口
http.port: 9200
transport.port: 9300
#集群间通讯,不配置节点间不识别
network.publish_host: 192.168.8.103(本机ip)
#节点列表 默认端口9300,非9300需要带上端口号,自动轮询发现
discovery.seed_hosts: ["192.168.8.79:9300","192.168.8.103:9300"]
#初始化的master节点,表示可以选为主节点的节点
cluster.initial_master_nodes: ["node-0","node-1"]
#是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"
b) 子节点配置
#节点角色 node.roles: [master,data] #集群名称 cluster.name: elasticsearch #对外访问ip network.host: 0.0.0.0 #节点名称 node.name: node-1 #存放数据的位置(这两个文件位置可以不改,默认会放在es的data目录下) path.data: /data/es-data #存放运行日志的位置 path.logs: /var/log/elasticsearch
#节点端口 http.port: 9200 transport.tcp.port: 9300 network.publish_host: 192.168.8.79(本机ip) #节点列表 默认端口9300,非9300需要带上端口号,自动轮询发现 discovery.seed_hosts: ["192.168.8.79:9300","192.168.8.103:9300"]
#初始化的master节点,表示可以选为主节点的节点 cluster.initial_master_nodes: ["node-0","node-1"] #是否支持跨域 http.cors.enabled: true # *表示支持所有域名 http.cors.allow-origin: "*"
记得拷贝整个elasticsearch文件,需要删除data目录下的文件,或者分开手动设置data目录
新建的目录或文件要确认所属用户组为子用户,否则运行时会报权限不足的错误
5、es的启动关停
前台运行,Ctrl + C 则程序终止 /usr/local/elasticsearch-7.13.2/bin/elasticsearch 后台运行 /usr/local/elasticsearch-7.13.2/bin/elasticsearch -d 出现started时启动完成 关闭ES服务 kill pid
6、设置登录密码(单节点)
编辑配置文件
vim /usr/local/elasticsearch-8.4.3/config/elasticsearch.yml
在 elasticsearch.yml 末尾,加入以下内容:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
编辑内容后重启Elasticsearch服务(必须操作)
Transport SSL must be enabled if security is enabled on a [basic] license. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security by setting [xpack.security.enabled] to [false]
- Elasticsearch附带了一个名为elasticsearch-certutil的实用程序,可用于生成加密Elasticsearch集群内部通信的自签名证书,证书生成命令如下:
输入密码那一块直接回车,不要设置密码 假如在生成证书的时候设置了密码,会导致无法启动ES
#进入es目录下
#签发CA证书
./bin/elasticsearch-certutil ca
ENTER ENTER
#用CA证书签发节点证书
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
ENTER ENTER ENTER
我们将获得可用于加密通信的TLS/SSL证书elastic-certificates.p12
#创建证书目录
mkdir config/certs
#将证书复制到config/certs的目录中
cp elastic-certificates.p12 config/certs/
#重新编辑elasticsearch.yml文件
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
然后重新启动Elasticsearch使上述更改生效
- 设置密码
进入安装目录
cd /usr/local/elasticsearch-8.4.3
./bin/elasticsearch-setup-passwords interactive

安装chrome的elasticsearch-head插件
1、下载安装包
https://codeload.github.com/liufengji/es-head/zip/refs/heads/master
2、将.crx后缀改为rar后解压
3、解压成功后将.metadata文件名改为metadata
4、进入chrome的插件界面,选择解压的elasticsearch-head文件夹

服务器安装elasticsearch-head插件
相关版本:Elasticsearch:6.2.4 node:10.16.0 jdk:1.8
安装node
1、 下载资源wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz
2、 解压tar -xf node-v10.16.0-linux-x64.tar.xz
3、 改名mv node-v10.16.0-linux-x64 nodejs
4、 建立软连接
ln -s /usr/local/nodejs/bin/node /usr/local/bin
ln -s /usr/local/nodejs/bin/npm /usr/local/bin
5、 使用node –v查看node版本
安装elasticsearch-head插件
1、 在git上clone资源:git clone git://github.com/mobz/elasticsearch-head.git
2、 进入elasticsearch-head目录:cd elasticsearch-head/
3、 使用npm install 进行安装
a) 安装过程出现的错误与解决办法
i. 手动安装phantomjs
- 在这之前需要安装bz2,使用yum安装
- yum search bzip2 //查询安装包
- yum -y install bzip2.x86_64
- 解压:tar -xjvf /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /data
- 建立软连接:ln -s /data/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/bin
- 使用phantomjs –v查看安装版本
- 在这之前需要安装bz2,使用yum安装
ii. 报错 “error while loading shared libraries: libfontconfig.so.1: cannot open” 解决:yum -y install fontconfig-devel
报错 “Failed at the phantomjs-prebuilt@2.1.16 install scriptb)” 解决:npm install phantomjs-prebuilt@2.1.14 --ignore-scripts
4、 安装后出现

则大致表示成功了
5、 修改elasticsearch-head中的配置
修改Gruntfile.js文件

修改_site/app.js

最后使用npm run install 命令启动,出现以下情况表示启动成功

最终效果:


浙公网安备 33010602011771号