zoukankan      html  css  js  c++  java
  • Elasticsearch-6.2.1集群搭建过程

    目录

    1.环境准备

              安装JDK

              申请linux普通用户

              修改资源使用配置文件

              优化linux内核参数

    2.安装和部署elasticsearch-6.2.1

              主机角色分配

              下载和解压tar包

              elasticsearch.yml基本配置

              elasticsearch-6.2.1性能优化

    3.安装插件

              安装head插件

              安装ik中文分词器

              安装pinyin插件

              安装sql插件和界面

              安装x-pack插件

    4.elasticsearch-6.2.1新特性

    5.x-pack用户管理和权限控制

    前言

    本文档介绍elasticsearch-6.2.1搭建过程,集成的插件有head,ik,pinyin,sql,x-pack。

    加密了集群节点的通信,加密了http客户端通信,部署过程中,会详解配置文件的含义

    和可能出现的问题。

    1.环境准备

    安装JDK

      elasticsearch-6.2.1需要安装java 8,推荐使用JDK 1.8.0_131。

    申请linux普通用户

      Useradd es

    修改资源使用配置文件

      切换到root用户下

      vi /etc/security/limits.conf

      *  soft nofile 65536

      *  soft nproc 2048

      *  hard nproc 4096

      *  hard nofile 131072

      注:修改limits.conf文件中 *的意思是所有,soft的意思是警告,hard的意思是严格,nofile的意思是文件数,nproc是进程数。

    优化linux内核参数

      vi /etc/sysctl.conf

      vm.max_map_count=655360

      注:修改sysctl.conf文件中vm.max_map_count的意思限制一个进程可以拥有的虚拟内存区域。

      并执行命令

      sysctl -p

    2.安装和部署elasticsearch-6.2.1

     主机角色分配

    IP
    HostName
    node部署
    192.168.206.70 es node70-A1,node70-A2,node70-B1,node70-B2
    192.168.206.71 es node71-A1,node71-A2,node71-B1,node71-B2
    192.168.206.72 es node72-A1,node72-A2,node72-B1,node72-B2

    下载和解压tar包

      wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.1.tar.gz

      tar -zxvf elasticsearch-6.2.1.tar.gz

    elasticsearch.yml基本配置

      #集群名称

      cluster.name: es

      #节点名称

      node.name: nodeA1

      node.attr.rack: r1

      #节点是否是master

      node.master: true

      #节点是否是data,存数据

      node.data: true

      #data路径

      path.data: /u01/nodeA1/data

      #logs路径

      path.logs: /u01/nodeA1/logs

      #是否锁定物理内存

      bootstrap.memory_lock: true

      #IP地址

      network.host: 192.168.100.190

      #http端口

      http.port: 9200

      #tcp端口

      transport.tcp.port: 9300

      #发现其他机器的es服务

      #通过配置这个参数来防止集群脑裂现象 (集群总节点数量/2)+1

      discovery.zen.minimum_master_nodes: 2

      #一个集群中的几个节点启动后,才允许进行数据恢复处理

      gateway.recover_after_nodes: 3

      #除索引库的时候必须显式指定

      action.destructive_requires_name: true

      #一台服务器上可以启动几个es服务

      node.max_local_storage_nodes: 2

      #是否启用对同一分片在同一个主机上出现多个分配实例的检测

      cluster.routing.allocation.same_shard.host: true

    elasticsearch-6.2.1性能优化

      vi elasticsearch.yml

      #是否启用对同一分片在同一个主机上出现多个分配实例的检测

      cluster.routing.allocation.same_shard.host: true

      #队列大小

      thread_pool.bulk.queue_size: 10000

      thread_pool.index.queue_size: 5000

      #支持script语法

      script.inline: on

      #设置远程白名单列表

      reindex.remote.whitelist: 192.168.206.237:9400,192.168.206.237:9600

      vi jvm.options

      #配置内存大小

      -Xms20g

      -Xmx20g

      #更换gc方式

      #原来的:

      ## GC configuration

      -XX:+UseConcMarkSweepGC

      -XX:CMSInitiatingOccupancyFraction=75

      -XX:+UseCMSInitiatingOccupancyOnly

      #更换成:

      -XX:+UseG1GC

      -XX:MaxGCPauseMillis=200

      vi log4j2.properties

      #原来的:

      rootLogger.level = info

      #更改成:

      rootLogger.level = debug

    3.安装插件

    安装head插件

      下载head插件  wget https://github.com/mobz/elasticsearch-head/archive/master.zip

      修改服务器监听地址Gruntfile.js

      

      修改连接地址_site/app.js

      

      运行head

      cd elasticsearch-head/

      grunt server

      没有安装grunt,先安装grunt

      下载node  wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz

      解压

      tar -zxvf node-v4.4.7-linux-x64.tar.gz

      配置环境变量

      vi /etc/profile

      PATH=$JAVA_HOME/bin:$PATH:/home/es/node-v8.9.4-linux-x64/bin:$PATH:/home/es/node-v8.9.4-linux-x64/lib/node_modules

      刷新:source /etc/profile

      安装grunt

      cd elasticsearch-head

      npm install  安装下载的包

      grunt -version  查看grunt版本

    安装ik,pinyin,sql插件

      下载zip包

      

      解压后,把解压的文件copy到plugins下的ik,pinyin,sql文件夹下

    安装sql插件界面

      

      解压后,cd site-server/ 执行npm install express

      执行完成后,node node-server.js & 启动

      可以在site-server/site_configuration.json配置文件中修改启动服务的端口。

    安装x-pack插件

      下载x-pack包

      

      执行命令bin/elasticsearch-plugin install file:///x-pack包的路径

      每一台都需要执行

      破解x-pack(更换license.json)

      x-pack安装完成后,在elasticsearch-6.2.1-A1/plugins/x-pack/x-pack-core的目录下有x-pack-core-6.2.1.jar,下载到本地,使用使用Luyten来进行反编译,找到org.elasticsearch/license/LicenseVerifier.class

      

      设置为true的目的是更换license.json

      去官网免费申请license,会发邮件让你进行下载

      把下载的license.json放到一个目录下

      

      修改里面的type和expiry_date_in_millis属性。

      "type":"platinum"    白金版

      "expiry_date_in_millis":2524579200999   截至日期

      去license.json所在的目录下执行  curl -XPUT -u elastic:changeme 'http://192.168.206.70:9200/_xpack/license' -d

      注:es6之前的默认账号密码是elastic:changeme,es6之后不好使,执行bin/x-pack/setup-passwords auto 重新自动生成密码,但只能执行一回,一定要记住自动生成的密码。

      在elasticsearch中加密通信

      X-Pack安全性使您能够加密Elasticsearch群集内外的流量。连接使用传输层安全性(TLS / SSL)进行保护。

      打开x-pack的安全机制。

      开启安全机制以后,必须添加ssl加密。

      官网地址  https://www.elastic.co/guide/en/elasticsearch/reference/6.2/configuring-tls.html#node-certificates

      vi /etc/elasticsearch.yml

      xpack.security.transport.ssl.enabled: true

      xpack.security.transport.ssl.verification_mode: full

      xpack.security.transport.ssl.keystore.path:/home/es/elasticsearch-6.2.1-A1/config/certs/elastic-certificates.p12

      xpack.security.transport.ssl.truststore.path:/home/es/elasticsearch-6.2.1-A1/config/certs/elastic-certificates.p12

      生成一个私钥和X.509证书。

      bin/x-pack/certutil ca

      注:您可以将群集配置为信任拥有由此CA签名的证书的所有节点。该命令输出一个文件,默认名称为elastic-stack-ca.p12

      此文件是一个PKCS#12密钥库,其中包含您的CA的公用证书和用于签署每个节点的证书的私钥。该certutil命令还会提示您

      输入密码以保护文件和密钥。如果您计划在将来为集群添加更多节点,请保留该文件的副本并记住其密码。

      bin/x-pack/certutil cert –ca elastic-stack-ca.p12

      注:输出是包含节点证书,节点密钥和CA证书的单个PKCS#12密钥库。系统还会提示您输入密码。您可以输入您的证书和密

      钥的密码,也可以按Enter键将密码留空。默认情况下,certutil生成没有主机名信息的证书(即,它们没有任何主题备用名称

      字段)。这意味着您可以为集群中的每个节点使用证书,但必须关闭主机名验证,如下面的配置中所示。如果你想用你的

      集群中的主机名的验证,运行 certutil cert命令一次,每个节点和提供的--name, --dns--ip选项。

      注:如果您在命令中使用了--dnsor --ip选项,certutil cert并且想要启用严格的主机名检查,请将验证模式设置为 full

      如果使用密码保护节点的证书,请将密码添加到你的elasticsearch密钥库

      bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password

      bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

    4.elasticsearch-6.2.1新特性

      1). 宕机升级,使之能够从 5 的最后一个版本滚动升级到 6 的最后一个版本,不需要集群的完整重启。无宕机在线升级,无缝滚动升级。

      2). 多个 Elasticsearch 群集搜索和以前一样,Elasticsearch 6.0 能够读取在 5.x 中创建的 Indices ,但不能读取在 2.x 中创建的 Indices 。

      不同的是,现在不必重新索引所有的旧 Indices ,你可以选择将其保留在 5.x 群集中,并使用跨群集搜索同时在 6.x 和 5.x 群集上进行搜索。

      3). Kibana X-Pack 插件提供了一个简单的用户界面,可帮助重新索引旧 Indices ,以及将 Kibana、Security 和 Watcher 索引升级到 6.0 。 

      群集检查助手在现有群集上运行一系列检查,以帮助在升级之前更正任何问题。 你还应该查阅弃用日志,以确保您没有使用 6.0 版中已删除的功能。

      4). 6.0 版本中最大的一个新特性就是序列 ID,它允许基于操作的分片恢复。 以前,如果由于网络问题或节点重启而从集群断开连接的节点,

      则节点上的每个分区都必须通过将分段文件与主分片进行比较并复制任何不同的分段来重新同步。 这可能是一个漫长而昂贵的过程,甚至

      使节点的滚动重新启动非常缓慢。使用序列 ID,每个分片将只能重放该分片中缺少的操作,使恢复过程更加高效。

      5). 通过索引排序,只要收集到足够的命中,搜索就可以终止。它对通常用作过滤器的低基数字段(例如 age, gender, is_published)进行

      排序时可以更高效的搜索,因为所有潜在的匹配文档都被分组在一起。

      6). 以前,每个列中的每个字段都预留了一个存储空间。如果只有少数文档出现很多字段,则可能会导致磁盘空间的巨大浪费。现在,你付出

      你使用的东西。密集字段将使用与以前相同的空间量,但稀疏字段将显着减小。这不仅可以减少磁盘空间使用量,还可以减少合并时间并提高

      查询吞吐量,因为可以更好地利用文件系统缓存。

      7). 在 6.0 里面,开始不支持一个 index 里面存在多个 type 了,所有的新的 index 都将只有一个虚拟的固定的 type: doc 来代替,基于 type

      的 parent-child 关系将通过单独的 join 字段来实现,type 会在 7.0 彻底移除。

      8). curl命令必须加参数  -H "Content-Type: application/json"

    5.x-pack用户管理和权限控制

      有kibana和API两种方式进行用户管理和权限控制,权限管理可以通过kibana的Management界面进行,用户API使您能够从本机域创建,读取

      更新和删除用户。

      注:现在有一个问题   在es6集群上集成x-pack,安装x-pack以后,打开安全模式,就必须配置ssl,生成证书以后,用ca验证证书不被信任。

  • 相关阅读:
    【javascript基础】cc_on的详解
    【css】怪异模式下的盒模型
    【javascript基础】javascript对象的expando属性
    【javascript基础】之深度克隆(深度拷贝)一个对象
    【javascript基础】toString、valueOf、转换 【译】
    【c++】C++ system函数用法
    【javascript基础】toString valueOf toLocaleString的具体区别
    【javascript基础】Nicholas C. Zakas如何面试前端工程师
    【浏览器兼容性】script的type为text/tpl,写入html IE6,7,8下报错
    从写组件说Xml——背景篇(零)
  • 原文地址:https://www.cnblogs.com/lishengnan/p/8604196.html
Copyright © 2011-2022 走看看