日志——elasticsearch——1——安装和配置集群

elasticsearch 介绍:

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

Elasticsearch 的基础核心概念:

接近实时(NRT)

elasticsearch 是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是 1 秒)。

集群(cluster)

一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。集群有一个唯一性标示的名字,默认是elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。一个集群可以只有一个节点。强烈建议在配置 elasticsearch 时,配置成集群模式。

节点(node)

节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。像集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义。该名字也很重要,在集群中用于识别服务器对应的节点。
节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到 elasticsearch集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为 elasticsearch 的集群。

索引(index)

一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,如果你想,可以定义任意多的索引。
索引相对于关系型数据库的库。

类型(type)

在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。
类型相对于关系型数据库的表。

文档(document)

一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以 JSON(Javascript Object Notation)格式来表示,而 JSON 是一个到处存在的互联网数据交互格式。
在一个 index/type 里面,只要你想,你可以存储任意多的文档。注意,虽然一个文档在物理上位于一个索引中,实际上一个文档必须在一个索引内被索引和分配一个类型。
文档相对于关系型数据库的列。

分片和副本(shards & replicas)

在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个 10 亿文档需 1TB 空间可能不适合存储在单个节点的磁盘上,或者从单个节点搜索请求太慢了。为了解决这个问题,elasticsearch 提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。
分片的两个最主要原因:
1)水平分割扩展,增大存储量
2)分布式并行跨分片操作,提高性能和吞吐量
分布式分片的机制和搜索请求的文档如何汇总完全是有 elasticsearch 控制的,这些对用户而言是透明的。
网络问题等等其它问题可以在任何时候不期而至,为了健壮性,强烈建议要有一个故障切换机制,无论何种故障以防止分片或者节点不可用。 为此, elasticsearch 让我们将索引分片复制一份或多份,称之为分片副本或副本。
副本也有两个最主要原因:
1)高可用性, 以应对分片或者节点故障。出于这个原因,分片副本要在不同的节点上。
2)提供性能,增大吞吐量,搜索可以并行在所有副本上执行。
总之,每个索引可以被分成多个分片。一个索引也可以被复制 0 次(意思是没有复制)或多次。一旦复制了,每个索引就有了主分片(作为复制源的原来的分片)和复制分片(主分片的拷贝)之别。分片和副本的数量可以在索引创建的时候指定。在索引创建之后,你可以在任何时候动态地改变副本的数量,但是你事后不能改变分片的数量。
默认情况下, Elasticsearch 中的每个索引被分片 5 个主分片和 1 个副本, 这意味着,如果你的集群中至少有两个节点,你的索引将会有 5 个主分片和另外 5 个副本分片(1 个完全拷贝),这样的话每个索引总共就有 10 个分片。

Elasticsearch:开源分布式搜索引擎

特点:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等

官方网站:https://www.elastic.co
中文社区:https://elasticsearch.cn/
官方参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.6/setup-configuration-memory.html

环境准备:

node-1(内存2g)192.168.1.128
node-2(内存2g)192.168.1.129
node-3(内存2g)192.168.1.134

下载地址:https://mirrors.tuna.tsinghua.edu.cn/elasticstack/6.x/yum/6.6.0/ #推荐下载到本地后上传
elasticsearch-6.6.0.rpm
filebeat-6.6.0-x86_64.rpm
kibana-6.6.0-x86_64.rpm
logstash-6.6.0.rpm

一、安装配置elasticsearch

1、安装elasticsearch:

前提:安装jdk-1.8.0或以上版本——跳转安装jdk-1.8.0

[root@node-1 ~]# mkdir /soft
[root@node-1 ~]# cd /soft
将上边下载到本地的elasticsearch-6.6.0.rpm复制到虚拟机/soft中安装
[root@node-1 soft]# rpm -ivh elasticsearch-6.6.0.rpm

2、elasticsearch目录和文件:

/etc/elasticsearch/elasticsearch.yml	#配置文件
/etc/elasticsearch/jvm.options			#java虚拟机
/etc/init.d/elasticsearch			#服务启动脚本
/etc/sysconfig/elasticsearch			#elasticsearch服务变量
/usr/lib/sysctl.d/elasticsearch.conf	#设置elasticsearch用户使用的内存大小
/usr/lib/systemd/system/elasticsearch.service  	#添加系统服务文件
/var/log/elasticsearch/elasticsearch.log 		#日志文件路径

3、修改配置文件:

[root@node-1 ~]# vim /etc/elasticsearch/elasticsearch.yml
node.name: node-1			#群集中本机节点名
path.data: /data/elasticsearch		#数据目录
path.logs: /var/log/elasticsearch	#日志目录
bootstrap.memory_lock: true			#锁定内存,需要和/etc/elasticsearch/jvm.options关联
network.host: 192.168.1.128,127.0.0.1	#监听的ip地址
http.port: 9200		#端口号

4、创建数据目录,并修改权限

[root@node-1 ~]# mkdir -p /data/elasticsearch 
[root@node-1 ~]# chown -R elasticsearch:elasticsearch /data/elasticsearch/

5、分配锁定内存:

[root@node-1 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g		#分配最小内存	
-Xmx1g		#分配最大内存,官方推荐为物理内存的一半,但最大为32G

6、修改锁定内存后,无法重启,解决方法如下:

[root@node-1 ~]# systemctl edit elasticsearch
#添加:
[Service]
LimitMEMLOCK=infinity

(F2)(ctrl+x)保存退出——>y——>Enter
[root@node-1 ~]# systemctl daemon-reload
[root@node-1 ~]# systemctl restart elasticsearch

[root@node-1 ~]# netstat -anpt | grep 9200
tcp6       0      0 192.168.1.128:9200      :::*                    LISTEN      2980/java           
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      2980/java   

7、

查看单主机:http://192.168.1.128:9200/

[root@node-1 ~]# curl http://192.168.1.128:9200/
{
  "name" : "node-1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "bUUySE0zRLGPH0gP5L51fQ",
  "version" : {
    "number" : "6.6.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "a9861f4",
    "build_date" : "2019-01-24T11:27:09.439740Z",
    "build_snapshot" : false,
    "lucene_version" : "7.6.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

查看群集健康状态:http://192.168.1.128:9200/_cluster/health?pretty

[root@node-1 ~]# curl http://192.168.1.128:9200/_cluster/health?pretty
{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

查看整个群集状态信息:http://192.168.1.128:9200/_cluster/state?pretty

[root@node-1 ~]# curl http://192.168.1.128:9200/_cluster/state?pretty
内容过多不宜展示

8、下载es-head插件

下载es-head插件:https://github.com/mobz/elasticsearch-head
在这里插入图片描述
下载后,解压,将crx目录下es-head.crx改名为es-head.crx.zip解压es-head.crx.zip到es-head.crx目录,把目录es-head.crx,上传到谷歌浏览器更多工具——>扩展程序里
在这里插入图片描述

在这里插入图片描述

9、创建索引:vipinfo,类型:users,序号:1,数据部分:…

[root@node-1 ~]# curl -XPUT '192.168.1.128:9200/vipinfo/users/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"name": "guofucheng","age": "45","job": "mingxing"}'
{
  "_index" : "vipinfo",
  "_type" : "users",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

选项说明:
XPUT #创建
XDELETE #删除

elasticsearch群集:
状态颜色:

灰色:未连接
绿色:数据完整态
黄色:副本不完整
红色:数据分片不完整
紫色:数据分片复制过程

群集主机角色:

主节点master:负责管理调度
工作节点:负责处理数据

默认情况,所有节点都是工作节点,即主节点也处理数据

10、查看创建的索引

在这里插入图片描述
在这里插入图片描述

二、群集中添加第二台主机:192.168.1.129

1、安装es,步骤参考第一台(注意配置文件需要修改)

前提:安装jdk-1.8.0或以上版本——跳转安装jdk-1.8.0

[root@node-2 ~]# mkdir /soft
[root@node-1 soft]# scp /soft/* root@192.168.1.129:/soft/
[root@node-2 ~]# cd /soft/
[root@node-2 soft]# rpm -ivh elasticsearch-6.6.0.rpm

2、修改配置文件:

[root@node-2 soft]# vim /etc/elasticsearch/elasticsearch.yml
node.name: node-2
path.data: /data/elasticsearch                  
path.logs: /var/log/elasticsearch               
bootstrap.memory_lock: true                             
network.host: 192.168.1.129,127.0.0.1   
http.port: 9200 
discovery.zen.ping.unicast.hosts: ["192.168.1.128", "192.168.1.129"]
discovery.zen.minimum_master_nodes: 2   	#添加的值=节点数/2 + 1

3、创建数据目录,并修改权限

[root@node-2 soft]# mkdir -p /data/elasticsearch 
[root@node-2 soft]# chown -R elasticsearch:elasticsearch /data/elasticsearch/

4、分配锁定内存:

[root@node-2 soft]# vim /etc/elasticsearch/jvm.options
-Xms1g		#分配最小内存	
-Xmx1g		#分配最大内存,官方推荐为物理内存的一半,但最大为32G

5、修改锁定内存后,无法重启,解决方法如下:

[root@node-2 soft]# systemctl edit elasticsearch
#添加:
[Service]
LimitMEMLOCK=infinity

(F2)(ctrl+x)保存退出——>y——>Enter
[root@node-2 soft]# systemctl daemon-reload
[root@node-2 soft]# systemctl restart elasticsearch

[root@node-2 soft]# netstat -anpt | grep 9200
tcp6       0      0 192.168.1.129:9200      :::*                    LISTEN      2994/java           
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      2994/java

三、群集中添加第三台主机:192.168.1.134

前提:安装jdk-1.8.0或以上版本——跳转安装jdk-1.8.0

1、安装es,步骤参考第一台(注意配置文件需要修改)

[root@node-3 ~]# mkdir /soft
[root@node-1 soft]# scp /soft/* root@192.168.1.134:/soft/
[root@node-3 ~]# cd /soft/
[root@node-3 soft]# rpm -ivh elasticsearch-6.6.0.rpm

2、修改配置文件:

[root@node-3 soft]# vim /etc/elasticsearch/elasticsearch.yml
node.name: node-3
path.data: /data/elasticsearch                  
path.logs: /var/log/elasticsearch               
bootstrap.memory_lock: true                             
network.host: 192.168.1.134,127.0.0.1   
http.port: 9200 
discovery.zen.ping.unicast.hosts: ["192.168.1.128", "192.168.1.134"]
discovery.zen.minimum_master_nodes: 2   

3、创建数据目录,并修改权限

[root@node-3 soft]# mkdir -p /data/elasticsearch 
[root@node-3 soft]# chown -R elasticsearch:elasticsearch /data/elasticsearch/

4、分配锁定内存:

[root@node-3 soft]# vim /etc/elasticsearch/jvm.options
-Xms1g		#分配最小内存	
-Xmx1g		#分配最大内存,官方推荐为物理内存的一半,但最大为32G

5、修改锁定内存后,无法重启,解决方法如下:

[root@node-3 soft]# systemctl edit elasticsearch
#添加:
[Service]
LimitMEMLOCK=infinity

(F2)(ctrl+x)保存退出——>y——>Enter
[root@node-3 soft]# systemctl daemon-reload
[root@node-3 soft]# systemctl restart elasticsearch

[root@node-3 soft]# netstat -anpt | grep 9200
tcp6       0      0 192.168.1.134:9200      :::*                    LISTEN      2904/java           
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      2904/java 

在这里插入图片描述

四、常见群集管理监控命令

1、查看索引信息

[root@node-1 ~]# curl -XGET '192.168.1.128:9200/_cat/indices?pretty'
green open vipinfo zY4NnGkMQFiCutJMp8r7IQ 5 1 1 0 11.3kb 5.6kb

2、查看群集健康状态

[root@node-1 ~]# curl -XGET '192.168.1.128:9200/_cluster/health?pretty'
{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 5,
  "active_shards" : 10,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

3、统计群集节点

[root@node-1 ~]# curl -XGET '192.168.1.128:9200/_cat/nodes?human&pretty'
192.168.1.128 10 90 3 0.21 0.15 0.08 mdi * node-1
192.168.1.134 15 97 0 0.09 0.19 0.11 mdi - node-3
192.168.1.129 10 96 1 0.00 0.04 0.06 mdi - node-2

4、查看群集所有节点详细信息

[root@node-1 ~]# curl -XGET '192.168.1.128:9200/_nodes/_all/info/jvm.process?human&pretty'
{
  "_nodes" : {
    "total" : 3,
    "successful" : 3,
    "failed" : 0
  },
  "cluster_name" : "elasticsearch",
  "nodes" : {
    "tHB63eaHS9-3bSTiZn_Y_w" : {
      "name" : "node-3",
      "transport_address" : "192.168.1.134:9300",
      "host" : "192.168.1.134",
      "ip" : "192.168.1.134",
      "version" : "6.6.0",
      "build_flavor" : "default",
      "build_type" : "rpm",
      "build_hash" : "a9861f4",
      "roles" : [
        "master",
        "data",
        "ingest"
      ],
      "attributes" : {
        "ml.machine_memory" : "1912078336",
        "ml.max_open_jobs" : "20",
        "xpack.installed" : "true",
        "ml.enabled" : "true"
      }
    },
    "mAT3i-0ZQTS4WnIYeRoW-Q" : {
      "name" : "node-2",
      "transport_address" : "192.168.1.129:9300",
      "host" : "192.168.1.129",
      "ip" : "192.168.1.129",
      "version" : "6.6.0",
      "build_flavor" : "default",
      "build_type" : "rpm",
      "build_hash" : "a9861f4",
      "roles" : [
        "master",
        "data",
        "ingest"
      ],
      "attributes" : {
        "ml.machine_memory" : "1912078336",
        "ml.max_open_jobs" : "20",
        "xpack.installed" : "true",
        "ml.enabled" : "true"
      }
    },
    "RQlZO5l_TPu_FRi8G4T76Q" : {
      "name" : "node-1",
      "transport_address" : "192.168.1.128:9300",
      "host" : "192.168.1.128",
      "ip" : "192.168.1.128",
      "version" : "6.6.0",
      "build_flavor" : "default",
      "build_type" : "rpm",
      "build_hash" : "a9861f4",
      "roles" : [
        "master",
        "data",
        "ingest"
      ],
      "attributes" : {
        "ml.machine_memory" : "1912078336",
        "xpack.installed" : "true",
        "ml.max_open_jobs" : "20",
        "ml.enabled" : "true"
      }
    }
  }
}

注意:企业环境使用脚本监控群集健康状态是否为green 或 节点数不匹配 就邮件报警

5、创建索引index1时,修改分片为3和副本数为2

[root@node-1 ~]# curl -X PUT 192.168.1.128:9200/index1  -H 'Content-Type: application/json' -d '{
    "settings" : {
        "index" : {
            "number_of_shards" : 3, 
            "number_of_replicas" : 2 
        }
    }
}'

在这里插入图片描述

6、针对已有索引,可修改副本数,不可改分片数。下面语句把index1的副本数由2改为1

[root@node-1 ~]# curl -X PUT '192.168.1.128:9200/index1/_settings?pretty'  -H 'Content-Type: application/json' -d '{
  "settings": {
    "number_of_replicas": "1"
  }                          
}'

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值