搭建测试3节点ES集群,官网下载所需的版本进行解压运行,ECS与阿里云ES在同一地域可用区,并在相同的VPC内。

# mkdir /usr/java
# tar xvf jdk-8u162-linux-x64.tar.gz -C /usr/java/
# tar xvf logstash-5.5.3.tar.gz -C /srv/
# tar xvf kibana-5.4.3-linux-x86_64.tar.gz -C /srv
# tar xvf elasticsearch-5.4.3.tar.gz -C /srv/
# cat /etc/profile.d/elk.sh
export JAVA_HOME=/usr/java/jdk1.8.0_162/
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:/srv/elasticsearch-5.4.3/bin
export PATH=$PATH:/srv/logstash-5.5.3/bin
export PATH=$PATH:/srv/kibana-5.4.3-linux-x86_64/bin
# nohup kibana -c /srv/kibana-5.4.3-linux-x86_64/config/kibana.yml &
# nohup elasticsearch &
# cat /srv/kibana-5.4.3-linux-x86_64/config/kibana.yml
server.name: "kibana_test"
server.port: 9070   #监听端口
server.host: "192.168.0.80"  #监听端口
elasticsearch.url: "http://es1:9007"
logging.dest: /srv/logs/kibana/kibana.logxpack.security.enabled: false

ES配置文件说明,重要配置修改

# cat /srv/elasticsearch-5.4.3/config/elasticsearch.yml
cluster.name: robin_test    #集群名称,默认叫elasticsearch
node.name: es1              #节点名称,若不指定,每次启动时会随机分配一个
node.master: true           #是否有选举为主节点的资格,主节点可以控制整个集群
node.data: false            #是否设置为数据节点,数据节点保存数据并执行增删改查,搜索聚合
node.ingest: false          #是否为摄取节点,可以执行由一个或多个摄取处理器组成的预处理管道
path:data:                   #默认将插件、日志以及数据配置在安装目录,建议拆分- /srv/data/elasticsearch//0/- /srv/data/elasticsearch//1/logs: /srv/logs/elasticsearch/
http:host: es1port: 9007
network.host: es1
transport.tcp.port: 9002
discovery.zen.minimum_master_nodes: 2 #需要多少个node选举通过才能当上master,应设置为master候选节点的法定个数((master候选节点个数/2)+1)。
gateway:recover_after_nodes: 2   #至少要有几个节点在线,集群才可用expected_nodes: 2        #集群正常情况下应该存活的节点个数recover_after_time: 1m   #等待多长时间后才进行数据恢复
discovery.zen.ping:unicast.hosts: ['es1:9002','es2:9002','es3:9002']#单播列表,至少列出集群中一部分节点,当一个节点联系到列表中的成员时,可以获得整个集群所有节点的状态,然后它会联系master节点,并加入集群thread_pool:bulk:size: 3queue_size: 300index:size: 3queue_size: 300bootstrap:memory_lock : true  #避免系统swapping来提高性能system_call_filter: false #Centos6不支持SecComp,设置为false,不进行检测
action.destructive_requires_name: true #在删除索引时是否指定索引名称,设置为true禁止允许通过通配符或_all删除索引
indices:fielddata.cache.size: 40%  #设置fielddata缓存的最大大小,Fielddata cache主要用于字段(field)的排序和聚合。Elasticsearch使用Fielddata和Filter两种主要类型的缓存来更快地提供搜索请求 breaker.total.limit: 70%  #通过设置parent-level breaker指定所有breaker可以使用的内存总量,默认为JVM堆的70%。Elasticsearch包含多个断路器,用于防止操作引起的OutOfMemoryError。breaker.request.limit: 60% #阻止每个请求数据结构超过一定数量的内存,默认为JVM堆的60%store.throttle.max_bytes_per_sec: 500mb #存储节流限制,默认为20mb.recovery.max_bytes_per_sec: 20mb #从0.90.1版开始,默认为20mb.monitor.jvm.gc.overhead:warn: 60info: 50debug: 40cluster.routing.allocation:node_concurrent_recoveries: 1  #允许在一个节点上发生多少次并发恢复。默认为2cluster_concurrent_rebalance: 1 #允许集群范围内分片并发重平衡的数量,默认为2

使用logstash同步同步单个index

# cat index2index.conf
input {elasticsearch {hosts => ["es1:9007"]         #老ES集群访问地址index => "messages-20180401"  #需要同步的索引名称size => 1000scroll => "1m"codec => "json"docinfo => true}
}output {elasticsearch {hosts => ["es-id.elasticsearch.aliyuncs.com:9200"] #阿里云ES访问地址user => "elastic"         #默认为 elasticpassword => "123456789"   #购买阿里云ES界面中指定的密码,或初始化 Kibana 时指定的密码index => "messages-20180401"  #在新ES集群中的索引名}stdout { codec => rubydebug { metadata => true } }}
# logstash -f index2index.conf

在目标的elasticsearch中看到已经同步的index

使用Shell脚本同步单个index

# cat sync.sh
#!/bin/bash
# file:reindex.sh
indexName="sync"           #需要同步的索引名称
newClusterUser="elastic"   #默认为 elastic
newClusterPass="123456789" #购买阿里云ES界面中指定的密码,或初始化 Kibana 时指定的密码
newClusterHost="es-id.elasticsearch.aliyuncs.com:9200" #阿里云ES访问地址
oldClusterHost="http://192.168.0.79:9007"  #老ES集群访问地址
curl -u ${newClusterUser}:${newClusterPass} -XPOST "http://${newClusterHost}/_reindex?pretty" -H "Content-Type: application/json" -d'{"source": {"remote": {"host": "'${oldClusterHost}'"},"index": "'${indexName}'","query": {"match_all": {}}},"dest": {"index": "'${indexName}'"}
}'
执行成功返回
# sh sync.sh
{"took" : 418,"timed_out" : false,"total" : 151,"updated" : 151,"created" : 0,"deleted" : 0,"batches" : 1,"version_conflicts" : 0,"noops" : 0,"retries" : {"bulk" : 0,"search" : 0},"throttled_millis" : 0,"requests_per_second" : -1.0,"throttled_until_millis" : 0,"failures" : [ ]
}

TIPS

ES启动报错

[2018-04-08T11:39:20,428][ERROR][o.e.b.Bootstrap          ] Exception
java.lang.RuntimeException: can not run elasticsearch as root  #需要新建非roo用户启动进程
[2018-04-08T11:40:46,187][ERROR][o.e.b.Bootstrap          ] [es1] node validation exception
[1] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]  # 最大文件描述符受限

调整最大文件打开数和最大进程数限制

$ tail /etc/security/limits.conf
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
* soft memlock unlimited
* hard memlock unlimited
search  soft  nofile  65536
search  hard  nofile  65536
search  soft  nproc  2048
search  hard  nproc  2048

执行同步脚本报错

{"error" : {"root_cause" : [{"type" : "illegal_argument_exception","reason" : "[192.168.0.79:9001] not whitelisted in reindex.remote.whitelist"}],"type" : "illegal_argument_exception","reason" : "[192.168.0.79:9001] not whitelisted in reindex.remote.whitelist"},"status" : 400
}

由于通过IP + Port访问老集群,必须在新集群的yml中配置 reindex 白名单

执行同步脚本报错

{"error" : {"root_cause" : [{"type" : "connect_exception","reason" : null}],"type" : "connect_exception","reason" : null},"status" : 500
}

同时需要在ECS所属的安全组放行公网入方向访问自建ES集群的端口,reindex 是阿里云ES访问自建ES。即使自建ES与阿里云ES在同一地域,ECS上测试访问阿里云ES并不能保证阿里云的ES能访问到自建ES

自建ES迁移至阿里云ES(使用脚本及logstash同步)相关推荐

  1. 自建ES通过OSS快照迁移至阿里云ES

    在同一个VPC内使用3台ECS部署自建ES集群,可以通过给自建Elasticsearch打快照存储到OSS,在利用OSS中的快照进行数据库恢复,将自建Elasticsearch迁移至阿里云Elasti ...

  2. 数据传输服务 DTS > 数据迁移 > 从自建数据库迁移至阿里云 > 源库为MySQL > 从自建MySQL迁移至RDS MySQL

    从自建MySQL迁移至RDS MySQL 更新时间:2020-08-20 10:49:52 编辑我的收藏 本页目录 前提条件 注意事项 费用说明 迁移类型说明 增量数据迁移支持同步的SQL操作 数据库 ...

  3. 自建Hive数据仓库跨版本迁移到阿里云Databricks数据洞察

    简介:客户在IDC或者公有云环境自建Hadoop集群构建数据仓库和分析系统,购买阿里云Databricks数据洞察集群之后,涉及到数仓数据和元数据的迁移以及Hive版本的订正更新. 直达最佳实践:[自 ...

  4. 自建Hive数据仓库跨版本迁移到阿里云E-MapReduce

    最佳实践概述 应用场景 客户在IDC或者公有云环境自建Hadoop集群,数据集中保存在HDFS文件系统,同时借助Hive进行常见的ETL任务.客户在决策上云之后,会将自建Hadoop集群的数据迁移到阿 ...

  5. ERP物理机迁移至阿里云实践

    摘要: ERP物理机迁移至阿里云实践 机房选型 随着公司的不断发展,业务量逐渐增大,对信息化的要求也越来越高,随之对信息部的要求也越来越多,为此公司决定对现有的信息系统进行升级改造. ERP物理机迁移 ...

  6. 创业公司为什么不自建MySQL而使用阿里云的 RDS

    创业公司为什么不自建MySQL而使用阿里云的 RDS 在脉脉看到一条职言:"不明白有人居然使用阿里云的 RDS?" RDS 是什么? 关系型数据库RDS(Relational Da ...

  7. 基于TCP协议的GPS定位器设备迁移到阿里云IoT物联网平台实践——实践类

    背景 GPS定位器是内置了GPS模块和移动通信模块的终端,用来将GPS模块获得的定位数据通过移动通信模块传至Internet上的一台服务器上,从而可以实现在电脑或手机上查询终端位置. GPS定位器可用 ...

  8. 【云计算的1024种玩法】轻松将其他云的对象储存迁移至阿里云OSS

    前言 当使用了像 OSS.S3 这样的开放对象储存的 PaaS 产品后,一面上体验到了网站核心同附件库分离的安全性.高性能以及免维护的便利性,一面上却又怕在一个厂家的对象储存上扎根了就无法迁移,会被厂 ...

  9. 阿里云一键建站产品,阿里云自营建站-中小企业建站首选...

    阿里云推出的自营建站服务,这对于中小企业来说简直是福利了,现在一般的公司都开始有了自己的官网,有可能就是因为你的官网设计的标准,大气,客户就会对你的信任度增加,从而促进一笔不小的订单,这都是有可能的啊 ...

最新文章

  1. appium简明教程(7)——Desired Capabilities详解
  2. qml dockwidget窗口停靠
  3. oenwrt 进不了bios_win7进不了bios原因及解决办法
  4. Okhttp的封装和回调
  5. .net函数查询_用python实现多文档查询
  6. 计算机硬件调查PPT,调查报告 ppt
  7. iphone-common-codes-ccteam源代码 CCCompile.h
  8. 如何拒绝国外IP/屏蔽国外IP访问服务器?
  9. 《深入浅出统计学》总结
  10. 【bzoj1984】【坑】月下“毛景树” 树链剖分
  11. 车床角度计算用计算机,3角函数(数控车床角度计算公式)
  12. VS2019 +easyx 实现闪烁的星空(夜景)
  13. java 世界时间_Java对世界不同时区timezone之间时间转换的处理方法
  14. c语言 continue什么意思,continue在C语言中什么意思?
  15. 同心拼图(concentric mosaics)
  16. 神操作 | 不重启 JVM,替换掉已经加载的类,偷天换日?
  17. shader基础学习摘要(二) 兰伯特光照模型
  18. 石门一中2021年高考成绩查询,石门一中火了!2020年高考成绩再次刷新记录
  19. 英国电信 云计算还不成熟
  20. 【独家】同程艺龙作恶记(二):屡教不改或成公司基因,再看更深的买机票套路...

热门文章

  1. 果然,武汉驶上了AI高速路
  2. Facebook狂撒20万美元,悬赏用AI检测P图盗版问题
  3. 只用CPU开发自动驾驶轮船,他们居然做到了
  4. word2vec_文本相似度
  5. JS中相等运算符 == 隐式转换
  6. Mybatis操作数据库实现主键自增长
  7. 微软Windows Server 2008之二计算机名称
  8. RR隔离级别下通过next-key locks 避免幻影读
  9. php PDO php.ini
  10. Linux无盘工作站架设实例