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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2020-06-04 Docker Compose编排、重要参数详解及Portainer监控
2019-06-04 SpringBoot Async异步调用/线程池