Elasticsearch 单机与集群安装部署及可视化工具

一、单机部署

  1. 原生部署

    A. 下载elasticsearch-7.14.0-linux-x86_64.tar.gz包并解压到指定目录;

    B. 编辑conf/elasticsearch.yml文件

1
2
3
4
5
6
7
8
9
10
# 单节点
discovery.type: single-node
# 设置存储数据的路径
path.data: /data/elasticsearch/data
# 设置日志文件的路径
path.logs: /data/elasticsearch/logs
# 允许外部访问
network.host: 0.0.0.0
# 开启安全特性
xpack.security.enabled: true

    C. 开启账号认证时需设置密码:

      方式一:将elastic用户的密码写入到elasticsearch-keystore中,bin/elasticsearch-keystore add "bootstrap.password",输入密码即可;

      方式二:将elastic用户与密码写入到.security-X索引中 ,bin/elasticsearch-setup-passwords interactive 按要求输入密码;

    D. 创建非root账户:useradd elasticsearch && chown -R elasticsearch:elasticsearch /data/elasticsearch

    E. 启动ES:su elasticsearch -c "bin/elasticsearch -d"。

 

  2. Docker方式部署:编写配置文件compose.yml

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
version: "3"
 
networks:
    rhxy-network:
        external: true
 
services:
    elasticsearch:
        image: docker.m.daocloud.io/library/elasticsearch:7.14.0
        container_name: elasticsearch
        hostname: elasticsearch
        restart: always
        ports:
            - 9200:9200
            - 9300:9300
        networks:
            - rhxy-network
        volumes:
            - "/data/elasticsearch/data:/usr/share/elasticsearch/data"
            - "/data/elasticsearch/logs:/usr/share/elasticsearch/logs"
            # IK分词器
            - "/data/elasticsearch/ik:/usr/share/elasticsearch/plugins/ik"
        environment:
            TZ: Asia/Shanghai
            discovery.type: single-node
            # 开启账号密码验证
            xpack.security.enabled: "true"
            ELASTIC_PASSWORD: "123456"
            ES_JAVA_OPTS: "-Xmx512m -Xms512m"

  ELASTIC_PASSWORD设置的密码是存储在elasticsearch-keystore中

 

二、集群部署

  1. 原生部署

    A. 安装单机版的Elasticsearch搭建三个重复节点,可单台搭建伪集群;

    B. 编辑conf/elasticsearch.yml文件

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
# 设置Elasticsearch集群的名称
cluster.name: rhxy-es-cluster
# 设置节点的名称,在集群中必须是唯一的
node.name: es-node-1
# 设置Elasticsearch存储数据的路径
path.data: /data/elasticsearch/data
# 设置Elasticsearch日志文件的路径
path.logs: /data/elasticsearch/logs
# 设置Elasticsearch节点对外服务的HTTP端口,默认是 9200
http.port: 19201
# 集群通讯端口,默认是9300
transport.tcp.port: 19301
# 设置Elasticsearch监听的网络接口
network.host: 0.0.0.0
# 设置集群中的节点发现主机,注意端口是集群通讯端口而非WEB端口
discovery.seed_hosts: ["11.11.101.119:19301", "11.11.101.119:19302", "11.11.101.119:19303"]
# 7.0新引入的配置项,初始仲裁,仅在整个集群首次启动时才需要初始仲裁,该选项配置为node.name的值
cluster.initial_master_nodes: ["es-node-1", "es-node-2", "es-node-3"]
# 开启安全特性
xpack.security.enabled: true
# 若开启了安全特性,则必须开启传输层安全验证
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /data/elasticsearch/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /data/elasticsearch/config/elastic-certificates.p12

    C. 增加/etc/security/limits.conf配置

1
2
3
4
elasticsearch hard nofile 65536
elasticsearch soft nofile 65536
elasticsearch hard nproc 4096
elasticsearch soft nproc 4096

    D. 增加/etc/sysctl.conf配置:vm.max_map_count=262144,用sysctl -p生效;

    E. 创建证书:

      第一步生产ca证书:在某一个节点执行./bin/elasticsearch-certutil ca  回车后第一个提示是命名文件,第二个提示是输入密码;

      第二步签发节点证书:./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 回车后第一个输入第一步的密码,第二个是命名文件,第三个是输入密码;

      第三步将节点证书分发:将节点证书elastic-certificates.p12迁移到指定目录,并将该文件复制到其它节点上;

      第四步添加密码:./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password和./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password;

      第五步修改权限:chown -R elasticsearch:elasticsearch /data/elasticsearch。

    F. 集群启动:逐个启动节点即可su elasticsearch -c "bin/elasticsearch -d"

 

  2. Docker方式部署:编写配置文件stack.yml

复制代码
# ElasticSearch集群
    es-master-1:
        image: es/elasticsearch:7.7.0
        deploy:
            mode: global
            placement:
                constraints: 
                    - node.labels.es-master-1 == true
        hostname: es-master-1
        networks:
            - rws-mp
        volumes:
            - /etc/localtime:/etc/localtime
            - es-master-1-data:/usr/share/elasticsearch/data
            - es-master-1-logs:/usr/share/elasticsearch/logs
        environment:
            ES_JAVA_OPTS: "-Xms256m -Xmx256m -Duser.timezone=Asia/Shanghai"
            node.name: es-master-1
            node.master: "true"
            node.data: "false"
            node.ingest: "false"
            network.host: 0.0.0.0
            cluster.name: rws-uat-es
            cluster.initial_master_nodes: es-master-1,es-master-2,es-master-3
            discovery.seed_hosts: es-master-2,es-master-3
            xpack.security.enabled: "false"
            bootstrap.memory_lock: "false"
            MAX_LOCKED_MEMORY: unlimited
    es-master-2:
        image: es/elasticsearch:7.7.0
        deploy:
            mode: global
            placement:
                constraints: 
                    - node.labels.es-master-2 == true
        hostname: es-master-2
        networks:
            - rws-mp
        volumes:
            - /etc/localtime:/etc/localtime
            - es-master-2-data:/usr/share/elasticsearch/data
            - es-master-2-logs:/usr/share/elasticsearch/logs
        environment:
            ES_JAVA_OPTS: "-Xms256m -Xmx256m -Duser.timezone=Asia/Shanghai"
            node.name: es-master-2
            node.master: "true"
            node.data: "false"
            node.ingest: "false"
            network.host: 0.0.0.0
            cluster.name: rws-uat-es
            cluster.initial_master_nodes: es-master-1,es-master-2,es-master-3
            discovery.seed_hosts: es-master-1,es-master-3
            xpack.security.enabled: "false"
            bootstrap.memory_lock: "false"
            MAX_LOCKED_MEMORY: unlimited
    es-master-3:
        image: es/elasticsearch:7.7.0
        deploy:
            mode: global
            placement:
                constraints: 
                    - node.labels.es-master-3 == true
        hostname: es-master-3
        networks:
            - rws-mp
        volumes:
            - /etc/localtime:/etc/localtime
            - es-master-3-data:/usr/share/elasticsearch/data
            - es-master-3-logs:/usr/share/elasticsearch/logs
        environment:
            ES_JAVA_OPTS: "-Xms256m -Xmx256m -Duser.timezone=Asia/Shanghai"
            node.name: es-master-3
            node.master: "true"
            node.data: "false"
            node.ingest: "false"
            network.host: 0.0.0.0
            cluster.name: rws-uat-es
            cluster.initial_master_nodes: es-master-1,es-master-2,es-master-3
            discovery.seed_hosts: es-master-1,es-master-2
            xpack.security.enabled: "false"
            bootstrap.memory_lock: "false"
            MAX_LOCKED_MEMORY: unlimited
    es-data-1:
        image: es/elasticsearch:7.7.0
        deploy:
            mode: global
            placement:
                constraints: 
                    - node.labels.es-data-1 == true
        hostname: es-data-1
        networks:
            - rws-mp
        volumes:
            - /etc/localtime:/etc/localtime
            - es-data-1-data:/usr/share/elasticsearch/data
            - es-data-1-logs:/usr/share/elasticsearch/logs
        environment:
            ES_JAVA_OPTS: "-Xms1024m -Xmx1024m -Duser.timezone=Asia/Shanghai"
            node.name: es-data-1
            node.master: "false"
            node.data: "true"
            node.ingest: "false"
            network.host: 0.0.0.0
            cluster.name: rws-uat-es
            cluster.initial_master_nodes: es-master-1,es-master-2,es-master-3
            discovery.seed_hosts: es-data-2,es-data-3,es-master-1,es-master-2,es-master-3
            xpack.security.enabled: "false"
            bootstrap.memory_lock: "false"
            MAX_LOCKED_MEMORY: unlimited
    es-data-2:
        image: es/elasticsearch:7.7.0
        deploy:
            mode: global
            placement:
                constraints: 
                    - node.labels.es-data-2 == true
        hostname: es-data-2
        networks:
            - rws-mp
        volumes:
            - /etc/localtime:/etc/localtime
            - es-data-2-data:/usr/share/elasticsearch/data
            - es-data-2-logs:/usr/share/elasticsearch/logs
        environment:
            ES_JAVA_OPTS: "-Xms1024m -Xmx1024m -Duser.timezone=Asia/Shanghai"
            node.name: es-data-2
            node.master: "false"
            node.data: "true"
            node.ingest: "false"
            network.host: 0.0.0.0
            cluster.name: rws-uat-es
            cluster.initial_master_nodes: es-master-1,es-master-2,es-master-3
            discovery.seed_hosts: es-data-1,es-data-3,es-master-1,es-master-2,es-master-3
            xpack.security.enabled: "false"
            bootstrap.memory_lock: "false"
            MAX_LOCKED_MEMORY: unlimited
    es-data-3:
        image: harbor.surfilter.com:8701/rws/elasticsearch:7.7.0
        deploy:
            mode: global
            placement:
                constraints: 
                    - node.labels.es-data-3 == true
        hostname: es-data-3
        networks:
            - rws-mp
        volumes:
            - /etc/localtime:/etc/localtime
            - es-data-3-data:/usr/share/elasticsearch/data
            - es-data-3-logs:/usr/share/elasticsearch/logs
        environment:
            ES_JAVA_OPTS: "-Xms1024m -Xmx1024m -Duser.timezone=Asia/Shanghai"
            node.name: es-data-3
            node.master: "false"
            node.data: "true"
            node.ingest: "false"
            network.host: 0.0.0.0
            cluster.name: rws-uat-es
            cluster.initial_master_nodes: es-master-1,es-master-2,es-master-3
            discovery.seed_hosts: es-data-1,es-data-2,es-master-1,es-master-2,es-master-3
            xpack.security.enabled: "false"
            bootstrap.memory_lock: "false"
            MAX_LOCKED_MEMORY: unlimited
    # ES集群监控
    cerebro:
        image: cerebro/cerebro:latest
        deploy:
            mode: global
            placement:
                constraints: 
                    - node.role == manager
        hostname: cerebro
        command:
            - -Dhosts.0.host=http://172.17.0.1:8200
        ports:
            - "8763:9000"
        networks:
            - rws-mp
        volumes:
            - /etc/localtime:/etc/localtime
            - cerebro:/opt/cerebro
复制代码

 

三、ES数据检索工具

  A. 浏览器安装Elasticsearch的head可视化插件

  B. Kibana组件:ES的DSL查询;

  C. Dbeaver工具:ES的SQL查询。

 

四、安装错误

  1. docker单机版安装启动报错:Error opening log file ‘logs/gc.log‘: Permission denied

    解决方式:提示文件权限问题,赋予权限chmod -R 777 /data/elasticsearch;

   2. Dbeaver连接Elasticsearch时报:current license is non-compliant for [jdbc]

    解决方式:将ES的license授权改为30天使用版,如:curl -X POST "http://127.0.0.1:9200/_license/start_trial?acknowledge=true&pretty。

  3. 原生搭建ES集群时报:ES master not discovered yet

    解决方式:elasticsearch.yml配置错误,重点检查discovery.seed_hosts、cluster.initial_master_nodes、transport.tcp.port三个参数,我的就是discovery.seed_hosts中端口配置9200引起的,应该是9300。

 

posted @   如幻行云  阅读(461)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
历史上的今天:
2020-06-04 Docker Compose编排、重要参数详解及Portainer监控
2019-06-04 SpringBoot Async异步调用/线程池
点击右上角即可分享
微信分享提示