9月23日GOPS2016上海站 ·海量运维技能挑战赛刚结束不久,作为学霸的你,是否还在回味当时的题目呢?小编特意奉上原题与解析思路,仅供参考。
Q1 故障定位 800分
从所有logsvr模块(5000台)服务器上对应的/data/logsvr/error*.log中找出”IO operation failed” 的行,再将对应的第四个字段值求和,并找出求和值大于1024的服务器数量。
评分要求:成功完成即可得800分。
目的: 考察shell的基本运用
考点:
1. 需要对文件情况进行基本判断
2. 熟练运用shell下的各种命令功能
3. 对awk有一定程度的了解及应用
4. 跨区域海量服务器管理能力解题思路:
1. 必须对目录是否存在,文件是否存在进行判断,避免执行错误
2. 采用逐步求精的方法,先获得文件,然后获得关键字行,继而获得指定列并累加,最后判断是否累加大于1024
Q2 大文件分发 500+300分
从上海区域的堡垒机,分发923MB的/data/datasvr_v1.tar.gz文件到广州datasvr(200台)和北美区域datasvr(200台)模块服务器的“/data/”目录下。
评分要求:如果完成对广州datasvr模块的分发,即可得500分,如果额外完成对北美区域datasvr模块下的服务器分发,再加300分。
目的:模拟大文件快速分发的场景
考点:
大文件,海量服务器批量分发的能力
解题思路:
通过类BT工具快速分发到各个业务服务器上
Q3 服务器扩容 500分
广州区域logicsvr模块下一共有1750台服务器,目前已经有500台服务器运行了logicsvr进程,现由于用户访问量剧增,需要完成logicsvr模块下剩余的1250台服务器的扩容。
扩容方法:修改/data/logicsvr/logicsvr.conf中的listen_addr配置为本机的内网ip,如listen_addr=192.168.1.100,然后再执行命令“/data/logicsvr/logicsvr”启动进程。
评分要求:所有服务器上的进程正常运行,即可得500分。
目的:模拟服务快速扩容的场景
考点:
1. 不依赖配置系统的情况下在海量服务器列表中快速确定某服务的iplist
2. 批量分发、布署的能力
3. 文本编辑工具的应用能力
解题思路:
1. 通过类Ansible工具扫描全网,确定已布署了logicsvr和未布署logicsvr的iplist
2. 从已布置的iplist提取出1个ip, 清理无效文件后(主要是日志)制作布署包
3. 通过Ansible等批量工具下发到未布署的iplist,拉起服务
4. 检查、确认布署结果,对失败的重做
Q4 在线采集 600+600分
现需要采集广州、上海、北美3个区域onlinesvr模块(每个区域100台)的在线人数,记录在线人数的文件为:“/data/onlinesvr/online_svr.log”(文件内容为动态追加写入的数据),内容的格式为:时间戳,在线人数,如:1472193068,184。
答题要求:请分别将3个区域的在线人数按照对应的时间戳进行汇总,并将汇总后的数据追加写入到该区域堡垒机的文件:“/data/onlinesvr/online_sum”
评分要求:每个区域数据汇总正确即可得200分,三个区域正确可得600分,如使用实时汇总方案该区域再加200分。
目的:模拟在线监控的场景
考点:
1. 大量机器上获取数据的能力
2. 数据统计的能力
3. 实时数据采集、上报和汇总的能力
解题思路:
1. 非实时:从所有onlinesvr模块的机器上拉取指定的文件到对应的堡垒机,再按时间戳汇总统计后追加输出到指定的文件
2. 实时:在所有onlinesvr模块的机器上部署实时获取数据的脚本,实时上报到堡垒机的服务端,服务端实时汇总数据后追加写入到指定的文件
Q5 进程监控 800分
某业务在广州、上海、北美3个区域新上线了loginsvr模块(每个区域10台),程序部署在/data/loginsvr/目录下,进程名为“login_svr”,比赛开始20-25分钟期间此进程会不定期被kill,故需要将login_svr监控起来,/data/loginsvr/start_loginsvr.sh是启动login_svr进程的脚本。
评分要求:需计算出有多少台服务器被kill过,一共被kill过多少次,而且最终进程需是正常运行状态,答案正确即得800分。
考点:
1. 编写监控进程脚本能力
2. 简单跨区域汇总结果能力
解题思路:
1. 编写进程监控脚本,检测到进程不存在,执行启动脚本将其拉起,并记录拉起时间做标记
2. 批量分发到logsvr模块服务器,部署crontab,最小粒度监控周期
3. 用批量工具(Ansible)获取每台机器上监控脚本日志,日志不为空的服务器即为被kill的服务器数,同理,日志行数汇总后即可知道该模块下的进程共被拉起多少次
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/56111.html