跳转至

Chrisjing的自动化运维体系

运维的职业发展

自动化运维图

image-20201016094658883

(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天清理删除

自动化扩容与自动化缩容存在的问题:没有监控