ES版本:6.2.4

集群环境:7台机器,每台部署一个master节点。其中3台部署2个hot节点,另外4台部署2个warm节点。共21个节点。

1. 挂盘

按实际情况分盘,一个机子上的2个data节点均分数据磁盘。

通过UUID挂盘,以防止以后换盘,盘符移动(这里拿3个盘举例)。

  1. mkdir -p /data01a/esat
  2. mkdir -p /data02b/esat
  3. mkdir -p /data03c/esat
  4.  
  5. blkid
  6.  
  7. vi /etc/fstab
  8. UUID="f78d2fb8-4b00-4f08-af69-07d533b54a85" /data01a ext4 defaults 0 3
  9. UUID="3cd45d40-e51c-42ce-9b6b-8d2c315a8f9d" /data02b ext4 defaults 0 3
  10. UUID="396e2e59-e92c-4813-a1f1-ed560731a361" /data03c ext4 defaults 0 3
  11.  
  12. mount -a

2. 创建用户,修改磁盘权限

  1. groupadd esadmin
  2. useradd -g esadmin esadmin
  3. useradd -g esadmin esmaster
  4. useradd -g esadmin esdata
  5.  
  6. chown -R esadmin:esadmin /data01a
  7. chown -R esadmin:esadmin /data02b
  8. chown -R esadmin:esadmin /data03c
  9.  
  10. chmod -R 771 /data*

3. 系统设置

vi /etc/security/limits.conf
@esadmin - nofile 655360
@esadmin - nproc 8192
@esadmin - memlock unlimited
@esadmin - as unlimited
@esadmin - fsize unlimited

vi /etc/sysctl.conf
vm.swappiness = 1
vm.max_map_count = 655300

sysctl -p

4.安装JDK8

  1. rpm -i jdk-8u171-linux-x64.rpm

5. 安装ES

将ES安装文件拷贝到对应目录下。

安装master:

cd /home/esmaster
unzip elasticsearch-6.2.4.zip

修改配置:
vi elasticsearch-6.2.4/config/elasticsearch.yml

  1. cluster.name: es-xx
  1. node.name: master-at-xx
    node.master: true
  2. node.data: false
  3. node.ingest: false
  4. search.remote.connect: false
  5.  
  6. bootstrap.memory_lock: true
  7. bootstrap.system_call_filter: false
  8.  
  9. network.host: xx.xx.xx.xx
  10. http.port: 9200
    transport.tcp.port: 9300
  1. http.cors.enabled: true
    http.cors.allow-origin: "*"
  2.  
  3. discovery.zen.ping.unicast.hosts: ["xx.xx.xx.xx:9300", "xx.xx.xx.xx:9300", "xx.xx.xx.xx:9300", ...]
    discovery.zen.minimum_master_nodes: 4
    discovery.zen.fd.ping_interval: 10s
    discovery.zen.fd.ping_timeout: 60s
    discovery.zen.fd.ping_retries: 3
  4.  
  5. gateway.expected_master_nodes: 7
    gateway.recover_after_time: 10m
    gateway.recover_after_master_nodes: 4

安装ik分词器:

./elasticsearch-6.2.4/bin/elasticsearch-plugin install file:///home/esmaster/elasticsearch-analysis-ik-6.2.4.zip

chown -R esmaster:esadmin *

安装data:

cd /home/esdata

unzip elasticsearch-6.2.4.zip

修改配置:
vi elasticsearch-6.2.4/config/elasticsearch.yml

  1. cluster.name: es-xx
  2.  
  3. node.name: data-at-40
  4.  
  5. node.master: false
  6. node.data: true
  7. node.ingest: true
  8. search.remote.connect: true
  9. search.remote.node.attr: gateway
  10.  
  11. node.attr.type: hot
  12. node.attr.gateway: true
  13.  
  14. path.data: ["/data01a/esat", "/data02b/esat", "/data03c/esat", ...]
  15.  
  16. bootstrap.memory_lock: true
  17. bootstrap.system_call_filter: false
  18.  
  19. network.host: xx.xx.xx.xx
  20. http.port: 9201
  21. transport.tcp.port: 9301
  22.  
  23. http.cors.enabled: true
  24. http.cors.allow-origin: "*"
  1. discovery.zen.ping.unicast.hosts: ["xx.xx.xx.xx:9300", "xx.xx.xx.xx:9300", "xx.xx.xx.xx:9300", ...]
  1. discovery.zen.minimum_master_nodes: 4
    discovery.zen.fd.ping_interval: 10s
    discovery.zen.fd.ping_timeout: 60s
    discovery.zen.fd.ping_retries: 3
  2.  
  3. gateway.expected_master_nodes: 7
    gateway.recover_after_time: 10m
    gateway.recover_after_master_nodes: 4

上面是hot节点的配置(node.attr.type: hot),warm节点类似。

安装ik分词器:

./elasticsearch-6.2.4/bin/elasticsearch-plugin install file:///home/esdata/elasticsearch-analysis-ik-6.2.4.zip

chown -R esdata:esadmin *

修改JVM配置文件

vi /home/esmaster/elasticsearch-6.2.4/config/jvm.options
master 修改jvm.options -Xms10g -Xmx10g
vi /home/esdata/elasticsearch-6.2.4/config/jvm.options
data 修改jvm.options -Xms31g -Xmx31g

6 启动

  1. ./bin/elasticsearch -p pid -d

7. 启动监控工具head和Bigdesk

  1. unzip es_tools.zip
  2. cd es_tools
  3. nohup python -m SimpleHTTPServer 9080 &

8. 设置索引模板

  1. put _template/app_template
  2. {
  3. "order": 0,
  4. "index_patterns": [ "app_*" ],
  5. "settings": {
  6. "index": {
  7. "unassigned": {
  8. "node_left": {
  9. "delayed_timeout": "10m"
  10. }
  11. },
  12. "routing": {
  13. "allocation": {
  14. "include": {"type": "hot"}
  15. }
  16. },
  17. "refresh_interval": "5s",
  18. "number_of_shards": "1",
  19. "number_of_replicas": "1"
  20. }
  21. },
  22. "mappings": {
  23. "_doc": {
  24. "date_detection": false,
  25. "properties": {
  26. "timestamp": {
  27. "format": "yyyy-MM-dd HH:mm:ss:SSS||yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||dateOptionalTime",
  28. "type": "date"
  29. },
  30. "@timestamp": {
  31. "format": "yyyy-MM-dd HH:mm:ss:SSS||yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||dateOptionalTime",
  32. "type": "date"
  33. },
  34. "attimestamp": {
  35. "format": "yyyy-MM-dd HH:mm:ss:SSS||yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||dateOptionalTime",
  36. "type": "date"
  37. },
  38. "ip": {
  39. "type": "ip"
  40. },
  41. "message": {
  42. "search_analyzer": "ik_max_word",
  43. "analyzer": "ik_max_word",
  44. "type": "text"
  45. }
  46. },
  47. "dynamic_templates": [
  48. {
  49. "strings_not_analyzed": {
  50. "match_mapping_type": "string",
  51. "mapping": {
  52. "type": "keyword"
  53. }
  54. }
  55. }
  56. ]
  57. }
  58. }
  59. }

以上设置所有以“app_”命名的索引的template,默认分配到hot节点。

9.迁移索引

动态修改某个索引到warm节点。如设置"app_index"这个索引到warm节点:

  1. PUT app_index/_settings
  2. {
  3. "index": {
  4. "routing": {
  5. "allocation": {
  6. "include": {"type": "warm"}
  7. }
  8. }
  9. }
  10. }

大于2T的磁盘分区挂载(小于2T的用fdisk):

  1. [root@168-11-225-68 ~]# mkdir /data
  2. [root@168-11-225-68 ~]# fdisk -l
  3. [root@168-11-225-68 ~]# parted /dev/sdb
  4. (parted) mklabel gpt
  5. (parted) mkpart sdb1 0% 100%
  6. (parted) print
  7. [root@168-11-225-68 ~]# mkfs.ext4 /dev/sdb1
  8. [root@168-11-225-68 ~]# mount /dev/sdb1 /data
  9. [root@168-11-225-68 ~]# df -h

使用配置文件(/etc/fstab)挂盘:

  1. [root@168-11-225-68 ~]# blkid
  2. /dev/sdb1: UUID="e84421b0-bdf3-448c-8561-bf48adced7b3" TYPE="ext4" PARTLABEL="sdb1" PARTUUID="3f9d3296-b613-4224-ab43-33f29110e586"
  3. /dev/sda1: UUID="3ba0d7b0-a6f8-4523-b979-72ba4f691fe3" TYPE="xfs"
  4. /dev/sda2: UUID="M1sg44-aylU-Uxpu-VS01-10Wd-dbvl-2jRVoj" TYPE="LVM2_member"
  5. /dev/mapper/centos-root: UUID="fe151667-8045-429e-94df-d898d90cd060" TYPE="xfs"
  6. /dev/mapper/centos-swap: UUID="29c15603-bb2f-432f-8185-12cc77514269" TYPE="swap"
  7. [root@168-11-225-68 ~]# vi /etc/fstab
  8. UUID="e84421b0-bdf3-448c-8561-bf48adced7b3" /app ext4 defaults 0 0
  9. [root@168-11-225-68 ~]# mount -a
  10. [root@168-11-225-68 ~]# df -h

参考:

https://www.elastic.co/cn/blog/hot-warm-architecture-in-elasticsearch-5-x

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-cluster.html

https://www.elastic.co/guide/en/elasticsearch/reference/6.2/modules-cross-cluster-search.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html

Elasticsearch冷热集群搭建的更多相关文章

  1. elasticsearch 分布式集群搭建

    elasticsearch环境搭建及单节点搭建可参考我的上一篇:http://www.cnblogs.com/xuwenjin/p/8745624.html 本文以Elaticsearch 6.2.2 ...

  2. ElasticSearch入门 —— 集群搭建

    一.环境介绍与安装准备 1.环境说明 2台虚拟机,OS为ubuntu13.04,ip分别为xxx.xxx.xxx.140和xxx.xxx.xxx.145. 2.安装准备 ElasticSearch(简 ...

  3. 使用 docker 进行 ElasticSearch + Kibana 集群搭建

    在Docker容器中运行Elasticsearch Kibana和Cerebro 机器信息 10.160.13.139 10.160.9.162 10.160.11.171 1. 安装docker和d ...

  4. elasticsearch集群搭建实例

    elasticsearch集群搭建实例 下个月又开始搞搜索了,几个月没动这块还好没有落下. 晚上在自己虚拟机上搭建了一个简易搜索集群,分享一下. 操作系统环境: Red Hat 4.8.2-16 el ...

  5. elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)

    一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...

  6. Elastic Stack之ElasticSearch分布式集群yum方式搭建

    Elastic Stack之ElasticSearch分布式集群yum方式搭建 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.搜索引擎及Lucene基本概念 1>.什么 ...

  7. Elasticsearch集群搭建及使用Java客户端对数据存储和查询

    本次博文发两块,前部分是怎样搭建一个Elastic集群,后半部分是基于Java对数据进行写入和聚合统计. 一.Elastic集群搭建 1. 环境准备. 该集群环境基于VMware虚拟机.CentOS ...

  8. 和我一起打造个简单搜索之ElasticSearch集群搭建

    我们所常见的电商搜索如京东,搜索页面都会提供各种各样的筛选条件,比如品牌.尺寸.适用季节.价格区间等,同时提供排序,比如价格排序,信誉排序,销量排序等,方便了用户去找到自己心里理想的商品. 站内搜索对 ...

  9. ElasticStack之Elasticsearch集群搭建

    需搭建服务器环境 操作系统 Host:port node 1 CentOS 7.2.1511 11.1.11.127:9200 node1 2 CentOS 7.2.1511 11.1.11.128: ...

随机推荐

  1. PHP远程下载图片,微信头像存到本地,本地图片转base64

    方法一(推荐): function download_remote_pic($url){ $header = [ 'User-Agent: Mozilla/5.0 (Windows NT 6.1; W ...

  2. HDU4622 Reincarnation 字符串 SAM

    原文链接https://www.cnblogs.com/zhouzhendong/p/HDU4622.html 题目传送门 - HDU4622 题意 多组数据. 对于每一组数据,给定一个字符串 s , ...

  3. LoadRunner之IP欺骗

     一.启动IP欺骗,弹出提示窗口:      二.将本机改为静态IP: 1.查看当前的IP相关信息: 2.更改IP:  三.正式设置模拟IP号段: 1.重复步骤一,会弹出如下弹窗,选择第二项并下一步: ...

  4. MarkdownPad 2在win10上安装及破解(含安装包)

    MarkdownPad 2 是一款较不错的Markdown编辑器,可快速将文本转换为美观的HTML/XHTML的网页格式代码,且操作方便,用户可以通过键盘快捷键和工具栏按钮来使用或者移除Markdow ...

  5. excel表格导入数据库数据存在则更新不存在添加

    public void excelToDB() throws ParseException { String datapath = this.getParameter("datapath&q ...

  6. CSS规范 - 分类方法

    CSS文件的分类和引用顺序 通常,一个项目我们只引用一个CSS,但是对于较大的项目,我们需要把CSS文件进行分类. 我们按照CSS的性质和用途,将CSS文件分成“公共型样式”.“特殊型样式”.“皮肤型 ...

  7. Java 之 JavaScript (一)

    1.JavaScript a.定义:JavaScript 是脚本语言,是一种轻量级的编程语言 b.实现:①直接通过标签里面的onXX属性驱动js的执行 <input type="but ...

  8. 从URL输入到页面展现到底发生什么

    前言 打开浏览器从输入网址到网页呈现在大家面前,背后到底发生了什么?经历怎么样的一个过程?先给大家来张总体流程图,具体步骤请看下文分解!   从URL输入到页面展现 总体来说分为以下几个过程: DNS ...

  9. 打印星星 - Python

    打印星星是经典面试题目,考察流程控制中的循环和条件.本文对相关方法进行总结. 到的方法只要有(1)嵌套循环(2)center(3)format(^)(4)字符串乘法 # -*- coding:utf- ...

  10. springcloud(六):配置中心git示例

    随着线上项目变的日益庞大,每个项目都散落着各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多.某一个基础服务信息变更,都会引起一系列的更新和重启,运维苦不堪言也容易出错.配置 ...