最后更新时间:2019年10月

张锐Jangrui

Linux 系统运维工程师 / 深圳

男 · 1993.03

专科 · 2016.06

参加工作 · 2016.07

工作经历

2016.07 ~ 至今 工作

广铁集团公司

  • 负责服务器系统、数据库、常用支撑软件的安装、维护、故障迁移处理;
  • 负责服务器规划、监控、数据备份、日志分析、性能调优;
  • 负责项目 docker 化,实现平台一致性;
  • 研究运维相关技术,根据需求定制运维技术方案等。
  • 项目经历

    项目

    广铁集团监控系统

    项目描述

    实现现有监控平台统一化,减少不必要的工作量。

    项目要求

  • 实现 IT 基础设施全局监控,包括网络系统监控、服务器监控、操作系统监控、数据库监控、中间件监控、应用监控等。
  • 提供告警分析机制,快速定位问题根源并找到相应的解决方案,缩短故障解决时间,减少维护成本。
  • 提供各类资源的分析报表,从各个侧面、各个角度反映系统的运行状况、性能情况,为系统升级、改造、扩容提供科学依据。
  • 提供大屏幕整合信息,展示资源运行情况、性能状况等,使得领导、管理者、技术人员能迅速了解问题所在。
  • 任务描述

  • 团队对 zabbix 熟悉度高,而且文档多,技术成熟,可满足需求,直接选择 zabbix 平台;
  • 数据库采用三节点 MySQL Galera Cluster 集群,后期根据业务需求增加集群数量并使用中间件做数据切分;
  • 部署 Zabbix 服务及各类组件,后期添加 Zabbix Proxy 服务实现分区域监控,减轻 Server 压力;
  • 利用 Ansible 实现 Zabbix Agent 自动化部署;
  • 根据各类业务服务编写监控脚本和模板;
  • 部署 grafana 并配置 zabbix 数据源,实现大屏展示;
  • 后期借助 MySQL 中间件实现对 Zabbix 产生的 history、history_text、history_uint 等大表进行读写分离,进一步减轻压力;
  • Zabbix 的历史数据对接 Elasticsearch,方便历史数据查询;
  • 项目总结

    Zabbix 整体架构过大,各服务器功能应独立分类,应使用分布式 Proxy 部署,维护的时候很方便,例如清理 Zabbix 的历史数据,Zabbix 停掉后,可以设置监控数据在 proxy 端保留时间长一些,等维护好后 Proxy 会同步数据到 Server,尽量减少数据丢失。

    优化网络延迟,不可忽略的存在;例如,两个同样硬件配置的 Proxy ,A 的网络延迟为10ms,NVPS 约为 640,B 的网络延迟在 230ms,NVPS 约为 500,A 能够在 2-3 秒内发送 15000 个值,B 仅发送了 1000 个值。

    可以考虑更换 ssd 固态硬盘,提高 MySQL 服务器 IO 性能。

    项目

    广铁集团日志分析平台

    项目描述

    搭建支持高并发高可靠的日志分析平台,方便开发人员快速的检索日志,排查问题,同时提供友好的分析和统计的界面。

    项目要求

  • 不需要开发人员登录生产服务器就能查看日志;
  • 统一规范日志的配置和输出格式;
  • 实时的将日志文件从服务器中迁出;
  • 提供日志的检索和统计分析的平台;
  • 任务描述

  • 针对需求,首选开源免费解决方案,采用了业界通用的解决方案 ELK。且 ELK 支持多种日志类型,技术成熟,文档多,非常符合预期。
  • 为了处理大型数据集,实现容错和高可用性采用 ES Cluster,后期根据不同业务对集群分类部署,避免出现,一个业务拖垮了整个 ES 集群。
  • 考虑到大并发情况下,日志传输峰值比较大,Logstash 直接写入 ES 势必会造成服务器上占用系统资源较高,性能不佳,采用 Redis 作缓存,后期改用 Kafka,Kafka 的吞吐量和集群模式都比 Redis 更优秀,同时 Kafka 作为一个订阅消息系统,还具备每秒百万级别的高吞吐量,持久性的、分布式的特点等。
  • 引入 Filebeat 组件,相比于 Logstash,Filebeat 更轻量,占用资源更少,所占系统的 CPU 和内存几乎可以忽略不计。
  • ELK 结合 Zabbix 实现异常日志触发告警。
  • 最终方案:

    Kibana:负责提供可视化界面,生成图文报表;

    Elasticsearch:负责存储最终数据、建立索引、提供搜索功能;

    Kafka:负责提供高吞吐、低延迟的缓存队列服务;

    Logstash:负责日志的过滤,写入 Elasticsearch;

    Filebeat:负责各种日志的收集。

  • 项目总结

    对分业务数据进行冷热分离,最大化利用资源。每个业务准备两个 ES 集群,可以理解为冷热集群。7天以内的数据,存入热集群,以 SSD 存储索引。超过7天,就进入冷集群,以 SATA 存储索引,这么一改动,性能又得到提升。

    Redis 受限于机器内存,当内存达到 Max,数据就会抛弃,无法保证消息的可靠性。在 Redis 中内存越大,触发持久化的操作阻塞主线程的时间就越长,相比之下,Kafka 的数据是堆积在硬盘中,不存在这个问题。

    技能清单

    WEB 服务

    熟练

    常用服务:Nginx、Tomcat;

    数据库服务

    熟练

    常用服务:Mysql(Mariadb、Percona)

    集群方案:PXC、MHA、MGR 方案;

    数据切分:MyCat;

    缓存服务

    熟练

    常用服务:Redis

    集群方案:Codis Cluster、Redis Cluster;

    负载服务

    熟练

    常用服务:LVS、HAProxy、Keepalived

    熟悉业务:反向代理、负载均衡、双机热备;

    监控服务

    一般

    常用服务:Zabbix

    集群方案:Zabbix 分布式架构;

    日志服务

    一般

    常用服务:Elasticsearch、Kibana、Logstash

    集群方案:Filebeat 架构;

    部署工具

    掌握

    常用服务:GitLab、Docker、Ansible

    熟悉业务:ansible + docker 实现自动化部署;

    个人项目

    运维笔记(notes.jangrui.com)

    热爱开源精神,拥抱开源社区,学习新技术、记录学习笔记。

    github.com/jangrui/docker-compose

  • ELK
  • Zabbix
  • LAMP
  • LNMP
  • WordPress
  • Minio Cluster
  • Docker Registry
  • Zookeeper Cluster
  • Redis Cluster
  • Redis Codis Cluster
  • MySQL Galera Cluster
  • MySQL Innodb Cluster
  • MySQL Replicas Cluster
  • github.com/jangrui/docker-stack

  • Portainer
  • Minio Cluster
  • MySQL Galera Cluster
  • PDF简历