前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >反手几行命令就安装好了Elasticsearch集群

反手几行命令就安装好了Elasticsearch集群

作者头像
Jared.Tan
发布2020-06-19 15:30:31
1.1K0
发布2020-06-19 15:30:31
举报

三生万物

上文《 那些年我们一起学过的 Elasticsearch》 中提到了以 Elasticsearch 为核心,逐步衍生成了 ELK 技术栈,让我想到了道德经中的一句话。道德经阐述到:“道生一,一生二,而二生三,三生万物”。

同时,布瑞恩(Brain Godsey)在《数据即未来》中提出:“数据科学家专注于创建依赖于数据和结果的概率陈述系统;数据科学是指导数据项目开展和决策的一系列过程和概念”;布瑞恩提出的思想与中国的太极和道德经一表一里互补的哲学思想也有着很大的相似性。

按照这样来看,那么,道生一,一是数据;一生二,二是数据存储,将数据从无形态化为有形态;二生三,三是数据分析;三生万物,是指一切存在物都是由阴、阳、和三态构成,那么最终形成的大数据则可以被理解为太极或和的形态,它能够不断发现或发明新的算法或则模式,将人类从已经形态带入一个未知的形态。未知充满了一切可能。

那和本篇文章有什么关系呢?

数据存储

ELK系列文章将从数据存储开始,既然产生了数据,我们则需要抓取、存储、展示。让数据从无形态化为固定形态。如何抓取数据超纲了,本篇文章主要通过 Elasticsearch 解决数据存储的问题,文章中会介绍到如何在本地安装ES以及安装多实例做ES集群。因为前面说到了ES是很方便做水平扩展的,通过多实例安装将有助于你后期分布式安装ES集群。

如果你去看过ES Github项目地址的话,你应该了解到ES使用Java语言开发的。那么如果要安装ES的话一定是需要Java环境的。

此次系列文章均采用7.6.0最新版本。

所以我在纠结系列文章是以Java方式安装还是Docker运行环境安装之后,考虑到无论哪一种安装方式,工作量其实差不多,不过考虑到都已经2020云原生时代了,用Docker或许是更加友好、更便捷的方式。

第一篇就介绍两种方式安装吧,后面就基本采用Docker讲解了。

通过压缩包安装 Elasticsearch

从官方下载ES压缩包的话里面已经自带了JDK环境,如果下载很慢的话,可以使用国内华为云镜像加速下载:https://mirrors.huaweicloud.com/elasticsearch/7.6.0/

下载ES

下载并解压之后,来大致看看文件目录结构:

LICENSE.txt # 软件包版权信息
NOTICE.txt
README.asciidoc
bin # 脚本文件
config # 配置文件,包含了主要的 elasticsearch.yml和 jvm.options 文件
jdk   # es 运行的 java 环境
lib # java 运行所使用的类库
logs # es 运行期间默认的日志文件目录
modules # 包含了ES所有的模块,
plugins # ES 提供了插件的方式去安装和扩展。你也可以自己去实现自己的插件然后丢到这里面。

关于配置文件,可以暂时不管。等到后面需要进行改动的时候再做介绍。

  • 首先,让我们通过 bin 目录下的脚本在本地启动一个单实例:
./bin/elasticsearch

······
onitoring-kibana-7-*]
[2020-03-03T16:35:41,530][INFO ][o.e.x.i.a.TransportPutLifecycleAction] [tanjiandeMacBook-Pro-2.local] adding index lifecycle policy [watch-history-ilm-policy]
[2020-03-03T16:35:41,561][INFO ][o.e.x.i.a.TransportPutLifecycleAction] [tanjiandeMacBook-Pro-2.local] adding index lifecycle policy [ilm-history-ilm-policy]
[2020-03-03T16:35:41,700][INFO ][o.e.x.i.a.TransportPutLifecycleAction] [tanjiandeMacBook-Pro-2.local] adding index lifecycle policy [slm-history-ilm-policy]
[2020-03-03T16:35:41,858][INFO ][o.e.l.LicenseService     ] [tanjiandeMacBook-Pro-2.local] license [cc5e519d-547e-4134-bd26-2e2c93adb2cf] mode [basic] - valid
[2020-03-03T16:35:41,859][INFO ][o.e.x.s.s.SecurityStatusChangeListener] [tanjiandeMacBook-Pro-2.local] Active license is now [BASIC]; Security is disabled

随后,我们通过浏览器访问:http://localhost:9200 就可以看到,一个ES单实例的环境就已经在我们本地启动好啦:

es url

输入http://localhost:9200/_cat 可以看到一些查询ES运行状况的API:

······
/_cat/master # 显示当前ES集群的master节点信息
/_cat/nodes # 显示当前ES集群的所有节点信息
/_cat/indices # 显示当前ES集群中存在的索引Index
/_cat/health # 显示当前ES集群的健康信息
/_cat/plugins # 显示当前ES集群中已经安装的插件
·······
  • ES 插件安装

上面讲到了ES可以通过插件的形式安装自己需要的功能,这里就演示一下安装最通用的一个国际化分词插件:analysis-icu退出/停止刚刚正在运行的ES实例,执行如下命令即可:

./bin/elasticsearch-plugin install analysis-icu
·······
-> Installing analysis-icu
-> Downloading analysis-icu from elastic
[============================================>] 100%
-> Installed analysis-icu

我们来查看一下是否安装成功了:

./bin/elasticsearch-plugin list
·······
analysis-icu

随后,我们需要再次启动即可。

  • 接下来,让我们安装一个三个实例的ES集群吧:

在ES中,只要我们每次启动指定相同的集群名字,指定不同节点名称,指定不同的存放数据地址,就可以运行多实例。其实,这里为我们隐藏了一些逻辑:执行多个实例,而且在没更改端口的情况下一般应用可能会出现端口冲突的报错。而如下命令在执行之后会自动检测端口并更改端口避免冲突。

./bin/elasticsearch -E node.name=node1 -E cluster.name=local-es-cluster -E path.data=node1_data -d
./bin/elasticsearch -E node.name=node2 -E cluster.name=local-es-cluster -E path.data=node2_data -d
./bin/elasticsearch -E node.name=node3 -E cluster.name=local-es-cluster -E path.data=node3_data -d

上面三个命令执行完过后,会在后台运行三个ES实例,此时,我们再次通过浏览器访问上面提到的查看ES集群节点的API:http://localhost:9200/_cat/nodes

127.0.0.1 18 100 24 7.09   dilm * node1 # node1 带了一个 * ,说明node1是master节点
127.0.0.1 13 100 24 7.09   dilm - node2
127.0.0.1 11 100 23 7.09   dilm - node3

如何停止刚刚的三个实例?

# 首先列出那些ES进程
$ ps | grep elasticsearch
······
31739 ttys006    0:56.06 /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home//bin/java -Des.networkaddress.cache.ttl=60
31758 ttys006    0:56.77 /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home//bin/java -Des.networkadd
·······

# 通过kill 命令杀掉相关进程即可
$ kill 31758
$ kill 31739

通过Docker安装 Elasticsearch

所以,我们来先安装Docker环境,这一步很简单。只需要去Docker官网下载相应平台的安装包安装即可。另外,如果你对Kubernetes感兴趣的话,可以试试Docker Desktop集成的最小化Kubernetes环境。

Doceker 安装好之后,我们检查一下:

$ docker --version
Docker version 19.03.5, build 633a0ea

如上说明Docker已经安装好了,通过Docekr 安装其实很简单,只需要一行命令即可:

  • 安装单实例
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.0

该命令会从镜像仓库自动拉取ES镜像并运行一个ES容器,如果发现拉取镜像很慢的话可以配置一下使用国内DaoCloud的镜像加速器:https://www.daocloud.io/mirror。

  • 安装多实例:通过 Docker-Compose 编排

创建docker-compose.yml 文件:

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

随后,在执行docker-compose.yml同级目录执行 docker-compose up -d 即可启动三实例的ES集群运行在后台,通过docker-compose stop即可停止运行。

总结

这一篇实际操作比较多,主要介绍了通过压缩包和Docker安装单实例和多实例的ES集群。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一万小时极客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据存储
    • 通过压缩包安装 Elasticsearch
      • 通过Docker安装 Elasticsearch
      • 总结
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档