[root@es-node1 ~]# mkdir /usr/java
[root@es-node1 ~]# tar zxvf jdk1.8.0_131.tar.gz -C /usr/java/

[root@es-node1 ~]# cp /etc/profile /etc/profile.back
[root@es-node1 ~]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_131/
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
[root@es-node1 ~]# source /etc/profile
[root@es-node1 ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

[Elasticsearch]

[root@es-node1 ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz

[root@es-node1 ~]# tar zxvf elasticsearch-6.3.2.tar.gz  -C /usr/src/

[root@es-node1 ~]# mv /usr/src/elasticsearch-6.3.2/ /usr/local/elasticsearch

[root@es-node1 ~]# useradd elasticsearch
[root@es-node1 ~]# chown -R elasticsearch:elasticsearch /usr/local/elasticsearch/

【Elasticsearch优化】

为了使得Elasticsearch获得高效稳定的性能,需要对系统和JVM两个方面进行优化

[root@es-node1 ~]# vim  /etc/sysctl.conf

fs.file-max=655360                 #最大打开文件描述符数,建议修改为655360或者更高
vm.max_map_count=262144      #直接影响java线程数量,用来限制一个进程可以用于VM(虚拟内存区域大小)默认为65530,建议修改为262144或者更高

[root@es-node1 ~]#vim /etc/security/limits.conf

* soft nproc
* hard nproc
* soft nofile
* hard nofile
* soft memlock unlimited
* hard memlock unlimited

[root@es-node1 ~]# sed -i '5s#4096#20480#g' /etc/security/limits.d/20-nproc.conf

#JVM调优

JVM调优主要是针对Elasticsearch的JVM内存资源进行优化,elasticsearch的内存资源配置文件为jvm.options

[root@es-node1 ~]# vim /usr/local/elasticsearch/config/jvm.options   #根据服务器内存大小,进行修改合适的值,建议修改服务器物理内存的一半最佳

-Xms1g
-Xmx1g

[root@es-node1 ~]# egrep -v "#|^$" /usr/local/elasticsearch/config/elasticsearch.yml

cluster.name: es_data #配置集群名称
node.name: es_node1 #节点名称
node.master: true #指定了该节点是否有资格选举master,默认为true
node.data: true #指定该节点是否存储索引数据,默认为true,表示为数据存储
path.data: /usr/local/elasticsearch/data #设置索引数据存储的位置
path.logs: /usr/local/elasticsearch/logs #设置日志文件存储的位置
bootstrap.memory_lock: true #设置true用来锁住物理内存
indices.fielddata.cache.size: 50mb #索引字段缓存大小
network.host: 0.0.0.0 #监听地址
http.port: 9200 #Elasticsearch对外提供的http端口
discovery.zen.ping.unicast.hosts: ["192.168.37.134:9300","192.168.37.135:9300","192.168.37.136:9300"] #设置集群中master节点初始列表,可通过这些
节点自动发现新加入集群的节点,这里的9330端口,即为集群交互通信端口
discovery.zen.minimum_master_nodes: 1 #配置当前集群最少的master节点数,默认为1,也就是说,elasticsearch集群中master节点数不能低于次值>,
http.cors.enabled: true #表示开启跨域访问支持,默认为false
http.cors.allow-origin: "*" #表示跨域访问允许的域名地址,,可支持正则表达式,这里“*”表示允许所有域名访问
http.cors.allow-headers: "X-Requested-With,Content-Type, Content-Length, Authorization" #允许跨域访问头部信息

[root@es-node1 config]# vim /usr/local/elasticsearch/config/jvm.options

-Xms2g
-Xmx2g
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
-server
-Xss1m
-Djava.awt.headless=true
-Dfile.encoding=UTF-
-Djna.nosys=true
-Djdk.io.permissionsUseCanonicalPath=true
-Dio.netty.noUnsafe=true
-Dio.netty.noKeySetOptimization=true
-Dio.netty.recycler.maxCapacityPerThread=
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j.skipJansi=true
-XX:+HeapDumpOnOutOfMemoryError

[root@es-node1 ~]#mkdir /usr/local/elasticsearch/data/ -p

[root@es-node1 ~]#chown -R elasticsearch:elasticsearch /usr/local/elasticsearch/

[root@es-node1 ~]# su - elasticsearch
[elasticsearch@es-node1 ~]$ /usr/local/elasticsearch/bin/elasticsearch -d

ps:当你的elasticsearch启动的时候,什么错误都没有报,但是就是端口进程没起来·,此时查看日志信息,输出如下,

这是因为目录权限属主属组是root账号,我们只需chown elasticsearch:elasticsearch -R  /usr/local/elasticsearch/即可

tail /usr/local/elasticsearch/logs/es_cluster.log

    at java.nio.file.Files.createAndCheckIsDirectory(Files.java:) ~[?:1.8.0_131]
at java.nio.file.Files.createDirectories(Files.java:) ~[?:1.8.0_131]
at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:) ~[elasticsearch-6.3..jar:6.3.]
at org.elasticsearch.node.Node.<init>(Node.java:) ~[elasticsearch-6.3..jar:6.3.]
at org.elasticsearch.node.Node.<init>(Node.java:) ~[elasticsearch-6.3..jar:6.3.]
at org.elasticsearch.bootstrap.Bootstrap$.<init>(Bootstrap.java:) ~[elasticsearch-6.3..jar:6.3.]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:) ~[elasticsearch-6.3..jar:6.3.]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:) ~[elasticsearch-6.3..jar:6.3.]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:) ~[elasticsearch-6.3..jar:6.3.]
... more

 【Elasticsearch图形化工具】

root@es-node1 ~]# yum install -y nodejs npm git   (ps:如果yum不能正常安装npm和nodejs的话,采用源码吧)

源码安装
wget https://nodejs.org/dist/v9.8.0/node-v9.8.0-linux-x64.tar.xz xz -d node-v9.8.0-linux-x64.tar.xz
tar xvf node-v9.8.0-linux-x64.tar vim /etc/profile export NODE_HOME=/root/node-v9.8.0-linux-x64/
export PATH=$PATH:$NODE_HOME/bin [root@es-node1 ~]# npm -v
5.6.
[root@es-node1 ~]# node -v
v9.8.0

[root@es-node1 ~]# cd /usr/local/
[root@es-node1 local]# git clone git://github.com/mobz/elasticsearch-head.git      #安装head插件

[root@es-node1 local]# npm config set registry http://registry.npm.taobao.rog    #采用淘宝源

[root@es-node1 elasticsearch]# npm install     #安装过程中,有点小意外,纠结了好久才找到办法,确实是一个坑

npm ERR!
npm ERR! If you are behind a proxy, please make sure that the
npm ERR! 'proxy' config is set properly. See: 'npm help config'
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/--22T06_36_25_382Z-debug.log
或者

npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! network request to http://registry.npm.taobao.rog/phantomjs-prebuilt failed, reason: getaddrinfo ENOTFOUND registry.npm.taobao.rog registry.npm.taobao.rog:80
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-08-25T09_04_38_243Z-debug.log
[root@localhost elasticsearch-head]# npm install
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! network request to http://registry.npm.taobao.rog/grunt-contrib-jasmine failed, reason: getaddrinfo ENOTFOUND registry.npm.taobao.rog registry.npm.taobao.rog:80
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-08-25T09_04_44_521Z-debug.log

解决方法:

npm config get proxy
npm config get https-proxy

npm config set registry http://registry.cnpmjs.org/

npm ERR! code ELIFECYCLE
npm ERR! errno
npm ERR! phantomjs-prebuilt@2.1. install: `node install.js`
npm ERR! Exit status
npm ERR!
npm ERR! Failed at the phantomjs-prebuilt@2.1. install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/--12T07_42_48_334Z-debug.log

解决办法:

# npm install phantomjs-prebuilt@2.1.14 --ignore-scripts

npm install即可

[root@es-node1 elasticsearch]# vim /usr/local/elasticsearch-head/_site/app.js 

[root@es-node1 elasticsearch-head]# nohup npm run start &     #后台启动head插件服务,默认端口为9100

 web浏览器http://192.168.37.134:9100/验证

【其他节点配置】

【192.168.37.135】es-node2

node2节点值作为数据存储的节点角色,不参与主节点选举

#vim  /usr/local/elasticsearch/config/elasticsearch.yml

cluster.name: es_data
node.name: es.node2
node.master: false
node.data: true
path.data: /usr/local/elasticsearch/data/
path.logs: /usr/local/elasticsearch/logs
bootstrap.memory_lock: true
indices.fielddata.cache.size: 50mb
network.host: 0.0.0.0
http.port:
discovery.zen.ping.unicast.hosts: ["192.168.37.134:9300","192.168.37.135:9300","192.168.37.136:9300"]
discovery.zen.minimum_master_nodes:
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "X-Requested-With,Content-Type, Content-Length, Authorization"

vim /usr/local/elasticsearch/config/jvm.options

-Xms2g
-Xmx2g
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
-server
-Xss1m
-Djava.awt.headless=true
-Dfile.encoding=UTF-
-Djna.nosys=true
-Djdk.io.permissionsUseCanonicalPath=true
-Dio.netty.noUnsafe=true
-Dio.netty.noKeySetOptimization=true
-Dio.netty.recycler.maxCapacityPerThread=
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j.skipJansi=true
-XX:+HeapDumpOnOutOfMemoryError

【192.168.37.136】es-node3节点配置(ps:这里的node3与node1配置都是一样的,都有被选举成为master主节点的可能)

cluster.name: es_data
node.name: es.node3
node.master: true
node.data: true
path.data: /usr/local/elasticsearch/data/
path.logs: /usr/local/elasticsearch/logs
bootstrap.memory_lock: true
indices.fielddata.cache.size: 50mb
network.host: 0.0.0.0
http.port:
discovery.zen.ping.unicast.hosts: ["192.168.37.134:9300","192.168.37.135:9300","192.168.37.136:9300"]
discovery.zen.minimum_master_nodes:
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "X-Requested-With,Content-Type, Content-Length, Authorization"
vim /usr/local/elasticsearch/config/jvm.options

-Xms2g
-Xmx2g
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
-server
-Xss1m
-Djava.awt.headless=true
-Dfile.encoding=UTF-
-Djna.nosys=true
-Djdk.io.permissionsUseCanonicalPath=true
-Dio.netty.noUnsafe=true
-Dio.netty.noKeySetOptimization=true
-Dio.netty.recycler.maxCapacityPerThread=
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j.skipJansi=true
-XX:+HeapDumpOnOutOfMemoryError

【总结】

Elasticsearch节点角色类型

在生产中,高并发的场景容易出现脑裂问题,而在Elasticsearch集群亦是如此,Elasticsearch集群中的每个节点都可以成为主节点,存储数据,提供查询服务

而这些事由两个属性参数控制的也就是node,master和node.data

1:这两种组合表示这个节点有资格成为主节点,又要存储数据,如果该节点真的成为主节点的话,那么自己还要存储数据,压力是相当大的,生产不建议这样配置

node.master: true

node.data:true

2:这种组合是数据存储节点,既不参与选举,也不会成为成为主节点,因为没有成为主节点的资格,只能是数据存储节点

node.master:false

node.data:true

3:拥有参与选举主节点的资格,不会存储节点数据,该节点我们称之为master主节点

node.master:true

node.data: false

4:该节点为客户端节点,数据存储和主节点资格两项都没有,只能处理客户端请求,对海量的请求进行均衡

node.master:false

node.data:false

在一个生产集群中我们可以对这些节点的职责进行划分。
建议集群中设置3台以上的节点作为master节点【node.master: true node.data: false】
这些节点只负责成为主节点,维护整个集群的状态。
再根据数据量设置一批data节点【node.master: false node.data: true】
这些节点只负责存储数据,后期提供建立索引和查询索引的服务,这样的话如果用户请求比较频繁,这些节点的压力也会比较大
所以在集群中建议再设置一批client节点【node.master: false node.data: true】
这些节点只负责处理用户请求,实现请求转发,负载均衡等功能。

Elasticsearch集群架构的部署和调优(一)的更多相关文章

  1. elasticsearch 集群的安装部署

    一 介绍 elasticsearch 是居于lucene的搜素引擎,可以横向集群扩展以及分片,开发者无需关注如何实现了索引的备份,集群同步,分片等,我们很容易通过简单的配置就可以启动elasticse ...

  2. ElasticSearch 集群的规划部署与运维

    公号:码农充电站pro 主页:https://codeshellme.github.io 1,常见的集群部署方式 ES 有以下不同类型的节点: Master(eligible)节点:只有 Master ...

  3. Hbase集群搭建及所有配置调优参数整理及API代码运行

    最近为了方便开发,在自己的虚拟机上搭建了三节点的Hadoop集群与Hbase集群,hadoop集群的搭建与zookeeper集群这里就不再详细说明,原来的笔记中记录过.这里将hbase配置参数进行相应 ...

  4. ElasticSearch 集群基本概念及常用操作汇总(建议收藏)

    内容来源于本人的印象笔记,简单汇总后发布到博客上,供大家需要时参考使用. 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 目录: Elas ...

  5. 二、ELKStack集群架构设计

    一.ELKStack介绍与入门实践 二.Elasticsearch 集群架构图 服务器配置:Centos6.6 x86_64 CPU:1核心 MEM:2G (做实验,配置比较低一些) 注:这里配置el ...

  6. k8s上安装elasticsearch集群

    官方文档地址:https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-quickstart.html yaml文件地址:https://dow ...

  7. elasticsearch 了解多少,说说你们公司 es 的集群架构,索 引数据大小,分片有多少,以及一些调优手段 ?

    面试官:想了解应聘者之前公司接触的 ES 使用场景.规模,有没有做过比较大 规模的索引设计.规划.调优. 解答: 如实结合自己的实践场景回答即可. 比如:ES 集群架构 13 个节点,索引根据通道不同 ...

  8. elasticsearch 了解多少,说说你们公司 es 的集群架构,索 引数据大小,分片有多少,以及一些调优手段 。

    面试官:想了解应聘者之前公司接触的 ES 使用场景.规模,有没有做过比较大 规模的索引设计.规划.调优. 解答: 如实结合自己的实践场景回答即可. 比如:ES 集群架构 13 个节点,索引根据通道不同 ...

  9. Elastic Stack之ElasticSearch分布式集群二进制方式部署

    Elastic Stack之ElasticSearch分布式集群二进制方式部署 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道ELK其实就是Elasticsearc ...

随机推荐

  1. 004_zookeeper运维之maxClientCnxns overflow

    一. 线上默认设置:maxClientCnxns=120   #可通过修改这个值来进行解决 二. 在10.103.110.51这个ip上执行以下命令,进行查看连接情况 [root@10.103.101 ...

  2. 【原创】编程基础之Ruby

    ruby2.6.2 官方:https://www.ruby-lang.org/en/ 一 简介 A dynamic, open source programming language with a f ...

  3. 开通博客的第一天上传我的C#基础笔记。

    1.索引器  string arrStr = "sddfdfgfh";  索引器的目的就是为了方便而已,可以在该类型的对象后面直接写[]访问该对象里面的成员  Console.Wr ...

  4. Json 文件中value的基本类型

    在Json中,value的类型只能是以下几种: 1.字符串 2.数字 3.true 或者 false (注意,和字符串不同,没有双引号包裹) 4.null

  5. Python装饰器执行顺序详解

    探究多个装饰器执行顺序 装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序的一个迷思. 疑问 大部分涉及多个装饰器装饰的函数调用顺序时都会 ...

  6. 生产环境优雅的重启基于Nginx、Tornado的Web服务进程

    Nginx是一个高效的Web服务器及代理服务器,Tornado是一个基于epoll的异步Web开发框架,通常使用Nginx做为Web服务器时,都会以FastCGI模式,而我们从开发.调试.运维的角度考 ...

  7. mysql 命令总结 每天5个

    mysql -u root   mysql> use mysql;   mysql> UPDATE user SET Password = PASSWORD('newpass') WHER ...

  8. Confluence 6 关于嵌入的 H2 数据库

    你的 Confluence 安装中包含有嵌入的 H2 数据库,能够让你试用 Confluence 而不需要安装任何的外部数据库.H2 数据库仅仅用于你对 Confluence 进行评估.在你将 Con ...

  9. Confluence 6 自定义主面板

    主面板(dashboard)是你 Confluence 站点的默认载入页面.这个页面能够给用户能够找到其他页面的所有必须的工具,重新进入未完成的工作或者快速导航到喜欢的空间和页面 站点的欢迎信息将会在 ...

  10. 开源框架 ImageLoader +ListView+GridView+RecyclerView 浅解

    下载地址 链接:https://pan.baidu.com/s/1ebz99pcuvHg2bODgeOtSbg 提取码:ia39 一.导入jar包或者添加依赖 jar包地址 导入jar包:将下载的ja ...