设为首页 收藏本站
查看: 1456|回复: 0

[经验分享] ELK之ES2.4.1双实例平滑升级至5.2.1踩坑并supervisor管理记

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-1 13:23:54 | 显示全部楼层 |阅读模式
ES老集群用的2.4.1版本,跑的比较好就一直没动,最近看资料ES5.X已经稳定,并且性能有较大提升,心里就发痒了,但由于业务要保持高可用的属性,就得想一个平滑升级的方案,最后想到了多实例过度的办法,5.X版本网上介绍配置变化较大,也做好了踩坑准备,确定好要升级后,立刻动手。一、对应升级改造方案

  使用端口9220和9330 安装并配置好新的ES5.2.1实例——>关掉logstash并将ES2.4.1实例堆栈调小重启(kafka保留3个小时日志所以不会丢失)——>启动ES5.2.1并将logstash开启指向ES5.2.1——>安装新版kibana实例做好指向,老数据用http://host/old访问——>ES5.2.1配置调优。

二、升级后统一用supervisord-monitor管理
github:https://github.com/mlazarov/supervisord-monitor
wKioL1iz3GvBu8mDAAGvMs78Wgw928.png

三、周末跑了一天ES的cpu、IO和thread_pool的监控数据如下(无search)
wKiom1iz3MGx3tKQAAKfoNS6Wh8608.png

wKiom1iz3OfReZAmAAEKu6aP5q0812.png

从监控数据看最高的活跃进程数还是bulk的批量处理操作,如果不调优,直接会block。
四、升级过程——编写了ES5.2.1的安装脚本如下
  之前用的rpm包,后考虑直接使用tar包安装,对于需要系统做的调优操作,直接编写自动化安装脚本,一键将所有系统参数配置后,将环境搭建好。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#/bin/sh
id elasticsearch || useradd elasticsearch -s /sbin/nologin   #添加用户
grep "* - nofile 512000" /etc/security/limits.conf || echo  "* - nofile 512000"  >> /etc/security/limits.conf  #修改文件描述符数量
grep "elasticsearch - nproc unlimited" /etc/security/limits.conf || echo "elasticsearch - nproc unlimited"   >> /etc/security/limits.conf  #修改最大打开进程数数量
grep "fs.file-max = 1024000" /etc/sysctl.conf || echo "fs.file-max = 1024000"  >> /etc/sysctl.conf  #修改系统文件描述符
grep "vm.max_map_count = 262144" /etc/sysctl.conf || echo "vm.max_map_count = 262144"  >>  /etc/sysctl.conf  #修改程序最大管理的vm
sysctl -p
cd /usr/local/src
[ ! -f /usr/local/src/elasticsearch-5.2.1.zip ] && wget
https://artifacts.elastic.co/dow ... ticsearch-5.2.1.zip
[ ! -d /usr/local/src/elasticsearch-5.2.1 ] && unzip elasticsearch-5.2.1.zip
mv elasticsearch-5.2.1 /usr/local/
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-5.2.1  #修改拥有者所有组
sed -i 's/-XX:+UseConcMarkSweepGC/-XX:+UseG1GC/' /usr/local/elasticsearch-5.2.1/config/jvm.options    #GC方式修改为G1
sed -i 's/-XX:CMSInitiatingOccupancyFraction=75/-XX:MaxGCPauseMillis=200/' /usr/local/elasticsearch-5.2.1/config/jvm.options
sed -i 's/-XX:+UseCMSInitiatingOccupancyOnly/#-XX:+UseCMSInitiatingOccupancyOnly/' /usr/local/elasticsearch-5.2.1/config/jvm.options



五、升级过程——配置文件、索引相关的更新调优
   升级期间着实踩了不少坑,老版ES索引配置可以直接写到配置文件里,新版是不行的,必须使用api去设置,另外ES2.X版本的进程数调优,在ES5.X我发现调整与否没有影响。配置文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
cluster.name: yz-5search
path.data:  /data1/LogData5/
path.logs:  /data1/LogData5/logs
bootstrap.memory_lock: false   #centos6内核不支持,必须要关闭
bootstrap.system_call_filter: false
network.host: 10.39.40.94
http.port: 9220
transport.tcp.port: 9330
discovery.zen.ping.unicast.hosts: ["10.39.40.94:9330","10.39.40.95:9330","10.39.40.96:9330","10.39.40.97:9330"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"



为了加快索引效率,编写index的模板配置(index配置不允许写到配置文件了),将参数put到es的里,当然模板也可以通过前端logstash指定(要改logtash觉得麻烦),template脚本如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#/bin/sh
#index template
curl -XPUT 'http://10.39.40.94:9220/_template/cms_logs?pretty' -d '{
     "order": 6,                                    #优先级
      "template": "logstash-cms*",                  #正则匹配索引
      "settings": {
             "index.refresh_interval" : "60s",  #索引刷新时间
             "index.number_of_replicas" : "0",  #副本数设置为0
             "index.number_of_shards" : "8",    #分片数设置为8,共4台服务器
             "index.translog.flush_threshold_size" : "768m",  #translog触发flush的阀值
             "index.store.throttle.max_bytes_per_sec" : "500m", #存储的阀值
             "index.translog.durability": "async",              #设置translog异步刷新到硬盘,更注重性能
             "index.merge.scheduler.max_thread_count": "1",     #机械盘设置为1
             "index.routing.allocation.total_shards_per_node": "2"  #每个节点上两个分片
      }
}'



备:如果是更改,将PUT改为POST

日志保留7天,清除的脚本如下,写入计划任务:
1
2
3
4
#!/bin/bash
DATE=`date +%Y.%m.%d.%I`
DATA2=`date +%Y.%m.%d -d'-7 day'`
curl -XDELETE "http://10.39.40.97:9220/logstash-*-${DATA2}*?pretty"




   由于单个索引达到了35G甚至40G以上,于是在logstash层面对建索引数量进行修改,把每天12个索引修改为每天24个索引:
wKioL1iz8ePgwJl0AABVVIEQxVY697.png
logstash的修改如下:
1
2
index => "logstash-cms-front-nginx-%{+YYYY.MM.dd.hh}"  修改为
index => "logstash-cms-front-nginx-%{+YYYY.MM.dd.HH}"



备注:supervisor的安装
1
2
3
easy_install meld3
eays_install pip
easy_install supervisor



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348873-1-1.html 上篇帖子: 新手怎么学ELK啊 下篇帖子: elasticsearch 特殊命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表