美文网首页elasticsearch
elasticsearch7安装并搭建集群,kibana,hea

elasticsearch7安装并搭建集群,kibana,hea

作者: virtual灬zzZ | 来源:发表于2022-02-19 19:06 被阅读0次

    基于系统centos7

    -------------------------------------------------------------

    elasticsearch

    standalone

    1. 下载elasticsearch7

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.0-linux-x86_64.tar.gz

    1. 解压
      mv elasticsearch-7.17.0-linux-x86_64.tar.gz /usr/local
      cd /usr/local
      tar -xzvf elasticsearch-7.17.0-linux-x86_64.tar.gz
      mv elasticsearch-7.17.0 es7

    2. 新建用户,es默认不能使用root启动
      useradd esuser
      passwd esuser
      输入密码

    3. 将es7目录以及子目录,全部赋予esuser
      chown -R esuser:esuser es7/

    4. 修改系统配置
      es需要增大系统默认的文件打开数和用户可支配内存数
      vi /etc/security/limits.conf

    文件末尾追加  (esuser 为启动elasticsearch的用户名)
    esuser soft nofile 65536
    esuser hard nofile 65536
    

    vi /etc/sysctl.conf

    # 优化文件描述符
    vm.max_map_count = 655360
    # 优化脏内存页,es写入削峰
    vm.dirty_ratio=10
    vm.dirty_background_ratio=5
    vm.dirty_writeback_centisecs=200
    # 优化系统回收inode cache权重
    vm.vfs_cache_pressure=200
    vm.dirty_expire_centisecs=6000
    

    保存退出,使用sysctl -p刷新使即时生效

    1. 切换回esuser,调整一些es参数
      su esuser

    /usr/local/es7/config/jvm.options 这里修改jvm占用内存 ,默认是4g,有需要可以修改

    -Xms4g
    -Xmx4g
    

    这两个需要一致

    /usr/local/es7/config/elasticsearch.yml,修改节点,集群名,以及数据保存目录等信息

    cluster.name: llc-es-cluster # 集群名 随意指定 同个集群的不同节点需要使用相同集群名 不同节点名
    
    node.name: es107 # 节点名
    
    #path.data: /data/tip/es/data #es数据存放路径 
    #path.logs: /data/tip/es/logs #es日志存放路径
    
    network.host: 0.0.0.0 #es使用的IP地址 默认本机,使用0.0.0.0 就能让外面的机器访问
    
    #http.port: 9200 #es使用的端口号 默认9200
    
    cluster.initial_master_nodes: ["es107"] #值为上面配置的node.name  配置文件中的discover项里的几个配置需要至少配置一个 如果多个节点 则以数组形式将各个节点名写入即可
    

    修改好后保存退出。

    1. 启动es
      /usr/local/es7/bin/elasticsearch -d ,后面-d 是静默启动

    2. 验证
      curl http://192.168.1.107:9200
      得到结果如下,表示成功:

    {
      "name" : "es107",
      "cluster_name" : "llc-es-cluster",
      "cluster_uuid" : "NWRApcdkSbC1I70s1MJhiQ",
      "version" : {
        "number" : "7.17.0",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "bee86328705acaa9a6daede7140defd4d9ec56bd",
        "build_date" : "2022-01-28T08:36:04.875279988Z",
        "build_snapshot" : false,
        "lucene_version" : "8.11.1",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }
    

    参考:
    Elasticsearch 7x 配置文件详解
    es7搭建过程遇到常见的错误及解决方案

    cluster

    需要注意的是:如果各个节点的data目录下的nodes本来就不一样,需要先清空这个目录,因为每个节点索引分片的分配在每新增一个节点都要重新进行一次分配。

    参考:elastic节点data目录一致

    共有3个节点,192.168.1.104、192.168.1.105、192.168.1.107
    修改配置文件
    vi /usr/local/es7/config/elasticsearch.yml

    #所有节点都必须一致
    cluster.name: test-es-cluster 
    #节点各不相同
    node.name: es104
    # 发现es集群节点
    discovery.seed_hosts: ["192.168.1.104:9300", "192.168.1.105:9300", "192.168.1.107:9300"]
    # 初始化竞选主master(3台有资格,最终master节点通过算法决定的)
    cluster.initial_master_nodes: ["es104", "es105", "es107"]
    #是否开启跨域访问
    http.cors.enabled: true
    #开启跨域访问后的地址限制,*表示无限制
    http.cors.allow-origin: "*"
    

    开启9300集群内部通信端口,加完刷新下,集群默认通讯端口就是9300

    firewall-cmd --add-port=9300/tcp --permanent
    
    firewall-cmd --reload
    

    如果想用别的端口,配置文件加上:

    #transport做集群之间指令通信的
    transport.tcp.port: 9300
    

    各个节点按上面配置好之后,各自启动es,启动成功后,输入连接查看,以下结果为成功,带*为master。

    [root@localhost ~]# curl http://192.168.1.105:9200/_cat/nodes?v
    ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
    192.168.1.107           14          96   8    0.31    0.58     0.82 cdfhilmrstw -      es107
    192.168.1.105           33          96  10    0.43    0.74     1.08 cdfhilmrstw -      es105
    192.168.1.104           11          96   8    0.28    0.55     0.86 cdfhilmrstw *      es104
    

    以下命令也可以,number_of_nodes为3

    [root@localhost ~]# curl http://192.168.1.104:9200/_cluster/health?pretty=true
    {
      "cluster_name" : "llc-es-cluster",
      "status" : "green",
      "timed_out" : false,
      "number_of_nodes" : 3,
      "number_of_data_nodes" : 3,
      "active_primary_shards" : 3,
      "active_shards" : 6,
      "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
    }
    
    

    安全配置(密码身份验证)

    默认是不带密码的,这样不太安全,所以得设置一下。

    集群身份认证需要跟集群内部安全通信一起配置不然会报错

    首先cd /usr/local/es7

    1. 集群身份认证,3个节点都要
      在elasticsearch.yml配置文件中加入
    xpack.security.enabled: true
    
    1. 集群内部安全通信,操作其中1个节点
    • 生成证书
      为Elasticsearch集群创建一个证书颁发机构。
    bin/elasticsearch-certutil ca
    

    之后直接按enter回车即可,
    Please enter the desired output file [elastic-stack-ca.p12]: #这里直接回车即可

    Enter password for elastic-stack-ca.p12 : #这里直接回车即可,不要设置密码

    之后会在/usr/local/es7下看到新生成的文件 elastic-stack-ca.p12

    • 生成私钥
    bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 
    

    下面三项直接回车即可:

    Enter password for CA (elastic-stack-ca.p12) : 
    Please enter the desired output file [elastic-certificates.p12]:
    Enter password for elastic-certificates.p12 : #这里直接回车即可,不要设置密码,否则后面ES会启动不了
    Certificates written to /usr/local/es7/elastic-certificates.p12
    

    设置完毕后,会在/usr/local/es7 下看到新生成的文件:elastic-certificates.p12

    • 创建文件夹certs放置私钥
    mkdir config/certs
    
    cp elastic-certificates.p12 config/certs
    
    • 拷贝给其他的节点
    scp -r config/certs/ root@192.168.1.105:/usr/local/es7/config/
    scp -r config/certs/ root@192.168.1.107:/usr/local/es7/config/
    
    • elasticsearch.yml配置证书(3个节点都要)
    http.cors.allow-headers: Authorization
    xpack.security.enabled: true
    #证书配置
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
    
    • 再次确保es7文件夹以及其下的子文件夹内容,都归于特定用户esuser所有
    chown -R esuser:esuser /usr/local/es7
    
    • 启动es
    /usr/local/es7/bin/elasticsearch  (初次不加-d 静默启动,便于观察日志)
    

    可以看到,es104节点中,有105、107这样的其他节点显示出来


    1. 设置密码 (在某1个节点中执行就好)
    bin/elasticsearch-setup-passwords interactive
    
    Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
     
    You will be prompted to enter passwords as the process progresses.
     
    Please confirm that you would like to continue [y/N]y
     
    Enter password for [elastic]:
     
    Reenter password for [elastic]:
     
    Enter password for [apm_system]:
     
    Reenter password for [apm_system]:
     
    Enter password for [kibana]:
     
    Reenter password for [kibana]:
     
    Enter password for [logstash_system]:
     
    Reenter password for [logstash_system]:
     
    Enter password for [beats_system]:
     
    Reenter password for [beats_system]:
     
    Enter password for [remote_monitoring_user]:
     
    Reenter password for [remote_monitoring_user]:
     
    Changed password for user [apm_system]
     
    Changed password for user [kibana]
     
    Changed password for user [logstash_system]
     
    Changed password for user [beats_system]
     
    Changed password for user [remote_monitoring_user]
     
    Changed password for user [elastic]
    

    按个人需求输入密码即可。

    ES中内置的用户:

    elastic 账号:拥有 superuser 角色,是内置的超级用户。

    kibana 账号:拥有 kibana_system 角色,用户 kibana 用来连接 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交请求以访问集群监视 API 和 .kibana 索引。不能访问 index。

    logstash_system 账号:拥有 logstash_system 角色。用户 Logstash 在 Elasticsearch 中存储监控信息时使用。

    beats_system账号:拥有 beats_system 角色。用户 Beats 在 Elasticsearch 中存储监控信息时使用。

    elastic是超级用户,它可以做任何事情

    1. 验证
      可见,没有密码是401,身份验证失败的。
    [root@localhost es7]# curl -u elastic:123456  http://192.168.1.104:9200/_cluster/health?pretty=true
    {
      "cluster_name" : "llc-es-cluster",
      "status" : "green",
      "timed_out" : false,
      "number_of_nodes" : 3,
      "number_of_data_nodes" : 3,
      "active_primary_shards" : 4,
      "active_shards" : 8,
      "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
    }
    [root@localhost es7]# curl http://192.168.1.104:9200/_cluster/health?pretty=true
    {
      "error" : {
        "root_cause" : [
          {
            "type" : "security_exception",
            "reason" : "missing authentication credentials for REST request [/_cluster/health?pretty=true]",
            "header" : {
              "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
            }
          }
        ],
        "type" : "security_exception",
        "reason" : "missing authentication credentials for REST request [/_cluster/health?pretty=true]",
        "header" : {
          "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
        }
      },
      "status" : 401
    }
    [root@localhost es7]# curl -u elastic:123456  http://192.168.1.104:9200/_cat/nodes?v
    ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
    192.168.1.104           17          96   5    0.96    0.62     0.50 cdfhilmrstw -      es104
    192.168.1.107           16          96   8    0.43    0.53     0.50 cdfhilmrstw *      es107
    192.168.1.105           44          96   9    0.69    0.63     0.59 cdfhilmrstw -      es105
    

    参考:
    Elasticsearch 7.10 + Kibana 集群搭建
    Elasticsearch安全认证

    header插件

    在谷歌应用商店搜索“elasticsearch-head”插件,然后将其安装,自动添加至谷歌浏览器

    点击其使用即可,界面如下:


    ik分词器

    1、下载

    去到https://github.com/medcl/elasticsearch-analysis-ik/releases,下载相应的版本zip文件,再上传到es目录

    2、解压
    如果没有安装unzip、zip,执行以下命令安装
    yum install -y unzip zip

    创建一个ik目录
    cd /usr/local/es7

    mkdir plugins/ik

    解压到ik目录
    unzip elasticsearch-analysis-ik-7.17.0.zip -d plugins/ik

    待启动后,日志能看到已经load了进去


    测试使用:

    首要提醒ik有2种分词器:
    ik_max_word 是细粒度分词,会穷尽一个语句中所有分词可能
    ik_smart 是粗粒度分词,优先匹配最长词,不会有重复的数据

    打开head插件,去到复合查询

    • ik_smart


    • ik_max_word


    我们也可以自定义编辑词库。
    步骤同样非常简单:
    (1) 进入 elasticsearch/plugins/ik/config 目录
    (2) 新建一个custom文件夹,再里面新建一个 ext.dic 文件,编辑内容:
    流浪地球
    (3) 修改IKAnalyzer.cfg.xml (在 ik/config 目录下)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
        <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 -->
        <entry key="ext_dict">ext.dic</entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords"></entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!-- <entry key="remote_ext_dict">words_location</entry> -->
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
    </properties>
    

    修改完配置重新启动 elasticsearch,再次测试!

    kibana

    操作一个节点104
    1、下载

    cd /usr/local
    wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.0-linux-x86_64.tar.gz
    

    2、解压、重命名

    tar -xzvf kibana-7.17.0-linux-x86_64.tar.gz
    
    mv kibana-7.17.0 kibana7
    

    3、修改配置
    vi /usr/local/kibana7/config/kibana.yml

    elasticsearch.username: "kibana"
    elasticsearch.password: "123456"
    #中文显示
    i18n.locale: "zh-CN"
    

    4、新建kibana用户、将kibana目录全部赋予给新用户
    同样kibana也是不能使用root启动,还是创建用户给它

    useradd kibanauser
    passwd kibanauser
    更新密码
    
    chown -R kibanauser:kibanauser /usr/local/kibana7/
    

    5、启动kibana

    nobup /usr/local/kibana7/bin/kibana &
    

    6、访问页面
    http://192.168.1.104:5601 ,输入用户名密码即可,可以用elasticsearch内置的多个用户,不一定是kibana配置文件的那个用户

    相关文章

      网友评论

        本文标题:elasticsearch7安装并搭建集群,kibana,hea

        本文链接:https://www.haomeiwen.com/subject/hxcelrtx.html