云计算只是一个概念,阿里云则是云计算的落地实现。云计算是面向广大用户的,对应的是一个分布式云管控平台,具有稳定性、可弹性扩展、安全性、低成本、易用性等有点。从技术角度看,云平台是虚拟化、分布式、自动化的综合类平台。

Aliyun

云端选型

云产品

云计算带来的运维变革

  1. 人工阶段:人工完成运维
  2. 脚本及工具阶段:对于重复的事情通过脚本和工具完成
  3. 平台化阶段:用平台界面智能化操作完成日常操作
  4. 智能化阶段:自动扩容、故障自愈、AIOps

云计算带来的技术架构变革

  1. 单机架构阶段:IOE架构
  2. 集群架构阶段:采用虚拟的VIP技术
  3. 分布式架构阶段
  4. 微服务架构阶段

软件技术选型

  1. 硬件相关,嵌入式相关,C/C++
  2. Java/C#
  3. 胶水语言:Python
  4. 快速构建语言:PHP
  5. 高并发语言:go
  6. 前后端语言:Javascript/Node.js

系统技术选型

云端网络的选型策略

  1. 网段
  2. 网卡
  3. 网络隔离
  4. 网络功能
  5. 网络实践

入网请求选型的方法

  1. SLB网络
  2. 公网IP
  3. 弹性EIP
  4. DNAT

出网请求选型的方法

  1. 公网IP
  2. 弹性EIP
  3. SNAT

WEB服务器选型考虑

  1. 稳定性
  2. 性能
  3. 对负载均衡功能的支持
  4. 前端静态数据缓存
  5. 丰富的插件及支持灵活的二次开发

负载均衡的选型考虑

  1. LVS
    1. 工作在网络的2、3、4层,仅作分发之用,资源消耗极低、抗负载能力极强
    2. 内核集成,没有复杂配置项
    3. 对几乎所有应用做负载均衡
    4. 云端ECS不支持LVS部署,不支持7层应用
    5. 不适合中小型应用
  2. Nginx
    1. 支持4层和7层应用
    2. 功能丰富、技术成熟
    3. 会话保持功能弱
    4. 对后端的健康检查只能通过端口来进行
  3. Haproxy
    1. 专注4、7层负载均衡,功能较少
    2. 会话保持能力强
  4. 阿里云SLB

云端存储的类型

  1. 块存储
    1. 云盘的备份
    2. 云盘的性能
  2. 共享块存储
  3. 共享文件存储
  4. 对象存储

云端数据库选型

数据库的分类
  1. 数据库的分类以及选型依据
    1. CAP定理
      1. 一致性
      2. 可用性
      3. 分区容错性
    2. ACID模型
      1. 原子性
      2. 一致性
      3. 隔离性
      4. 持久性
    3. BASE模型
      1. 基本可用
      2. 软状态
      3. 最终一致性
    4. 数据库的分类
      1. 关系型数据库
      2. 非关系型数据库
  2. 常见热门数据库

数据库选型

  1. 业务需求主要对应的是软件代码层面的架构及规划
  2. 运维架构层考量及规划
  3. 硬件及基础环境部署
  4. 数据库安装配置及优化
  5. SQL语句优化
  6. 日常备份及恢复

配置选项

业务指标

  1. PV
  2. UV
  3. IP
  4. 用户数
  5. 活跃用户数
  6. 在线用户数
  7. 并发用户数

性能指标转换计算

每秒处理请求的数量 = (80% * 总PV量) / (24h * 60m * 60s * 40%)

业务指标转换计算

  1. 下载类: PV = IP/活跃用户量*(2~5倍)
  2. 音视频类:PV= IP/活跃用户量* (5~10)
  3. 电商论坛类: PV=IP/活跃用户量 * (10~30)

用户数向并发用户数的转换计算

用户数 * 业务因子 (10% ~ 30%) = 活跃用户数

活跃用户数 * 业务因子 (10% ~ 30%) = 在线用户数

在线用户数 * 业务因子 (10% ~ 30%) = 并发用户数 ( 每秒请求数 )

云端服务器配置模型

PV量和服务器配置/RDS性能对应表

PV(万) 服务器配置列表 RDS配置列表 带宽需求
1 1core1GiB * 1台 1Mbps
10 2core4GiB * 1台 1core1GiB * 1台 1Mbps
50 4core8GiB * 1台 2core4GiB * 1台 2~4Mbps
100 8core16GiB * 1台 4core8GiB * 1台 3.5~11Mbps
500 8core16GiB * 10台 8core16GiB * 1台 18.5~55Mbps
1000 8core16GiB * 20台 16core64GiB * 1台 100~200Mbps

服务器CPU/内存配置模型

资源配比 应用场景
1:1 个人、官网等小型站点
1:2 Web服务、web应用类
1:4 数据库类型
1:8 内存数据库、内存应用

带宽配置选型

带宽配置 = 每秒请求数量 * 每次请求传输的数据量

​ = (80% * 总PV量) / ( 24h * 60m * 60s * 40%) * XMbps

  1. 80%的应用默认选择按量带宽,即案量带宽是云端带宽选择的最佳实践
  2. 20%的应用选择固定带宽,前提是每天按量下载的费用合计超过带宽平均每天费用

云端实践

资源共享、按需使用时云计算区别于传统IT架构的关机及核心,也是云计算模式的最大优势。

云的本质优势在于分布式架构,所以在云端实践钟,不要把云主机当作硬件服务器来使用,也不要指望通过升级服务器配置来解决业务性能扩展问题。阿里云的架构核心也是分布式架构,去除对底层高性能硬件的依赖,在架构上考虑采用哦个海量低配硬件资源来满足庞大的业务需求。

云端负载均衡实践

  1. 1+1 > 2 经典架构,使用双机+SLB替代单机+EIP模式
  2. 单机+SLB架构
  3. 按需构建架构,不要为了分布式而分布式、为了架构而架构
  4. DNS负载均衡
    1. DNS负载均衡适用于大规模应用
    2. DNS缓存导致的负载均衡无效
    3. CDN是智能解析的最佳实践
    4. 跨地域分布式架构是智能解析的最佳实践
  5. 企业级WEB架构实战
  6. 通过代理+VPN提速跨国际网络访问

云端存储实践

云端块存储的实践技巧

  1. 提升云盘IO的技巧
    1. 分布式部署
    2. 夜间活动减少资源共抢
    3. 云盘的拆分及合并
  2. 云盘使用的技巧
    1. 对于云盘不应当分区
    2. 云盘不应当使用LVM
    3. 云盘的系统盘不做数据存储
    4. 云盘不要依赖ECS
    5. 云盘挂载要放到/etc/fstab,而不是rc.local

云端共享文件存储的五种方法

  1. Rsync文件共享
  2. Rsync+inotify文件共享
  3. NFS文件共享
    1. NFS的高可用:DRBD+KeepLived
    2. NFS的性能问题:使用分布式文件系统
  4. OSS文件共享实践
    1. 使用API接口/SDK来管理OSS
    2. 使用阿里云管理控制台管理OSS
    3. 使用图形化工具管理OSS
    4. 使用本地文件系统挂载管理OSS
    5. 使用FTP来管理OSS
    6. 使用命令行工具管理OSS
  5. OSS数据迁移的技巧
    1. OSSImport工具
    2. OSS在线迁移服务
    3. 跨区域服务
    4. 离线迁移

云端缓存实践

使用静态缓存提升网站性能

  1. 浏览器缓存:通过Nginx的expires
  2. 磁盘缓存:通过Nginx的proxy_cache
  3. 内存缓存:Varnish
  4. CDN实现动静分离

动态缓存的应用

  1. 数据库缓存
  2. 集中session管理
    1. 基于源IP的会话保持:Haproxy的balance source和Nginx的ip_hash
    2. 基于浏览器的cookie的会话保持
    3. 数据库存放session
    4. 动态缓存的集中session管理:Redis或者memcache
    5. 基于Tomcat集群的Session共享
    6. 基于NAS的本地磁盘文件保存Session共享
  3. 动态页面缓存
    1. 通过Nginx内置Proxy模块实现动态页面缓存
    2. PHP的动态页面缓存:fastcgi_cache
    3. 通过Nginx内置Memcache模块实现动态页面缓存
    4. 通过Nginx第三方模块实现动态页面缓存:memc-nginx和srcache-nginx

云端数据库实践

在数据库领域钟,垂直分区和水平分区是一种纵向、横向的架构扩展手段。水平拆分就是典型的分布式数据库应用,即把一个表的数据划分到不同的数据库,而且两个数据库的表结构一致,且两个数据库同时对外提供访问。纵向垂直分区就是针对数据库的库基本拆分,也就是说把数据分别放在不同的数据库中,然后把不同的数据库放到不同的服务器中。针对数据库读写操作的纵向垂直拆分,就是主从架构。在主从架构上基础上加上高可用,就是数据库的集群技术应用。

垂直拆库实践

主从的四种实践方案
  1. 经典主从架构:读写分离或者双机热备
  2. 主从架构的三种扩展应用:
    1. 一主多从架构
    2. 主主架构
  3. 主从连接的三种方式
    1. 代码配置文件:手动修改
    2. 集中配置:Zookeeper、Consul、Etcd
    3. 读写分离中间件:Mysql Proxy、MyCAT、RDS读写分离
  4. 主从的高可用架构
  5. 集群技术的应用实践
    1. Oracle RAC:解决高可用问题,但不解决数据安全问题
    2. MySQL Cluster:解决高可用和数据安全问题,但写入效率和性能低下

水平拆表实践

  1. 业务层水平分区拆表
    1. 哈希算法
    2. 范围
    3. 映射关系
  2. 数据库层次水平分区拆表
  3. 四大成熟分布式Sharding技术方案
    1. DRDS Sharding技术
    2. 分布式中间件Codis、Redis Cluster、阿里云Redis
    3. MongoDB Sharding技术
  4. 列数据库Sharding技术
    1. HBase
    2. 表格存储

云端运维实践

上云流程

  1. 前期技术调研,由售前和销售执行
    1. 运维团队规模和水平测试
    2. 计算资源规模、技术选型和架构拓扑
    3. 了解迁移限制:时间、运维文档、业务状况
  2. 项目启动:
    1. 确定干系人、指定通讯录
    2. 确定项目实施计划和实施周期
  3. 系统架构的梳理和评估
    1. SLB
    2. 带宽
    3. 主机选型
    4. 数据库选型
  4. 确定迁移方案
  5. 迁移实施
    1. 域名备案要先行
    2. 定制系统镜像
    3. 自动化运维工具的应用
  6. 迁移测试
  7. 上线切割
  8. Nginx反向代理将老用户请求引流到阿里云(302转向)
  9. 项目交付及后期监控运维
    1. 主要内容为文档的编写总结
    2. 包括系统软件架构、系统架构、迁移方案、运维实施配置文档、运维维护手册、故障处理手册

混合云实践

  1. 基于VPC+专线构建混合云架构
  2. RDS自建主从同步在混合云中的实践
  3. MongoDB副本集在混合云中的实践
  4. RabbitMQ+SLB高可用实践
  5. 云端自建DNS实践
  6. Redis主从+Sentinel+Consul+DNSMasq高可用实践
  7. MySQL主从+Consul+DNSMasq高可用实践
  8. DNS的高可用

云端运维架构的优化

  1. 优化ECS配置选型
  2. 优化云端网络架构
  3. 优化云端负载均衡
  4. 优化云端静态资源访问
  5. 运维管理
    1. 运维安全加固
    2. 执行运维规范
      1. 主机命名规范:业务名-用途-编号
      2. 开机自启规范
      3. 运维自动化

云端监控实践

物理机体系

  1. Shell/Python监控
  2. Nagios监控
  3. Nagios+Cacti监控

云计算体系

  1. Zabbix
  2. 阿里云云监控
  3. 驻云监控

容器体系

  1. Prometheus+Alertmanager + Grafana
  2. TICK技术栈

云端容器实践

云端容器技术的实践

  1. 云端容器资源编排技术的选择
  2. 结合K8S的DevOPS流程
  3. K8S集群的配置:8核16GiB或者8核32GiB
  4. K8S云端部署架构
  5. K8S插件之DNS
  6. 容器的Web管理控制台
    1. 利用Nginx实现K8S Dashbord认证的LDAP支持
    2. Racher对K8S的管理
  7. K8S业务应用+自建DNS实践
  8. K8S Master节点的高可用
  9. K8S Node 节点高可用
  10. K8S部署架构优化
  11. 自建K8S迁移阿里云K8S托管版+Rancher
  12. K8S监控实战

DevOps发展的阶段

  1. 人工阶段
    1. 硬件相关
    2. 系统相关
    3. 代码发布
  2. 脚本及工具阶段
    1. 运维自动化1.0: shell/python编程脚本实现自动化(Ansible)
    2. 运维自动化2.0:Rundesk
  3. DevOps阶段
    1. DevOps 1.0:引入开发的Jenkins+Gitlab和运维使用Ansible + Shell + Rundesk
    2. 运维自动化 3.0:建立CMDB + Workflow
    3. 运维自动化 4.0:平台化管理
      1. 账号管理
      2. 客户管理
      3. 项目管理
      4. 资源管理
      5. 系统管理
      6. 配置管理
      7. 任务管理
    4. DevOps 2.0
      1. GitLab + Jenkins + K8S + 微服务
      2. 引入JIRA+Confluence做项目管理和知识库管理
      3. 建立运维流水线CI/CD
  4. 智能化阶段

云端安全

面临的挑战

  1. 安全行业状态不容乐观
    1. 安全防御两极化
    2. 互联网安全意识堪忧
    3. 安全产品使用问题
  2. 云端安全环境复杂化的挑战
  3. 安全对云优势的冲击

面临的机遇

  1. 云计算、大数据将成为安全体系的基础核心保障
    1. 基础安全保障解决了大多数传统中小型企业的安全问题
    2. 利用大数据分析的优势发现潜在的入侵和高隐蔽性攻击威胁
    3. 推动云计算进一步发展
  2. 政策驱动叠加

常见攻击

入侵的途径:漏洞

  1. 信息收集
  2. 漏洞筛选
  3. 开始入侵
  4. 放置后门
  5. 清理痕迹

常见系统层攻击

  1. 木马
  2. Webshell

常见应用层攻击

  1. SQL注入
  2. 跨站脚本攻击
  3. 密码暴力破解
  4. 恶意注册
  5. WebShell

常见网络层攻击

  1. DDOS攻击
    1. SYN Flood
    2. UDP Flood
    3. ACK Flood
    4. ICMP Flood
  2. CC攻击

最佳防御方案

  1. 安骑士
  2. WAF
  3. DDoS高防IP
  4. 黑域
  5. 态势感知

安全架构策略

  1. 云平台架构模式
  2. 分布式架构是安全保障的基石
  3. 全面开启云产品的安全机制
  4. 基于VPC的企业级安全架构

云端运维安全实践

  1. 云端堡垒机的选择
  2. 运维用户管理
  3. 密码安全管理
  4. 防火墙安全管理
  5. 端口安全管理
  6. 开源WAF实践
  7. 数据安全传输的标准
  8. 安全性能调优
  9. 通过冷热备进一步保障云端数据安全性
    1. ECS数据冷备
      1. 创建云盘快照
      2. tar打包传输到线下IDC或者OSS
    2. RDS数据结合OSS的冷备
    3. ECS数据的热备:RSYNC
    4. RDS数据热备:混合云架构实践
  10. 加强安全巡检及安全培训管理

云端架构篇

演变历史

  1. 单机

  2. 分离Web和数据库

  3. 动静分离:静态缓存+对象存储

  4. 负载均衡

  5. 数据库缓存

  6. 垂直扩展

    1. 业务拆分
    2. 读写分离
    3. 分库分表
  7. 水平扩展

    1. 增加更多的Web服务器
    2. 增加更多的SLB
    3. 采用分布式缓存
    4. Sharding+NoSQL

架构的应用

  1. 电商架构应用

    1. 活动

      1. 弹性伸缩
      2. API+镜像+快照
    2. 商品图片

      1. 静态资源占流量的80%
  2. 游戏架构应用

    1. 分区,独立部署应用服务器和数据库服务器,不构建集群
    2. 页游与端游、手游的区别
    3. 不同游戏的后端技术区别
  3. 移动社交架构应用

    1. 海量的信息存储
      1. 分布式数据库
      2. 半结构化海里数据:OSS
  4. 金融架构应用

    1. 安全合规
    2. 与公共云差异明显
    3. 提供专享产品与服务