持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
开启 Elasticsearch 系列第一篇。在进入 Elasticsearch 前,首先需要先搭建 es 服务。就像《论语》所说,工欲善其事,必先利其器。本篇主要介绍 Elasticsearch搭建,使用 docker 搭建 Elasticsearch,kibana 服务的搭建。
ElasticSearch 安装
1、下载
Elasticsearch 一般会选择从官网下载,但由于官网在国外,国内访问速度巨慢。所以,推荐使用从【华为云】进行软件的下载。本次安装选择 7.13.4 版本。
wget https://mirrors.huaweicloud.com/elasticsearch/7.13.4/elasticsearch-7.13.4-linux-x86_64.tar.gz
2、 解压
tar -zxvf elasticsearch-7.13.4-linux-x86_64.tar.gz
3、创建 es 用户
-
es不能以root启动,需要创建一个非 root 的用户
1、 添加 es 用户 useradd es 2、更改 es 用户的密码 passwd es 3、为 es 用户赋权 操作 es 目录的权限 chown -R es /opt/elasticsearch-7.13.4
4、 启动 es
到这单机部署已经完成,启动 es 服务。
#切换用户
su es
#启动es
./elasticsearch-7.13.4/bin/elasticsearch -d
启动可能存在的错误
1.elasticsearch
用户拥有的内存权限太小,至少需要262144
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
-
解决办法
vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 sudo vi /etc/sysctl.conf vm.max_map_count=262144 sysctl -p
- 开启 9200 和 9300 端口
[root@localhost es]# iptables -A INPUT -ptcp --dport 9200 -j ACCEPT
[root@localhost es]# iptables -A INPUT -ptcp --dport 9300 -j ACCEPT
nc -lp 9200 &
netstat -an | grep 9200
-
配置初始化节点
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts,discovery.seed_providers, cluster.initial_master_nodes] must be configured
-
解决办法
设置 discovery.seed_hosts
sudo vi config/elasticsearch.yml discovery.seed_hosts: ["127.0.0.1"] cluster.initial_master_nodes: ["node-1"]
以上就是单机部署的过程,部署完成之后,就可以快乐的使用了。
kibana 的安装
kibana 是 ES 的可视化工具,可以使用 kibana 对 es 中的数据进行操作,编写 DSL 语句,配置可视化数据分析等各种各样的操作。相当于 mysql 中的 navicat 工具。
1、下载,解压
华为云下载 kibana 安装包
wget https://mirrors.huaweicloud.com/kibana/7.13.4/kibana-7.13.4-linux-x86_64.tar.gz
tar -zxvf kibana-7.13.4-linux-x86_64.tar.gz
2、修改kibana.yml配置
- 设定kibana端口
- 设定所在主机ip
- 指定Elasticsearch连接地址
server.port: 5601
server.host: "172.17.0.17"
elasticsearch.hosts: ["http://172.17.0.17:9200"]
- 启动kibana
注意:不需要修改kibana的用户或者用户组权限。
nohup ./bin/kibana --allow-root & > /dev/null 2>&1
docker 部署 ES 集群
使用 docker 部署 ES 集群,在生产环境中,经常会使用容器化部署,以下内容通过 docker 部署 ES 集群(两个节点,es7_01,es7_02),一个kibana 服务,一个 cerebro(一个提供 es 的节点情况等内容展示的可视化平台 前提:有装 docker 环境
- docker-compose.yml 内容如下:
version: '2.2'
services:
cerebro:
image: lmenezes/cerebro:0.8.4
container_name: cerebro
ports:
- "9000:9000"
command:
- -Dhosts.0.host=http://elasticsearch:9200
networks:
- es7net
kibana:
image: kibana:7.13.1
container_name: kibana7
environment:
- I18N_LOCALE=zh-CN
- XPACK_GRAPH_ENABLED=true
- TIMELION_ENABLED=true
- XPACK_MONITORING_COLLECTION_ENABLED="true"
ports:
- "5601:5601"
networks:
- es7net
elasticsearch:
image: elasticsearch:7.13.1
container_name: es7_01
environment:
- cluster.name=study
- node.name=es7_01
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.seed_hosts=es7_01
- cluster.initial_master_nodes=es7_01,es7_02
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es7data1:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- es7net
elasticsearch2:
image: elasticsearch:7.13.1
container_name: es7_02
environment:
- cluster.name=study
- node.name=es7_02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.seed_hosts=es7_01
- cluster.initial_master_nodes=es7_01,es7_02
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es7data2:/usr/share/elasticsearch/data
networks:
- es7net
volumes:
es7data1:
driver: local
es7data2:
driver: local
networks:
es7net:
driver: bridge
-
启动
进入脚本所在文件夹,执行 docker 命令 启动
docker-compose up
- es 服务
- kibana
总结
本篇主要阐述了 单机部署 Elasticsearch 服务 ,kibana 服务和使用 docker 部署 Elasticsearch ,kibana 的主要内容,部署完成后,后系我们就可以开始愉快的 使用 Elasticsearch。