Elasticsearch集群部署及Head插件安装

首先准备三台Linux服务器,系统版本Centos7,具备Java环境,最好是JDK11以上。由于ES比较吃内存,所以每台服务器的配置要求为:

  • CPU:2核
  • 内存:2G

我的三个节点分别是HadoopNode01、HadoopNode02、HadoopNode03,以下操作全部基于HadoopNode01进行操作,后面可以通过拷贝实现集群快速安装

1. 下载ES(7.6.2)

ES相关软件网盘链接,提取码j8j9,也可以自己去官网下载

2. 安装

省略解压步骤,我的解压目录是/opt/module/elasticsearch

需要注意的是,ES不支持root用户启动,所以需要新建一个用户

# 新建用户es
useradd es

# 修改elasticsearch目录权限(es:es表示用户名:用户组)
chown -R es:es /opt/module/elasticsearch

解压后目录结构

Elasticsearch集群部署及Head插件安装_第1张图片

配置环境变量

vim /etc/profile.d/es.sh

#添加以下内容
export ES_HOME=/opt/module/elasticsearch
export PATH=$PATH:$ES_HOME/bin

# 让配置生效
source /etc/profile

3. 修改配置

修改JVM参数

vim /opt/module/elasticsearch/config/jvm.options

Elasticsearch集群部署及Head插件安装_第2张图片

默认内存为1g,我们可以适当的调整一下,我这里给的是521m

修改启动配置

# 进入config目录
cd /opt/module/elasticsearch/config/

# 备份初始配置
cp elasticsearch.yml elasticsearch.yml.bak

# HadoopNode01
# 编辑elasticsearch.yml,添加以下内容


#集群名称
cluster.name: es-cluster
#节点名称
node.name: node-1
#数据存储路径
path.data: /opt/module/elasticsearch/data
#日志存储路径
path.logs: /opt/module/elasticsearch/logs
#这样配置本机可以访问,因为我的服务器有多个网卡,如果单网卡可以写0.0.0.0
network.host: 192.168.191.13
#http端口
http.port: 9200
#集群内部通信端口
transport.tcp.port: 9300
#是否可以为主节点
node.master: true
#是否为数据节点
node.data: true
#初始主节点
cluster.initial_master_nodes: ["node-1"]
#可以跨域
http.cors.enabled: true
#所有域名都可以访问
http.cors.allow-origin: "*"
#集群节点列表,此处已经提前做好host映射,可替换为真实ip
discovery.seed_hosts: ["HadoopNode01","HadoopNode02","HadoopNode03"]
#可不加
discovery.zen.minimum_master_nodes: 2

操作系统优化配置

这个配置是在所有节点都需要做的,好像不配置es启动就失败。

# 内存优化
vim /etc/sysctl.conf

# 添加以下内容

#系统最大打开文件描述符数
fs.file-max=655360
#限制一个进程拥有虚拟内存区域的大小
vm.max_map_count=655360

# 让配置生效
sysctl -p


# 修改/etc/security/limits.conf
vim /etc/security/limits.conf

#添加以下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft memlock unlimited
* hard memlock unlimited


# 修改/etc/security/limits.d/90-nproc.conf
*          soft    nproc     65536
root       soft    nproc     unlimited

如此,HadoopNode01节点上的ES我们就安装好了,接下来我们可以通过SCP命令来把/opt/module/elasticsearch这个目录分别复制到HadoopNode02和HadoopNode03两个节点。在此之前,我们应该提前做好三个节点之间的免密登陆,方便我们快速拷贝和后面的一键启动脚本执行。

此处默认已经做好了免密登陆,执行以下命令即可复制

scp -r /opt/module/elasticsearch/ root@HadoopNode02:/opt/module/elasticsearch

scp -r /opt/module/elasticsearch/ root@HadoopNode02:/opt/module/elasticsearch

复制到两个节点之后,需要做的事情有给文件夹es用户权限、配置环境变量和修改elasticsearch.yml配置文件三件事情,其他的不用动,并且在elasticsearch.yml配置文件中我们要改的只有node.name这个属性,避免节点名称重复。

另外两个节点的配置如下

#HadoopNode02

#集群名称
cluster.name: es-cluster
#节点名称
node.name: node-2
#数据存储路径
path.data: /opt/module/elasticsearch/data
#日志存储路径
path.logs: /opt/module/elasticsearch/logs
#这样配置本机可以访问
network.host: 192.168.191.236
#http端口
http.port: 9200
#集群内部通信端口
transport.tcp.port: 9300
#是否可以为主节点
node.master: true
#是否为数据节点
node.data: true
#初始主节点
cluster.initial_master_nodes: ["node-1"]
#可以跨域
http.cors.enabled: true
#所有域名都可以访问
http.cors.allow-origin: "*"
#集群节点列表
discovery.seed_hosts: ["HadoopNode01","HadoopNode02","HadoopNode03"]
#可不加
discovery.zen.minimum_master_nodes: 2



#HadoopNode03

#集群名称
cluster.name: es-cluster
#节点名称
node.name: node-3
#数据存储路径
path.data: /opt/module/elasticsearch/data
#日志存储路径
path.logs: /opt/module/elasticsearch/logs
#这样配置本机可以访问
network.host: 192.168.191.21
#http端口
http.port: 9200
#集群内部通信端口
transport.tcp.port: 9300
#是否可以为主节点
node.master: true
#是否为数据节点
node.data: true
#初始主节点
cluster.initial_master_nodes: ["node-1"]
#可以跨域
http.cors.enabled: true
#所有域名都可以访问
http.cors.allow-origin: "*"
#集群节点列表
discovery.seed_hosts: ["HadoopNode01","HadoopNode02","HadoopNode03"]
#可不加
discovery.zen.minimum_master_nodes: 2

4. 一件启停脚本

集群配置完毕,并且配置了环境变量之后,我们可以分别在每台服务器上执行elasticsearch -d(后台启动)elasticsearch来启动es,但是这样做是很麻烦的。所以这里写了一个脚本。在/usr/local/bin目录下创建文件es.sh,内容如下

#!/bin/bash
#配置ES的安装目录 修改的地方1 脚本可以自己创建
esServers='HadoopNode01 HadoopNode02 HadoopNode03'

USER=es

ROOT=/opt/module

NAME=elasticsearch

DIR=${ROOT}/${NAME}

#启动所有的zk
start(){
for es in $esServers
do
    ssh -T $es <<EOF
    source ~/.bashrc
    su - ${USER} -c "${DIR}/bin/elasticsearch -d"
EOF
echo 从节点 $es 启动elasticsearch...[ done ]
sleep 2
done
}

stop(){
for es in $esServers
do
    ssh -T $es <<EOF
    source ~/.bashrc
    ps aux |grep elasticsearch |grep -v grep |awk '{print \$2}' |xargs kill -9
EOF
echo 从节点 $es 停止elasticsearch...[ done ]
sleep 2
done
}


case "$1" in
    start)
          start
    ;;
    stop)
          stop
    ;;
    restart)
          stop
          sleep 5
          start
    ;;
    *)
    echo "Usage: /etc/init.d/${NAME} {start|stop|restart}"
    exit 1
esac

给文件可执行权限

chmod 777 es.sh

需要注意的是,这个文件能在集群环境下执行成功的前提是这几个节点之间做了免密登陆!!!!

启动集群

./es.sh start

关闭集群

./es.sh stop

查看日志

默认的日志文件是/opt/module/elasticsearch/logs/es-cluster.log

验证某节点ES是否可用

curl http://ip:9200

Elasticsearch集群部署及Head插件安装_第3张图片

查看集群信息

http://某一节点ip:9200/_cluster/health?pretty

Elasticsearch集群部署及Head插件安装_第4张图片

至此,有三个节点的并且三个节点都是data节点的es集群部署完毕。

5. 安装Head插件

像上面那样去获取ES集群信息总是显得很麻烦,于是一个好用的插件就可以派上用场了,它就是Head。它可以帮助我们以图形界面的方式查看集群的信息,甚至是操作集群。

安装node

它需要依赖node.js环境

# 下载node
wget https://npmmirror.com/mirrors/node/v16.14.2/node-v16.14.2-linux-x64.tar.xz

# 解压缩
tar -xvf node-v16.14.2-linux-x64.tar.xz -C usr/local

# 配置环境变量
vim /etc/profile.d/node.sh

# 添加以下内容
export NODE_HOME=/opt/module/nodejs
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules

# 保存退出
# 让配置生效
source /etc/profile

# 检查是否配置成功
node -version # 如果显示了node的版本号说明配置成功

# 修改npm镜像源为淘宝镜像源
npm config set registry https://registry.npm.taobao.org
head插件下载解压
# 下载
wget https://github.com/mobz/elasticsearch-head/archive/master.zip

# 解压
unzip -d /opt/module master.zip 
安装grunt
# 进入head解压后的目录
cd /opt/module/elasticsearch-head-master

# 执行安装命令
npm install

# 安装grunt
npm install -g grunt-cli

# 查看版本信息,验证是否安装成功
grunt --version
配置文件修改
# 修改Gruntfile.js文件
vim /opt/module/elasticsearch-head-master/Gruntfile.js +99

Elasticsearch集群部署及Head插件安装_第5张图片

keepalive下添加一个属性hostname

vim /opt/module/elasticsearch-head-master/_site/app.js +4388

Elasticsearch集群部署及Head插件安装_第6张图片

这里是配置的ES的地址,如果与ES在相同的服务器也可以不改变

启动

#当前目录
/opt/module/elasticsearch-head-master

# 启动
nohup grunt server &

效果

Elasticsearch集群部署及Head插件安装_第7张图片

你可能感兴趣的:(elasticsearch,es)