• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    解压后目录结构

    配置环境变量

    vim /etc/profile.d/es.sh
    
    #添加以下内容
    export ES_HOME=/opt/module/elasticsearch
    export PATH=$PATH:$ES_HOME/bin
    
    # 让配置生效
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3. 修改配置

    修改JVM参数

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

    默认内存为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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    操作系统优化配置

    这个配置是在所有节点都需要做的,好像不配置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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    如此,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
    
    • 1
    • 2
    • 3

    复制到两个节点之后,需要做的事情有给文件夹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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    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 <
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    给文件可执行权限

    chmod 777 es.sh
    
    • 1

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

    启动集群

    ./es.sh start
    
    • 1

    关闭集群

    ./es.sh stop
    
    • 1

    查看日志

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

    验证某节点ES是否可用

    curl http://ip:9200
    
    • 1

    查看集群信息

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

    至此,有三个节点的并且三个节点都是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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    head插件下载解压
    # 下载
    wget https://github.com/mobz/elasticsearch-head/archive/master.zip
    
    # 解压
    unzip -d /opt/module master.zip 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    安装grunt
    # 进入head解压后的目录
    cd /opt/module/elasticsearch-head-master
    
    # 执行安装命令
    npm install
    
    # 安装grunt
    npm install -g grunt-cli
    
    # 查看版本信息,验证是否安装成功
    grunt --version
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    配置文件修改
    # 修改Gruntfile.js文件
    vim /opt/module/elasticsearch-head-master/Gruntfile.js +99
    
    • 1
    • 2

    keepalive下添加一个属性hostname

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

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

    启动

    #当前目录
    /opt/module/elasticsearch-head-master
    
    # 启动
    nohup grunt server &
    
    • 1
    • 2
    • 3
    • 4
    • 5

    效果

  • 相关阅读:
    linux安装aerospike免安装版
    为什么要做LiveVideoStack课程?
    property语法
    Python学习基础笔记五——列表
    Docker与K8S
    【牛客刷题-算法】NC32 求平方根 (又是辛苦debug的一天)
    让环境自己说话,论环境自描述的重要性
    秸秆焚烧视频监控系统
    十二、【漏洞复现】Rails任意文件读取(CVE-2019-5418)
    【PCL-11】提取平面上层的目标物,剔除平面下层目标物
  • 原文地址:https://blog.csdn.net/m0_67401660/article/details/126717110