运维项⽬经历案例
⼀,期中项⽬经验⽰例
1.1 新服务器上线搭建系统环境
1,根据现有结构部署⼯具(PXE+kickstart)
2,结合应⽤系统需求定制部署模版
3,制作系统优化等⼀键执⾏脚本
4,⾃动化部署实施
5,根据定制的优化内容对⾃动化部署效果进⾏检验
1.2 新服务器上线搭建软件环境
1,在新批量部署的服务器上部署LNMP环境;
2,对批量化部署的环境进⾏效果检验;
3,编制Nginx配置⽂件并批量化部署;
4,根据需求做Nginx服务相关的优化(expires/gizp等)
1.3 web服务器架构调整(从单点到集的设计)
需求:解决⽹站web服务器单点故障的问题
职责:
1,研究多种负载均衡⽅案
主要针对lvs+keepalived及nginx+keepalived进⾏研究
2,编写新架构⽅案实施项⽬书与实施⽇程
3,新系统部署与⽇常维护
把公司原来的多数单点服务器变成了集,提升了⽹站的稳定性与⾼并发的应⽤场景
1.4 服务器⽤户权限管理改造⽅案与实施项⽬
需求:解决公司root权限泛滥问题
职责:
1,提出权限整改解决⽅案,改进公司root权限泛滥的现状
2,召集⼤家开会商讨并确定⽅案后推进实施
3,实施后使得公司的权限管理更加清晰了(总结维护),从根本上降低了内部操作等不规范及安全隐患的发⽣。
问题1:你们公司是如何来管理⽤户权限的?
答:我们是通过sudo来管理权限的,不论是运维还是开发,⼀般都不会给root权限,只有核⼼级开发或者研发总监或以上级别的我们才可能给相应服务器级别的权限;对核⼼运维或者运维总监才会给root权限
问题2:在规划服务器的时候,在服务器上都跑⼏个普通⽤户?
答:我们的普通⽤户是根据项⽬来的,在不同公司它的项⽬产品线不⼀样。我们公司只有⼗⼏个产品线,我们为每⼀个项⽬建⽴⼀个普通⽤户,因此不论nginx还是tomcat都是跑在普通⽤户下。
问题3:那⼀些公⽤服务呢?⽐如memcached或者redis。
答:这些公共服务也可以跑在普通⽤户下,总的来说是这样的,我对运维的理解是,运维做运维的事情,开发做开发的事情。运维负责⽹络系统,只要系统没有故障,只要⽹络没有故障,只要系统资源还够⽤,那么我们运维的职责就到位了。⽽我们公司的理念是项⽬负责制,也就是说每个项⽬的责任⼈是开发,我们运维⼤概占30%-40%的责任。我们的开发占60%的责任。当进程上线的时候,这个服务是由普通⽤户跑的。它的每个站点⽬录都是普通⽤户的权限,也就是700的权限普通⽤户,这个是最安全的。⽆论是项⽬的启动,停⽌,以及代码上线,⽇志收集,⽇志分析都是通过我们进程跑的普通⽤户实现的。我们在管理这个项⽬的时候,我们可以把开发的⽤户加到这个项⽬组⾥⾯,这样负责相应项⽬的开发⼈员就有对应项⽬的所有权限。
nginx部署前端项目1.5 服务器⽇志审计项⽬提出与实施
1,权限控制后进⼀步实施对所有⽤户⽇志记录⽅案
2,通过sudo和rsyslog配合实现对所有⽤户进⾏⽇志审计并将记录集中管理
3,实施后让所有运维和开发的所有执⾏的命令都有记录可查,杜绝了内部⼈员的操作安全隐患
1.6 全⽹服务器数据批量分发与批量管理
需求:公司服务器逐渐增多,因此管理起来很⿇烦,于是提出解决批量分发管理解决⽅案,进⾏全⽹服务器数据分发与管理
职责:
1,针对ansible分发⼯具及ssh key+rsync两套分发管理⽅案研究,最终选择简单易于维护并且强⼤的ssh key+rsync⽅案
2,⼀台IDC内⽹服务器,作为分发机器,对固定普通⽤户做sshkey认证(注意不是root),需要root权限,通过sudo来控制,减少安全隐患。
3,对于分发机进⾏安全配置,例如,去掉外部IP,开启防⽕墙。实施完毕,运维管理的效率提⾼了很多,因此得到了公司的嘉奖。
1.7 全⽹服务器数据备份⽅案提出及负责实施
需求:为公司数据做⼀个完整的备份系统
职责:
1,针对公司重要数据备份混乱状态和领导提出备份全⽹数据解决⽅案
2,通过本地打包备份,然后rsync结合inotify应⽤把全⽹数据统⼀备份到⼀个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果
3,定期将IDC机房的数据备份公司的内部服务器,防⽌地震⽕灾等问题导致的数据丢失。
1.8 MySQL数据库实现主从同步,及完整备份解决⽅案
1,在进⼊公司之前前任运维丢失数据,因此⽼⼤很重视数据安全这⽅⾯
2,我提出并上线了MySQL数据库备份⽅案和MySQL架构⽅案
3,⽅案主要是在从库上开启binlog及按天分库分表全备,推送到备份服务器
4,将备份的数据定期恢复到测试库给开发使⽤
5,制定⼈⼯更新数据库的流程及制度
1.9 LNMP架构优化⽅案
1,公司使⽤LNMP架构,优化较少,运⾏效果不佳
2,我提出了LNMP架构的优化⽅案
3,⽅案主要是Linux系统优化,nginx服务优化,php服务优化,MySQL优化
4,优化完成后,LNMP架构性能有很⼤提⾼。
1.10 全⽹服务器监控解决⽅案实施
需求:到公司后,没有任何监控系统,每次故障⽆法报警,每次故障对公司的⽹站都造成了很⼤的影响,因此我⽤⾃⼰已经掌握的监控技术,以及查询资料撰写解决⽅案,提交给公司领导,以改善服务器报警不及时的问题,最⼤限度的保证公司⽹站故障及时处理
职责:
1,根据需求选定最流⾏的监控软件zabbix进⾏研究。
2,根据不同服务器具体需求定制模版进⾏监控实时报警
实施完毕后,做到了⼤部分的故障报警都能及时有效的汇报给管理员,为⽹站的稳定争取了时间
1.11 搭建jumpserver跳板机管理混乱账户
起⽌时间: 2016/03-2016/04
软件环境: CentOS6.5
开发⼯具: jumpserver
项⽬描述:在投⼊⼯作的⼏个⽉⾥,我发现公司的服务器运维管理中对于服务器账号的管理⼗分混乱,有的运维甚⾄有好⼏个⼯作账号,⽽且能随时登陆root账户。因此,每当有运维⼯作⼈员调岗或离职,服务器的所有账户密码都会被重新改变⼀次,不仅费时费⼒,密码也不好记忆,⼗分的⿇烦。于是,⼏经思考,我向领导建议启⽤开源型的跳板机jumpserver来改善⽬前混乱的状况。
项⽬职责:
部署⼀台服务器为jumpserver跳板机
⽤xshell登陆跳板机进⾏授权测试
1.12 NFS+keepalived⾼可⽤架构
如期中架构图
1.13 MySQL多实例及主从复制
如期中架构图
1.14 改善服务器存储问题
需求:减轻访问⾼峰阶段存储压⼒
职责:
1,Web前端存储使⽤NFS主备结构
2,⽤户写⼊数据,如图⽚,附件等,存储到NFS主上⾯,⽤户的读访问NFS备
3,NFS主备,使⽤rsync+inotify进⾏数据同步
4,NFS存储数据量不⼤,采⽤sersync把数据推送到web前端,尽量较少前端服务访问后端服务器的请求,减轻NFS存储压⼒
5,数据备份的安全有了保障,不⽤担⼼数据的丢失。
⼆,期末项⽬经验⽰例
2.1 航天⼀院第三产业部--------院综合服务集
项⽬需求:
该项⽬主要实现的是航天⼀院内部服务平台搭建⽬标是搭建⼀个安全、⾼效、稳定服务器集架构。提供航天各院的服务综合平台。
1
项⽬实施:
前段采⽤负载均衡搭配Squid集、搭配硬件防⽕墙,隔离内⽹与外⽹,并且能提供监控⽹络和记录传输信息的功能,加强局域⽹的安全性等.实现前端调度服务器的⾼可⽤、中间web服务器的负载均衡、后端数据库服务器的⾼可⽤、监控服务器监控集中的每⼀台服务器的私有数据和公有数据前端调度服务器采⽤的软件是Keepalived和Nginx,中间Web服务器采⽤的软件是Nginx,并发数⾼,⽽且相对稳定
后端数据库服务器采⽤的是读写分离,写库MySQL+MHA 双主互为主从模式。读从库使⽤负载均衡LVS+Keepalived+MySQL , 并使⽤Memcached缓存集缓存从数据库.Web服务器采⽤Nginx来搭建⽹站服务器,并结合Inotify+Rsync实现⽹站数据同步.
监控服务器采⽤的是Zabbix,监控各服务器的运⾏状态及服务状态。
责任描述:
 本⼈在此项⽬中主要负责服务器服务平台的搭建,为了实现统⼀性,特编写了shell脚本,使得服务器部署更加标准化
2.2 NFS集升级改造
需求分析:
1、 原共享存储服务器NFS的⽅式、存在性能瓶颈和单点故障的问题
2、 主NFS存储系统宕机后,报警管理员来⼈为⼿⼯根据同步的⽇志记录选择最快的NFS存储系统改为主,⽅案简单可⾏,但是需要⼈⼯处理.难免操作失误或者时间过长。
解决⽅案:
1、 使⽤分布式⽂件存储管理系统MFS替换NFS
2、 ⽬前MFS元数据服务器存在单点问题,因此我们通过DRBD提供磁盘及时同步,通过HeartBeat提供Failover,来达到⾼可⽤
3、采⽤MFS+DRBD+Heartbeat⾼可⽤服务解决⽅案,这个解决⽅案可以有效解决主MFS存储系统单点的问题,当主MFS存储宕机后,可以实现把主MFS存储系统从⼀个主节点切换到另外⼀个备节点,⽽新的主MFS存储系统还会⾃动和所有其他的从MFS存储系统进⾏同步,且新主MFS存储系统的数据和宕机瞬间的主MFS存储系统⼏乎完全⼀致,这个切换过程完全是⾃动进⾏的,从⽽实现了MFS存储系统的热备⽅案. 快速故障恢复,提⾼业务可靠性.
责任描述:
本⼈在此项⽬中主要负责,项⽬现场协调,所有服务器服务平台的搭建,编写了shell脚本,使得服务器部署更加标准化
2.3 MySQL集读写分离及⾼可⽤⽅案
需求分析:
1、 新⽅案保证服务性能和I/O满⾜企业多台终端的快速响应需求。
2、 保证系统长期不间断的稳定运⾏。保证成本合理性。
3、 满⾜数据库系统的⾼可⽤性和可靠性。
解决⽅案:
1、 底层5台MySQL 数据库,⼀主四从. 开启半同步复制.提⾼数据安全
2、 使⽤中间件Atlas 实现读写分离与读负载均衡,提⾼与程序端解耦。
3、 在使⽤两台服务器搭建LVS+Keepalived 对Atlas 服务器做负载均衡与⾼可⽤
4、 搭建⼀台主MHA服务器管理数据库主库热备问题.
5、 该⽅案极⼤减少服务器资源浪费,实现故障30秒切换,极⼤保证数据库⼀致性
责任描述:
主要负责所有服务器服务平台的搭建,⽅案设计,编写脚本。
2.4 NFS+DRBD+heartbeat⾼可⽤解决⽅案
软件环境:Centos6.8
硬件环境:DELL R710
实施时间:2015年3⽉
刚进公司不久,后端的NFS服务器在⽹络请求的⾼峰期,偶尔会宕机,使WEB服务器的挂载请求⽆法⾃动切换到备份服务器,导致web服务器⽆法正常使⽤,造成⽹络服务中⽌。公司领导为了避免以后出现类似的情况要求我做⼀个解决⽅案。通过对NFS服务器CPU和内存的负载情况进⾏观察,以及对NFS服务器之前的主要硬件的负载数据进⾏查询,并进⾏仔细分析,我提交了⼀份以DRBD+heartbeat+NFS的⽅案来解决现有问题,得到领导的批准由我来实施这个⽅案。
项⽬职责:1、负责项⽬的整体规划和部署;
2、负责heartbeat⾃动切换脚本的编写;
3、负责NFS服务搭架的主要框架的搭架;
4、通过对故障的模拟,和对元数据服务器、数据存储服务器运⾏数据的观察,和之前的情况进⾏数据⽐较,形成报告;
5、项⽬实施报告的撰写。
后期改善:
通过配置多条独⽴的物理连接,以避免Heartbeat通信线路本⾝存在的单点故障,尽量地减少“脑裂”的发⽣机会。通过对ha.cf配置⽂件中,keepalive等选项的设置,来缩短主从服务器的切换时间。在DRBD中,对replication进程进⾏调整。处理Master端的坏块问题。
2.5 移动端部署调优及上线
运⾏环境:CentOS-6.6、DELL R730
主要功能:分离移动端与PC业务
运⽤技术:Nginx七层负载、tomcat8+jdk1.8、MHA实现mysql⾼可⽤(mysql–5.6.17)、
php-5.6.30、shell脚本发送数据检测信息
技术要点:
利⽤Nginx七层调度实现PC端与移动端业务分离、动静分离
七层调度+Keepalived⾼可⽤⽅案
Nginx整合淘宝健康检测模块
代码读写分离+数据库mha成熟⾼可⽤⽅案
定时+脚本mysql数据备份及检测、发送检测结果信息到管理员⼿机
web服务优化,php优化,tomcat优化
2.6 squid 透明代理
1、系统环境:CentOS6.5
2、软件⼯具:squid-3.0
3、项⽬描述:
之前公司使⽤的是SNAT上⽹,造成员⼯在⼯作期间利⽤公司⽹络带宽浏览与⼯作⽆
关的⽹站视频,导致⼯作效率降低;迅雷、P2P等应⽤的泛滥,导致⽹络拥堵,企业
⽹带宽资源紧张。
4、职责:
a) 使⽤squid代理服务对公司员⼯的上⽹⾏为进⾏管控;
b) 拟定企业上⽹⾏为管控⽅案;
c) 实现对内⽹的安全防控功能,过滤恶意⽹页,防范恶意攻击;
d) 限制⽹络⾏为,对迅雷、P2P等下载软件进⾏智能控制;
e) 对上⽹⾏为进⾏精细智能管理。
5、项⽬成果:
项⽬实施完毕后,员⼯⼯作效率明显提升,保障了企业⽹带宽资源。