Chrisjing的自动化运维体系¶
运维的职业发展¶
自动化运维图¶
(1)云计算的核心竞争力是运维
(2)老板需要可靠,稳定,有保障,(前提是靠运维)
(3)企业对于运维技术要求越来越高,对于知识的储备高!需要理解底层理论。
(4)随着云计算时代的来临,需要涉及运维开发
(5)要学会主导产品的设计及流程。例如设计监控系统,必须先得了解其流程
提示:一个运维产品如何可以成功:解决用户技术上的痛点!
运维两极分化¶
1.操作型运维
2.深入了解技术性运维
运维学习和发展的路线¶
1.将服务搭建起来(部署并运行起来)
2.运用好并深入服务(监控,管理,优化)
3.自动化(服务之间的关联和协同工作)
4.产品设计(例如:如何设计一个监控系统)
系统架构师掌握知识偏管理¶
络,系统,数据库,开发,云计算,自动化,运维管理,服务管理,项目管理,测试业务,作为系统架构师必须要懂业务。
1.了解服务在架构中的位置进行调优。
2.将所有的服务连接起来并给我们提供服务
3.如果将一个架构设计出来,并做成一个运维产品
提示:专注与某一领域:成为 某个领域的专家
小结:云计算的核心竞争力是运维!
运维知识系统分类¶
运维的层次:
(1)客户端层
(2)外部层
(3)网络层
(4)集群层
(5)应用服务层
(6)基础服务层
(7)操作系统层
(8)基础设施层
运维人员工作内容分类¶
--------------------------------------------------------------------------------------------------------
1.机房运维:**负责设备上下架,巡检,报修,硬件监控(**IDC机房)
2.基础设施运维:**系统安装,系统初始化,系统监控,网络维护。(**IDC机房)
--------------------------------------------------------------------------------------------------------
3.基础服务运维:**包含运维开发,内部DNS,负载均衡,系统监控,资产管理,运维平台,目前很吃香。(**直接使用阿里云)
4.系统运维:**架构层面的分布式缓存,分布式文件系统,日志收集,环境规划(测试,开发,生产),架构设计,性能优化。(**直接使用阿里云)
--------------------------------------------------------------------------------------------------------
5.安全运维:**整体安全方案,规范,漏洞检测,安全防护等(**安全宝,百度加速乐)
--------------------------------------------------------------------------------------------------------
6.应用运维:**一定要非常熟悉业务,项目上线,服务部署,业务部署,版本管理,灰度发布,应用监控。工作很累,很苦逼。(**腾讯云蓝鲸系统)
7.监控运维:**7X24运维值班,故障处理。建议:再多的钱不要干,很累,技术很难成长,提示:有时监控运维也会兼职做应用运维的工作,监控运维有时也会干应用运维相关的工作。(**监控宝)
--------------------------------------------------------------------------------------------------------
**8.运维产品化:**将运维技术生成服务卖给用户
云服务器:阿里云ECS
块存储:阿里云的云硬盘
专用网络:阿里云的VPC
负载均衡:阿里云的SLB
弹性伸缩:系统资源可以扩容
数据库:RDS,redis,memcached
存储:对象存储,块存储,文件存储,CDN
短信验证:阿里大于
--------------------------------------------------------------------------------------------------------
当然也可以将不同的层次进行整合:
监控运维(7x24运维值班,故障处理)
应用运维(业务熟悉,服务部署,业务部署,版本管理,灰度发布,应用监控)
安全运维(整体的安全防范,规范,漏洞检测,安全防护等)
系统运维(架构层面的分布式缓存,分布式文件系统,日志收集,环境规划,(测试,开发,生产),架构设计,性能优化)
基础服务运维(包含运维开发)(内部DNS,负载均衡,系统监控,资产管理,运维平台)
基础设置运维(系统初始化,网络维护)
机房运维(负责设备上下架,巡检,报修,硬件监控)
阿里云一些技术服务的原理
SLB LVS + Tengine(Nginx)
ECS 基于KVM的虚拟化
运维自动化的发展¶
运维标准化¶
对于所有服务器的配置都按照一个标准设置:
一:物理设备层面:
1.服务器标签化:所有服务器都要加标签,防止机房无法找到服务器。确定设备负责人,对于所有的设备都必须有负责人,如机器的购买时间,设备采购详情,设备摆放标准,这些都需要制定统一的标准。
2.网络划分:远程控制卡,IP地址划分,网卡与端口统一规划。
3.服务器机型:CPU,硬盘,内存,根据业务进行分类,对于服务器硬件尽量统一
4.资产命名的规范:编号规范,对于服务器的名称一定要很容易的区分其作用
5.制定监控标准:硬件监控,系统监控,服务监控,网络监控,安全监控。
二:操作系统层面:
1.规划操作系统的版本统一
2.系统初始化(DNS,NTP,内核参数调优,rsyslog,主机名规范)
3.基础Agent配置(Zabbix Agent,Logstash Agent,Saltstack,minion)
4.系统监控标准(CPU,内存,硬盘,网络,进程)
三:应用服务层面:
1.Web服务器选型(Apache,Nginx)
2.进程启动用户,端口监听规范,日志收集规范(访问日志,错误日志,运行日志)
3.配置管理(配置文件规范,脚本规范)
4.架构规范(Nginx+Keepalive,LVS+ Keepalive,做自动化最好选一种)
5.部署规范(软件存放安装位置,软件包命名等)
四:运维操作层面:
1.机房巡检流程:(周期,内容,报修流程)
2.业务部署流程:(先测试,后生产。回滚)
3.故障处理流程:(紧急处理,故障升级,重大故障管理)
4.工作日志标准:(如果编写工作日志)
5.业务上线流程:(1.项目发起 2.系统安装 3.部署服务Nginx 4.解析域名 5测试 6.加入监控 7.备份数据)
6.业务下线流程:(1.发起下线 2.数据如何处理,服务器硬件分配)
7.运维安全规范:(密码复杂度,更改周期,VPN使用规范,服务器登录规范)一定要对服务器锁屏
\8. 标准化(规范化,标准化,文档化)
五:运维标准化的目标:文档化
1.编写指定格式统一的技术文档,作为公司的技术存储。
2.建立公司技术文档库,防止员工离职造成公司技术储备流失
六:未雨绸缪:问题发生前提前解决掉(排查隐患)
1.内部人员造成的故障占50%
(1)指定科学的流程和制度(需要具备三种能力:策划能力,培训能力,说服能力)
(2)指定运维规范(需要具备三种能力:策划能力,培训能力,说服能力)
2.外部人员造成的故障占50%
(1)使用监控来进行排查,但是只能等问题发生后才处理
(2)根据监控趋势来将问题解决在萌芽中
运维工具化¶
1.SHELL脚本:把我们日常操作的写成脚本(功能性脚本(流程),检查性,报表性,流程性)
2.开源工具:Zabbix ELKStack Saltstack Cobbler
**工具化的目标:**1 促进标准化的实施 2.将重复的操作简单化 3将多次操作流程化 4减少人为操作的低效和降低故障率
工具化和标准化的关系是很紧密的,需要相互依靠
工具化的痛点:
1.至少要ssh到服务器执行,可能会犯错
2.多个脚本有执行顺序的时候,可以能犯错,如果脚本执行顺序错误的话。
3.权限不好管理,对于不同脚本允许不同人执行。日志没有统计
4.无法避免手工操作,很多工作都需要手动的去进行设置
例子:比如某天我们要对一台数据库进行版本停机升级,那么要求进行评估!
停机影响:3:00晚上有定时任务连接该数据库,做数据报表统计
1.凌晨3:00 所有系统的定时任务有哪些crontab
2.这些crontab哪些连接我们要停止的从库
3.哪些可以停机,哪些不能停机(修改到主库),哪些可以后补
4.这些需要后补的脚本哪个业务的,谁加的,什么时候加的
运维Web化¶
解决工作化的痛点
例子:Job管理平台
1.将运维做成Web界面
2.权限控制 对于不同层次的运维具有不同的权限
3.日志记录
4.弱化流程
5.不用ssh到服务器,减少人为操作造成的故障 Web ssh连接
Web化痛点:
DNS Web管理
负载均衡
Web管理
Job管理平台
监控Web管理 Zabbix
操作系统安装平台
但是我们如果按照操作流程来,那就需要操作很多页面,很不方便
运维服务化¶
解决Web化的痛点
DNS Web管理 dns-api(自己写)
负载均衡 slb-api(自己写)
Job管理平台 Job-api(官方自带)
监控Web管理 Zabbix zabbix-api(官方自带)
操作系统安装平台 cobbler-api(官方自带)
部署平台 deploy-api
配置管理平台 saltstack-api
自动化测试平台 test-api
1.通过调用cobbler-api安装操作系统
2.调用saltstack-api系统系统初始化
3.调用dns-api 解析主机名
4.调用zabbix-api将新上线的服务器机上监控
5.再次调用saltstack-api部署软件(安装Nginx+PHP)
6.调用deploy-api 将当前版本的代码部署到服务器上
7.调用test-api 测试当前服务运行是否正常
8.调用slb-api 将该节点加入集群
运维服务化解决用户不需要在多个不同的web界面上繁琐的操作。
运维智能化¶
运维自动化发展层级:
智能化,服务化,API化,web化,平台化,标准化,工具化
智能化的自动化扩容,缩容,服务降级,故障自愈
例如:阿里云弹性伸缩
自动化扩容:触发机制---》决策系统(决策树)---》
触发:
1.当某个集群的访问量超过最大支撑量
1.1 CPU使用率达到多少,内存使用达到多少
2.并持续5分钟
3.不是网络的恶意攻击
4.资源池有可用资源
4.1当前网络带宽使用率
4.2如果是共有云---需要考虑钱是否充足
5.当前后端服务支持量
5.当前后端服务支撑量是否超过阙值,如果超过应该后端先扩容
6.数据库是否可以支撑当前并发
7.当前自动化扩容队列,是否有正在扩容的节点(例如:还未扩容完成机器,又开始扩容另一个)
8.其他业务相关的
自动化扩容:
一:zabbix触发Action 并作出动作
之前:先判断Buffer是否有最近x小时,已经移除的之前创建的虚拟机
并查询软件版本是否和当前一致,如果步骤一致,直接跳过2 3 4步骤
二:OpenStack创建虚拟机
三:Saltstack配置环境-------需要添加监控
四:部署系统部署当前代码
五:测试服务是否可用(一定要等待检查是否成功,注意时间间隔,和次数)
六:将节点加入集群
七:短信邮件通知运维人员
自动化缩容:
一:触发条件和决策
二:从集群中移除节点-----关闭监控-----移除监控
三:通知运维人员
四:移除的节点存放于Buffer里
五:Buffer里面超过1天的虚拟机,自动关闭,存放于XX区
六:xx区的虚拟机,每7天清理删除
自动化扩容与自动化缩容存在的问题:没有监控