ElasticSearch5.6.5集群部署及调优、Head和Bigdesk插件安装


一、简介

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 stopNetworkManager

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#追加到配置文件

vm.max_map_count=655360

使用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"

五、ElasticSearch-Head安装

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/


六、ElasticSearch-Bigdesk安装

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)。


原文地址:http://blog.51cto.com/11895569/2157450

时间: 2024-10-05 10:35:53

ElasticSearch5.6.5集群部署及调优、Head和Bigdesk插件安装的相关文章

ES集群部署及调优

系统:Centos6ES版本:6.4.0服务器三台172.16.0.8172.16.0.6172.16.0.22 部署jdk解压jdk放在/data目录,/data/jdk配置环境变量,/etc/proifle里面加入如下 export JAVA_HOME=/data/jdk export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH s

分享Java企业级开发必备高级技术(WebLogic、Tomcat集群,Apach调优)

Java自面世后就非常流行,发展迅速,对C++语言形成有力冲击.在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景,那么滋生的基于java项目也越来越多,对java运行环境的要求也越来越高,很多java的程序员只知道对业务的扩展而不知道对java本身的运行环境的调试,例如虚拟机调优,服务器集群等,所以也滋生本门课程的产生. Java企业级开发必备高级技术(WebLogic.Tomcat集群,Apach调优),刚刚买的,这个教程讲的很好,高清完整版,现低价转两个播放码,可以先

部署数据库的高可用集群和性能调优

IP规划角色 IP地址 主机名Master 数据库服务器 192.168.4.51 master51备用 1 master 数据库服务器 192.168.4.52 master52备用 2 master 数据库服务器 192.168.4.53 master53第 1 台 slave 服务器 192.168.4.54 slave54第 2 台 slave 服务器 192.168.4.55 slave55Mha_manager 服务器 192.168.4.56 mgm56VIP 地址 192.168

Rabbitmq集群部署Haproxy

安装前的说明: 1.为了配合做rabbitmq的负载均衡,本次的安装包是安装的低版本1.5.8版本,下载包的地址:https://src.fedoraproject.org/repo/pkgs/haproxy/2.按照上两篇博客,先把rabbitmq集群装好:单机版Rabbitmq部署:http://blog.51cto.com/10950710/2135676Rabbitmq集群部署:http://blog.51cto.com/10950710/2135717 安装步骤: 1.将haproxy

谈一谈Elasticsearch的集群部署

??Elasticsearch天生就支持分布式部署,通过集群部署可以提高系统的可用性.本文重点谈一谈Elasticsearch的集群节点相关问题,搞清楚这些是进行Elasticsearch集群部署和拓扑结构设计的前提.关于如何配置集群的配置文件不会在本文中提及. 节点类型 1. 候选主节点(Master-eligible node) ??一个节点启动后,就会使用Zen Discovery机制去寻找集群中的其他节点,并与之建立连接.集群中会从候选主节点中选举出一个主节点,主节点负责创建索引.删除索

Memcached 集群部署

一.Memcached简介 Memcached 是一个高性能的分布式内存对象缓存系统,Memcached的高性能源于两阶段哈希(two-stage hash)结构,Memcached基于一个存储键/值对的HashMap,减轻数据库负载,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度.当内存容量达到指定设定的值时,LRU算法自动删除不使用的缓存. 二.Memcached应用的场景 (1)Memcached大部分是应用在作为数据库前端缓存,减少了连接数据库次数

ELK5.2+kafka+zookeeper+filebeat集群部署

架构图 考虑到日志系统的可扩展性以及目前的资源(部分功能复用),整个ELK架构如下: 架构解读 : (整个架构从左到右,总共分为5层) 第一层.数据采集层 最左边的是业务服务器集群,上面安装了filebeat做日志采集,同时把采集的日志分别发送给两个logstash服务(2.187.2.189) 第二层.数据处理层,数据缓存层 logstash服务把接受到的日志经过格式处理,转存到本地的kafka broker+zookeeper 集群中. 第三层.数据转发层 这个单独的Logstash(2.1

ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决

说起来甚是惭愧,博主在写这篇文章的时候,还没有系统性的学习一下ES,只知道可以拿来做全文检索,功能很牛逼,但是接到了任务不想做也不行, leader让我搭建一下分布式的ES集群环境,用来支持企业信用数据的检索,刚开始宝宝一脸蒙逼,只是之前自己本地搭建过一个测试玩过,开发任务也是忙的不行, 一直也没时间好好的研究一下,惭愧.<Elasticsearch服务器开发>已经备好,只能边学边开发了,希望本篇拙文可以帮到有需要的coder们.----jstarseven 话不多说,开始搭建环境,准备好集群

zabbix实例集群部署-偏向于管理使用

zabbix实例集群部署 前言:已经折腾两个礼拜了,本文侧重点不在于安装,在于使用管理.部署请看文档或者百度,,很简        单 提示:zabbix关于模板.应用集.主机组.触发器.等等命令一定要谨慎,不要随意,防止自己糊涂了 主机组: 比如说,我的主机组用的是yunce56,因为我这个项目名称叫做yunce 模板:zabbix自带的templates不够合理,我自己重新写,DIY.比如说我专门监                          控cpu,我可以写yunce-cpu-li