安装环境:centos7
本次安装三个节点的集群为例,节点配置如下,ip不方便透露以文字代替
ip | 节点名称 | 是否为master节点 |
ip1 | node-1 | true |
ip2 | node-2 | false |
ip3 | node-3 | false |
一、elasticsearch集群安装
1、下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz
2、解压
tar -zxvf elasticsearch-7.5.1-linux-x86_64.tar.gz
3、修改配置文件
由于我的服务器内存较低。所以修改一下elasticsearch起动内存
分别在三台机器中进入到解压后的elasticsearch7.5.1目录
vim config/jvm.options 修改如下
分别在三个节点中修改主要配置项如下
vim config/elasticsearch.yml
node-1
#集群名称--在同一个集群中所有节点的名称都要一样
cluster.name: my-application
#节点名称--每个节点都不一样
node.name: node-1
#是否为主节点
node.master: true
#配置外网能访问
network.host: 0.0.0.0
#配置客户端访问端口
http.port: 9200
#配置用外网ip来进行节点间的通信,默认是内网,因为我的三台服务器内网ping不通
network.publish_host: ip1
#配置节点间通信的tcp端口
transport.tcp.port: 9300
#配置可跨域请求,用于head插件
http.cors.enabled: true
http.cors.allow-origin: "*"
#用于发现其他节点,写入节点ip端口为9300---注意逗号后面有个空格
discovery.seed_hosts: ["ip1:9300", "ip2:9300", "ip3:9300"]
#填主节点名称--可以为多个
cluster.initial_master_nodes: ["node-3"]
node-2
#集群名称--在同一个集群中所有节点的名称都要一样
cluster.name: my-application
#节点名称--每个节点都不一样
node.name: node-2
#是否为主节点
node.master: false
#配置外网能访问
network.host: 0.0.0.0
#配置客户端访问端口
http.port: 9200
#配置用外网ip来进行节点间的通信,默认是内网,因为我的三台服务器内网ping不通
network.publish_host: ip2
#配置节点间通信的tcp端口
transport.tcp.port: 9300
#配置可跨域请求,用于head插件
http.cors.enabled: true
http.cors.allow-origin: "*"
#用于发现其他节点,写入节点ip端口为9300---注意逗号后面有个空格
discovery.seed_hosts: ["ip1:9300", "ip2:9300", "ip3:9300"]
#填主节点名称--可以为多个
cluster.initial_master_nodes: ["node-3"]
node-3
#集群名称--在同一个集群中所有节点的名称都要一样
cluster.name: my-application
#节点名称--每个节点都不一样
node.name: node-3
#是否为主节点
node.master: false
#配置外网能访问
network.host: 0.0.0.0
#配置客户端访问端口
http.port: 9200
#配置用外网ip来进行节点间的通信,默认是内网,因为我的三台服务器内网ping不通
network.publish_host: ip3
#配置节点间通信的tcp端口
transport.tcp.port: 9300
#配置可跨域请求,用于head插件
http.cors.enabled: true
http.cors.allow-origin: "*"
#用于发现其他节点,写入节点ip端口为9300---注意逗号后面有个空格
discovery.seed_hosts: ["ip1:9300", "ip2:9300", "ip3:9300"]
#填主节点名称--可以为多个
cluster.initial_master_nodes: ["node-3"]
到此我们的elasticsearch集群配置已经完成,但是由于我们修改配置network.host: 0.0.0.0会导致elasticsearch服务启动不成功,所以我们需要修改服务器的配置,步骤如下:
错误一解决办法:
vim /etc/sysctl.conf
在文件中追加如下配置
vm.max_map_count=855360
保存后执行 sysctl -p命令使配置生效
错误二解决办法:
vim /etc/security/limits.conf
在文件中追加如下内容:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
4、添加新用户
由于elasticsearch不允许用root用户启动elasticsearch,说以要新建一个用户用于启动elasticsearch
#添加名为es的用户
useradd es
#给es赋予elasticsearch目录的权限
chown -R es elasticsearch-7.5.1/
5、启动elasticsearch集群
切换到es用户:
su es
分别启动集群(没有顺序要求)
./elasticsearch-7.5.1/bin/elasticsearch
如果要后台启动就在启动命令后面加上 -d
./elasticsearch-7.5.1/bin/elasticsearch -d
启动好后测试下是否成功
随便在一台机器上请求如下:
curl localhost:9200/_cat/nodes?v
可以见到集群成功如下:
当然也通过浏览器以外网访问。elasticsearch集群到这完成,接下来安装head插件
二、elasticsearch-head插件安装
head插件在其中有个节点安装就行
1.下载head插件:https://github.com/mobz/elasticsearch-head
2.解压安装包:unzip elasticsearch-head.zip 之后,将会出现一个elasticsearch-head文件夹
安装head插件前需要先安装nodejs和用nodejs安装grunt
#下载nodejs
wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz
#解压
tar xf node-v10.9.0-linux-x64.tar.xz
#进入解压目录
cd node-v10.9.0-linux-x64/
#执行node命令 查看版本
./bin/node -v
配置一下nodejs的环境变量
vim /etc/profile
#nodejs所在目录
export NODE_HOME=/usr/local/nodejs/bin
export PATH=${NODE_HOME}:$PATH
#修改后及时生效
source /etc/profile
安装grunt
npm install -g grunt-cli
如果遇到如下错误:
解决办法:
#你报错什么版本,就对应什么版本
npm install phantomjs-prebuilt@2.1.16 --ignore-scripts
这个步骤做好后我们进入到elasticsearch-head目录
修改服务器监听地址(在目录elasticsearch-head-master/Gruntfile.js)修改如下部分内容:
connect: {
server: {
options: {
hostname: '0.0.0.0',
port: 9100,
base: '.',
keepalive: true
}
}
}
});
修改连接地址:elasticsearch-head/_site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://ip地址:9200";
进入到elasticsearch-head执行如下命令启动head插件
npm imstall
npm run start 或 nohup npm run start(后台启动)
启动成功后就可以通过http://ip:9100即可访问:
访问如下:
到此安装结束!