关键词:
一、简介:
Elasticsearch是一个基于Apache Lucene的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
· 分布式的实时文件存储,每个字段都被索引并可被搜索
· 分布式的实时分析搜索引擎
· 可以扩展到上百台服务器,处理PB级结构化或非结构化数据
二、环境准备
主机 | 系统 | 配置 | IP |
node1 | Centos7.4 | CPU*2-MEM*4G | 172.16.10.172 |
node2 | Centos7.4 | CPU*2-MEM*4G | 172.16.10.190 |
node3 | Centos7.4 | CPU*2-MEM*4G | 172.16.10.193 |
系统前期优化:(三台服务器分别按以下调试)
1.安装常用软件
yum install -y ntpdate net-tools vim lrzsz unzip gcc gcc-c++
2.关闭Firewalld、NetworkManager、Selinux
systemctl stop firewalld
systemctl disable firewalld
systemctl disable NetworkManager
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
3.时间同步
echo "0 */3 * * * /usr/sbin/ntpdate ntp5.aliyum.com >/dev/null 2>&1; /sbin/hwclock -w">>/etc/crontab
4.PAM认证
vim/etc/security/limit.conf #追加到配置文件
* soft nofile 102400
* hard nofile 102400
* soft nproc 102400
* hard nproc 102400
5.增加虚拟内存
Vim /etc/sysctl.conf #追加到配置文件
使用sysctl –p刷新配置
6.配置免密码登陆:
[[email protected] ~]# ssh-keygen
[[email protected] ~]# ssh-copy-id 172.16.10.190
[[email protected] ~]# ssh-copy-id 172.16.10.193
7.配置hosts
172.16.10.172 node1
172.16.10.190 node2
172.16.10.193 node3
8.注意:
es(elasticsearch)版本2.x以上需要JDK 1.8以上
运行es不能使用root用来来运行
es目录必须指定一个普通用户和组(授权)
es对内存和CPU的消耗比较高
es使用的端口看开放iptables:9200,9300等
es配置其他插件实现资源等可视化监控
es的版本和插件之间版本要匹配
三、Jdk安装:
软件包:jdk-8u171-linux-x64.tar.gz
tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_171/ jdk1.8
cat /etc/profile.d/jdk8.sh
export JAVA_HOME=/usr/local/jdk1.8
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jar/tools.jar:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
source /etc/profile.d/jdk8.sh
验证:java –version
四、ElasticSearch集群安装
软件包:elasticsearch-5.6.5.tar.gz
注意:ElasticSearch安装不能用root用户安装,三台服务器分别按以下调试
1.新建用户、组
groupadd es
useradd es -g es
2.解压、创建目录、授权
tar xf elasticsearch-5.6.5.tar.gz -C /usr/local/
cd /usr/local/
mv elasticsearch-5.6.5 elasticsearch
mkdir /usr/local/elasticsearch/data/
mkdir /usr/local/elasticsearch/logs/
chown -R es.es /usr/local/elasticsearch
3.elasticsearch目录介绍
目录 | 作用 |
/bin | 运行es实例和管理插件的一些脚本 |
/config | 配置文件路径,包含elasticsearch.yml |
/data | 在节点上每个索引/碎片的数据文件的位置,可以多个目录 |
/lib | Es使用的库 |
/logs | 日志存放目录 |
/plugins | 已经安装的插件存放位置 |
/modules | 模块目录 |
4.修改配置文件elasticsearch.yml(内置调优)
#node1配置文件
cd /usr/local/elasticsearch/config
[[email protected] config]# cat elasticsearch.yml |egrep -v "^#|^$"
cluster.name: es-cluster
node.name: node-1
path.data: /usr/local/elasticsearch/data/
path.logs: /usr/local/elasticsearch/logs/
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
network.host: 172.16.10.172
http.port: 9200
http.compression: true
discovery.zen.ping.unicast.hosts: ["172.16.10.172:9300", "172.16.10.190:9300","172.16.10.193:9300"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
#node2配置文件
[[email protected] config]# egrep -v "^#|^$" elasticsearch.yml
cluster.name: es-cluster
node.name: node-2
path.data: /usr/local/elasticsearch/data/
path.logs: /usr/local/elasticsearch/logs/
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
network.host: 172.16.10.190
http.port: 9200
http.compression: true
discovery.zen.ping.unicast.hosts: ["172.16.10.172:9300", "172.16.10.190:9300","172.16.10.193:9300"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
#node3配置文件
[[email protected] config]# egrep -v "^#|^$" elasticsearch.yml
cluster.name: es-cluster
node.name: node-3
path.data: /usr/local/elasticsearch/data/
path.logs: /usr/local/elasticsearch/logs/
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
network.host: 172.16.10.193
http.port: 9200
http.compression: true
discovery.zen.ping.unicast.hosts: ["172.16.10.172:9300", "172.16.10.190:9300","172.16.10.193:9300"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*
解释说明:
cluster.name 集群名字,同一个集群中使用相同名字,单机就随意
node.name: node-1 节点名字
path.data:分配给当前节点的索引数据所在的位置:
path.logs:日志文件所在位置
bootstrap.memory_lock: true:设置为true,memory_lock来锁定物理内存,避免使用内存交换(SWAP)来提高性能(elasticsearch 2.4版本后)
(bootstrap.mlockall: true:这个是坑,如果加入配置,服务将无法启动,原因无法找到这个参数,这个参数是在elasticsearch 2.4之前版本才有)
bootstrap.system_call_filter:系统环境检测,设置关闭防止导致es无法启动
network.host:ES节点网络地址
http.port:Http传输监听定制端口:默认是9200
http.compression:web服务器和浏览器客户端传送数据时,将网页数据/客户端响应数据在发送给对方前先进行压缩再传输
discovery.zen.ping.unicast.hosts:设置集群中master节点的初始列表
discovery.zen.minimum_master_nodes:设置参数来保证集群中的节点可以通知其他N个有master资格节点,默认 1
http.cors.enabled和http.cors.allow-origin:允许head插件通过web访问
注:
node.master: true:指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。
node.data: true:指定该节点是否存储索引数据,默认为true。
#3种配置高性能集群拓扑结构的模式,如下:
a.如果你想让节点从不选举为主节点,只用来存储数据,可作为负载器
node.master: false
node.data: true
b.如果想让节点成为主节点,且不存储任何数据,并保有空闲资源,可作为协调器
node.master: true
node.data: false
c. 如果想让节点既不称为主节点,又不成为数据节点,那么可将他作为搜索器,从节点中获取数据,生成搜索结果等
node.master: false
node.data: false
5.启动elasticsearch
su - eselasticsearch
nohup /usr/local/elasticsearch/bin/elasticsearch &
tail -f nohup.out
集群效果图:
6.访问:http://172.16.10.172:9200/
"name" : "node-1",
"cluster_name" : "es-cluster",
"cluster_uuid" : "y1PDOlDvQ5eRDRl0TANUsQ",
"version" :
"number" : "5.6.5",
"build_hash" : "1a2f265",
"build_date" : "2017-10-06T20:33:39.012Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
,
"tagline" : "You Know, for Search"
Head插件介绍:
head插件是一个elasticsearch的集群管理工具,相交互的Web前台,它是完全由html5编写的独立网页程序。
#ES-Head主要作用
a.它展现ES集群的拓扑结构,并且可以通过它来进行索引(Index)和节点(Node)级别的操作
b.它提供一组针对集群的查询API,并将结果以json和表格形式返回
c.它提供一些快捷菜单,用以展现集群的各种状态
head插件的安装(head 插件不能放在elasticsearch-5.6.5文件夹里,head 插件需要单独放,单独去执行)
yum -y install unzip zip openssl-devel wget
1.解压head
unzip elasticsearch-head-master.zip -d /usr/local/
2.安装node
tar xf node-v10.8.0-linux-x64.tar.gz
mv node-v10.8.0-linux-x64 /usr/local/node
ln -s /usr/local/node/bin/* /usr/local/bin
3.验证是否安装配置成功:
node -v
4.安装grunt
cd elasticsearch-head-master/
npm install -g grunt-cli //执行后会生成node_modules文件夹
npm install --ignore-scripts
5.修改vim Gruntfile.js文件:增加hostname属性,设置为*
connect:
server:
options:
port: 9100,
hostname: '*',
base: '.',
keepalive: true
6.修改 vim _site/app.js 文件:修改head的连接地址:
this.base_uri = this.config.base_uri || this.prefs.get(“app-base_uri”) || “http://localhost:9200“;
修改成ElasticSearch的机器地址
this.base_uri = this.config.base_uri || this.prefs.get(“app-base_uri”) || “http://172.16.10.172:9200“;
7.执行命令启动 head
cd /usr/local/elasticsearch-head-master/node_modules/grunt/bin
grunt server
后台启动命令(建议后台启动,查看out.log启动情况)
nohup grunt server &
8.访问http://172.16.10.172:9100/
Bigdesk介绍
bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等。
注:至少两台这个工具才可用
1.下载软件包
[[email protected] elasticsearch]# cd plugins/
[[email protected] plugins]# git clone https://github.com/hlstudio/bigdesk
[[email protected] plugins]#cd /usr/local/elasticsearch/plugins/bigdesk/_site
2.启动bigdesk
[[email protected] _site]# python -m SimpleHTTPServe
3.访问:http://172.16.10.172:8000
连接之前:
连接之后:
七、结尾
经过几天阅读相关资料,部署过程踩了很多坑,本文实践多次测试整理具有参考价值,以上过程内置调优参数,调优建议根据生产需求和官方文档进行调整相关参数,建议按照本文步骤流程实施部署,少走弯路少采坑。后续继续创建数据模拟、调优和模拟ES脑裂等等。本文纯属个人笔记,欢迎各位大佬指点指导。推荐架构:Elasticsearch + Logstash + Kibana(ELK)。
typesdk服务端设计思路与架构之六:性能及调优初步
...运行一切正常,但是当然我们不能就这样把这套SDK服务端部署上线到正式生产环境,稍有正式大型项目经验的同学应该都知道性能优化以及部署上线相关设计对于服务端项目的重要性。我们到目前为止的分析设计中,并没有考虑... 查看详情
sparkshuffle参数及调优建议(转)
原文:http://www.cnblogs.com/arachis/p/Spark_Shuffle.htmlspark.shuffle.file.buffer默认值:32k参数说明:该参数用于设置shufflewritetask的BufferedOutputStream的buffer缓冲大小。将数据写到磁盘文件之前,会先写入buffer缓冲中,待缓冲写满之后,才会溢... 查看详情
客户端建设及调优实践
...上海站,和你一同开启通向未来的大门。客户端建设及调优实践软/硬编码、解码,超分,各式各样的特效,如何发挥出高端机型的性能的同时,保障中低端机运行流畅,这需要研发、运营和产品团队紧密... 查看详情
jvm参数及调优
JVM控制参数服务器的Xmx和Xms设置一般应该设置相同避免每次GC后都要调整虚拟机堆的大小参数含义说明-XX:InitialHeapSize=100M初始化堆大小简写-Xms100M-XX:MaxHeapSize=100M最大堆大小,默认是物理内存的1/4简写-Xmx100M-XX:NewSize=20... 查看详情
elasticsearch5.6.5安装教程
下载地址 https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-5 安装环境 centos6.5 , jdk1.8一:解压 [[email protected]programs]#tarzxvfelasticsearch-5.6. 查看详情
flume介绍及调优
一、概述Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,... 查看详情
jvm参数及调优(代码片段)
JVM控制参数服务器的Xmx和Xms设置一般应该设置相同避免每次GC后都要调整虚拟机堆的大小参数含义说明-XX:InitialHeapSize=100M初始化堆大小简写-Xms100M-XX:MaxHeapSize=100M最大堆大小,默认是物理内存的1/4简写-Xmx100M-XX:NewSize=20... 查看详情
linux操作系统状态查看及调优
查看Memory运行状态相关工具 查看IO运行状态相关工具 查看Network运行状态相关工具 查看系统整体运行状态系统调优思路性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对OS各子系统达到一种平衡... 查看详情
jvisualvm进行性能分析及调优
VisualVM是Sun的一个OpenJDK项目,其目的在于为Java应用创建一个整套的问题解决工具。它集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览HeapDump、ThreadDump、内存对象实例情况、GC执行... 查看详情
性能测试常见瓶颈分析及调优方法(代码片段)
在性能测试过程中,最重要的一部分就是性能瓶颈定位与调优。而引发性能瓶颈的原因是多种多样的,在之前的博客:常见的性能测试缺陷有进行介绍。这篇博客,来聊聊性能测试过程中的一些注意事项,以及常见的一些性能缺... 查看详情
day701.jvmgc原理及调优的基本思路-深入拆解tomcat&jetty(代码片段)
JVMGC原理及调优的基本思路Hi,我是阿昌,今天学习记录学习是关于JVMGC原理及调优的基本思路。和Web应用程序一样,Tomcat作为一个Java程序也跑在JVM中,因此如果我们要对Tomcat进行调优,需要先了解JVM调优的原... 查看详情
elasticsearch分布式安装及调优(代码片段)
三台ubuntuServer的ip:192.168.0.4,192.168.0.5,192.168.0.6从官网下载elasticsearch版本2.2.1解压到/opt/目录下sudotar-zxvfelasticsearch-2.2.1.tar.gz-C/opt对ip为192.168.0.4的主机进入/opt/elasticsearch-2.2.1/config/并 查看详情
使用visualvm进行性能分析及调优
概述开发大型Java应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为... 查看详情
基本sql语句--sql执行流程及调优
SQL分类 和大多数关系型数据库一样,mysql也具有以下几种类型的SQL语句:DML语句:主要用于新增,修改,删除和查询数据库的记录,关键字:insert,update,delete和selectDCL语句:主要用于控制数据库对象(库,表,字段、用户... 查看详情
cpu负载观察及调优方法
红帽6实现无滴答ticklessinterrupt-driven由软中断进行驱动在SMP多CPU架构中,传统上多CPU对于内存的访问是总线方式。是总线就会存在资源争用和一致性问题,而且如果不断的增加CPU数量,总线的争用会愈演愈烈,这就体现在4核CPU的... 查看详情
专题介绍客户端建设及调优实践
”“音视频+无限可能”是一扇LiveVideoStackCon面向新兴领域开启的大门,在移动互联网红利消失、内卷的局面下,智能车、制造、金融、医疗、出海等新兴领域还在迫切追寻新技术带来的增值。在“音视频+无限可能... 查看详情
elasticsearch5.6.5安装head插件
head安装包,下载地址:https://github.com/mobz/elasticsearch-head/archive/master.zip head插件不能放在elasticsearch-5.6.5文件夹里,head插件需要单独放,单独去执行;所以在elasticsearch-5.6.5同级目录下解压了head插件。1.如果没有zip/unzip命令... 查看详情
day704.tomcat内存溢出的原因分析及调优-深入拆解tomcat&jetty(代码片段)
Tomcat内存溢出的原因分析及调优Hi,我是阿昌。今天学习记录的是关于Tomcat内存溢出的原因分析及调优。作为Java程序员,我们几乎都会碰到java.lang.OutOfMemoryError异常,但是你知道有哪些原因可能导致JVM抛出OutOfMemoryError... 查看详情