IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Elasticsearch集群部署及Head插件安装 -> 正文阅读

[大数据]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

解压后目录结构

配置环境变量

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

默认内存为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

查看集群信息

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

至此,有三个节点的并且三个节点都是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

keepalive下添加一个属性hostname

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

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

启动

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

# 启动
nohup grunt server &

效果

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 11:56:15  更:2022-04-28 11:57:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:56:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码