• elasticsearch部署


    全文搜索引擎 Elasticsearch 入门教程

    集群

    Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。


    Cluster 集群

    一个 Elasticsearch 集群由一个或多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识。

    Node 节点

    一个 Elasticsearch 实例即一个 Node,一台机器可以有多个实例,正常使用下每个实例应该会部署在不同的机器上。Elasticsearch 的配置文件中可以通过 node.master、node.data 来设置节点类型。

    node.master:表示节点是否具有成为主节点的资格
    node.data:表示节点是否存储数据

    注意:此属性的值为true,并不意味着这个节点就是主节点。 因为真正的主节点,是由多个具有主节点资格的节点进行选举产生的。 所以,这个属性只是代表这个节点是不是具有主节点选举资格

    主节点+数据节点(默认)

    node.master: true
    node.data: true
    

    节点即有成为主节点的资格,又存储数据。这个时候如果某个节点被选举成为了真正的主节点,那么他还要存储数据,这样对于这个节点的压力就比较大了。Elasticsearch 默认每个节点都是这样的配置,在测试环境下这样做没问题。实际工作中建议不要这样设置,这样相当于主节点和数据节点的角色混合到一块了。

    数据节点

    node.master: false
    node.data: true
    

    节点没有成为主节点的资格,不参与选举,只会存储数据。在集群中需要单独设置几个这样的节点负责存储数据,后期提供存储和查询服务。主要消耗磁盘,内存。

    主节点

    node.master: true
    node.data: false
    

    不会存储数据,有成为主节点的资格,可以参与选举,有可能成为真正的主节点。普通服务器即可(CPU、内存消耗一般)。

    Index 索引

    一个集群下可以有多个索引,每个索引是一系列相同格式文档的集合(Elasticsearch 6.x 已不支持一个索引下多个Type)


    Shard 分片

    每个索引有一个或多个分片,每个分片存储不同的数据。分片可分为主分片( primary shard)和复制分片(replica shard),复制分片是主分片的拷贝。默认每个主分片有一个复制分片(默认一个索引创建后会有5个主分片,即:5主+5复制=10个分片),一个索引的复制分片的数量可以动态地调整,复制分片从不与它的主分片在同一个节点上(防止单点故障)。

    复制分片有两个作用:

    1. 提高恢复能力:当主分片挂掉时,某个复制分片可以变成主分片;
    2. 提高性能:get 和 search 请求既可以由主分片又可以由复制分片处理;

    集群健康值

    1. green:所有主要分片和复制分片都可用
    2. yellow:所有主要分片可用,但不是所有复制分片都可用
    3. red:不是所有的主要分片都可用

    当集群状态为 red,它仍然正常提供服务,它会在现有存活分片中执行请求,我们需要尽快修复故障分片,防止查询数据的丢失;

    单个节点部署

    Elastic 需要 Java 8 环境。注意要保证环境变量JAVA_HOME正确设置。

    安装完 Java,就可以跟着官方文档安装 Elastic。直接下载压缩包。

    $ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip
    $ unzip elasticsearch-5.5.1.zip
    $ cd elasticsearch-5.5.1/ 
    

    进入解压后的目录,运行下面的命令,启动 Elastic。

    $ ./bin/elasticsearch
    

    如果这时报错"max virtual memory areas vm.maxmapcount [65530] is too low",要运行下面的命令。

    $ sudo sysctl -w vm.max_map_count=262144
    

    如果一切正常,Elastic 就会在默认的9200端口运行。这时,打开另一个命令行窗口,请求该端口,会得到说明信息。

    $ curl localhost:9200
    
    {
      "name" : "atntrTf",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "tf9250XhQ6ee4h7YI11anA",
      "version" : {
        "number" : "5.5.1",
        "build_hash" : "19c13d0",
        "build_date" : "2017-07-18T20:44:24.823Z",
        "build_snapshot" : false,
        "lucene_version" : "6.6.0"
      },
      "tagline" : "You Know, for Search"
    }
    

    上面代码中,请求9200端口,Elastic 返回一个 JSON 对象,包含当前节点、集群、版本等信息。

    按下 Ctrl + C,Elastic 就会停止运行

    默认情况下,Elastic 只允许本机访问,如果需要远程访问,可以修改 Elastic 安装目录的config/elasticsearch.yml文件,去掉network.host的注释,将它的值改成0.0.0.0,然后重新启动 Elastic。

    network.host: 0.0.0.0
    

    上面代码中,设成0.0.0.0让任何人都可以访问。线上服务要设成具体的 IP

    集群搭建

    环境

    • JDK1.8或以上

    为了让es实现集群的效果,需要对es的配置进行修改,修改config下面名为elasticsearch.yml的文件

    • cluster.name标明了整个集群的名字,只有节点在相同的集群在能互相发现。

    • node.name 是当前节点名称的标识,各个节点的名称不能重复

    • transport.tcp.port 为节点间通信端口,如果部署在不同机器上则默认即可

    集群机器情况:

    主机域名 主机IP 安装组件
    hadoop1 192.168.1.1 elasticsearch
    hadoop2 192.168.1.2 elasticsearch
    hadoop3 192.168.1.3 elasticsearch

    1、用普通用户(非root)进入hadoop1机器,下载ElasticSearch 5.0.0 ,并解压到指定目录

    2、在本机中找一个存储空间比较大的磁盘,如 /data,在该目录下执行以下命令

    mkdir -p /data/es5/{data,logs}

    用于存放es的数据和日志文件

    3、配置 config/elasticsearch.yml 文件

    # ---------------------------------- Cluster -----------------------------------
    #定义es集群名称
    cluster.name: es5-cluster
    # ------------------------------------ Node ------------------------------------
    #定义该节点的名称,各个节点不能重复
    node.name: dchadoop213
    # ----------------------------------- Paths ------------------------------------
    #配置数据目录
    path.data: /data1/hadoop/es5/data
    #配置日志目录
    path.logs: /data1/hadoop/es5/logs
    # ----------------------------------- Memory -----------------------------------
    #关闭锁定内存
    bootstrap.memory_lock: false
    # ---------------------------------- Network -----------------------------------
    #指定本机IP地址,每个节点都要修改
    network.host: 192.168.1.222
    #指定http访问端口
    http.port: 9200
    # --------------------------------- Discovery ----------------------------------
    #广播地址
    discovery.zen.ping.unicast.hosts: ["hadoop1:9300", "hadoop2:9300", "hadoop3:9300"]
    discovery.zen.minimum_master_nodes: 3

    4、配置config/jvm.options文件

    #修改JVM参数
    -Xms4g
    -Xmx4g

    5、配置bin/elasticsearch文件

    #由于es5.0依赖的是jdk8,所以需要下载jdk8并指定PAHT路径
    export PATH=/home/hadoop/jdk1.8.0_101/bin:$PATH
    export JAVA_HOME=/home/hadoop/jdk1.8.0_101
    export ES_HOME=/home/hadoop/elasticsearch-5.0.0

    6、启动

    ./bin/elasticsearch -d

    查看后台日志是否启动成功(日志目录在第三步配置的/data1/hadoop/es5/logs路径下),如果报出以下异常:

    max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
    	at org.elasticsearch.bootstrap.BootstrapCheck.check(BootstrapCheck.java:132)
    	at org.elasticsearch.bootstrap.BootstrapCheck.check(BootstrapCheck.java:85)
    	at org.elasticsearch.bootstrap.BootstrapCheck.check(BootstrapCheck.java:65)
    	at org.elasticsearch.bootstrap.Bootstrap$5.validateNodeBeforeAcceptingRequests(Bootstrap.java:178)
    	at org.elasticsearch.node.Node.start(Node.java:471)
    	at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:193)
    	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:257)
    	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:101)
    	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:96)
    	at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54)
    	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:88)
    	at org.elasticsearch.cli.Command.main(Command.java:54)
    	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:75)
    	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:68)
    

    是以为操作系统的vm.max_map_count参数设置太小导致的,请使用root用户登录系统,执行以下命令:

    sysctl -w vm.max_map_count=655360

    并用以下命令查看是否修改成功

    sysctl -a | grep "vm.max_map_count"

    如果能正常输出655360,则说明修改成功,然后再次启动elasticsearch

    把配置好的安装包拷贝一份到其他两台机器上,修改 config/elasticsearch.yml下的node.name和network.host为对于的机器即可。

    7、访问ES

    打开浏览器,输入地址 http://192.168.1.1:9200 出现以下内容为正常

    {
      "name" : "hadoop1",
      "cluster_name" : "es5-cluster",
      "version" : {
        "number" : "5.0.0-alpha5",
        "build_hash" : "d327dd4",
        "build_date" : "2016-08-04T08:59:39.568Z",
        "build_snapshot" : false,
        "lucene_version" : "6.1.0"
      },
      "tagline" : "You Know, for Search"
    }
    

    8、关于插件

    在ES的以往各个版本中都支持一个比较好用的插件 mobz/elasticsearch-head

    但是ES5.0版本还不支持plugin安装,详情请查看 GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster

  • 相关阅读:
    XML指南——XML 瀏覽器(Netscape、Explorer)
    XML指南——察看 XML 文件
    ASP中Dictionary的使用
    SQL Mobile的RDA数据同步开发
    XML指南——XML 確認
    简单的js分页脚本
    浏览器语种检测,适合于多语言版本的站点
    Com/Dcom/Com+的思考
    XML指南——XML數據島
    MOSS 2007 功能概述
  • 原文地址:https://www.cnblogs.com/we9999/p/11760375.html
Copyright © 2020-2023  润新知