目录
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
选项。
注:如果您在命令中使用了--dns
or --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验证证书不被信任。