前言:作为一个过来人,我曾站在技术的门槛之外,连电脑运行内存和内存空间都傻傻分不清,完完全全的零基础。但如今,我已成长为一名资深的k8s云计算运维工程师。回顾这段历程,我深知踏上这条技术之路的艰辛与不易,也明白方向和方法的重要性。
想要在这个领域入行并拥有出类拔萃的技术,扎实的基础、对高级架构的理解,以及丰富的实战经验缺一不可。需要沿着基础、高级架构、实战进阶这三大板块所细分出的技术点,一步一个脚印地学习。初次看到这么多技术要点,心生畏惧是再正常不过的反应,我自己刚开始时也被唬住了。
好几年前,我独自一人奔赴北京,决心为梦想拼搏。为了专注学习技术,我戒掉了心爱的游戏。工作日里,我沉浸在技术的海洋中努力汲取知识;周末本应是休息放松的时光,我却选择泡在教室里,认真复习巩固一周所学,就这样日积月累,才打下了坚实的基础。
在接触这些技术之前,会觉得它们高不可攀,仿佛攀登陡峭的山峰,困难重重。但当你真正深入其中,随着知识和经验的积累,就会惊喜地发现,许多操作早已得心应手,无需刻意思索就能完成,这便是“知行合一”的境界。
这篇博客,是我为大家精心准备的入行技术线路图,希望能为你们指引方向。如果想更高效地掌握这些技术,我强烈建议像我当年一样,进行系统的学习。如今网络上的学习资料铺天盖地,看似丰富,实则零散。面对海量信息,你很难分辨哪些是重点,哪些内容需要深入钻研,这不仅会耗费大量时间,还可能因错误的引导而走弯路。
如果你渴望像我一样系统学习,少走弯路,欢迎随时联系我,或者也可以联系我的师姐,我们非常乐意帮助大家开启这段充满挑战与机遇的技术之旅。
基础课程
阶段一:系统管理基础篇
一、 行业介绍和计算机基础
- 中大规模互联网业务系统的典型组件与典型架构(硬件体系(数据中心:服务器、网络设备、存储设备)和软件体系(业务系统、中台系统和支撑系统)简介)
- IT部门岗位分类(研发、测试和运维)及职责介绍,以及泛运维领域岗位职责分类
- 一个互联网业务系统的运维能力发展典型阶段:人工运维、脚本和工具化运维、平台化运维、自运维系统
- 数据中心:网络和网络设备、服务器设备、存储设备、供配电系统
- 硬件系统:服务器和网络设备简介
- 软件系统:系统软件和应用软件,操作系统和Linux
a.Ubuntu 2204–>Ubuntu 2404
b.国产化Linux(选一):麒麟、统信UOS、深度、OpenEular - 主机虚拟化程序和Linux系统安装
- 云主机的基本使用(可基于私有云桌面版Ubuntu系统镜像):创建、启动和接入到终端等
二、Linux系统基础及常用命令
- Linux用户账号基础;
- Linux系统访问接入:桌面和命令行简单介绍,以目录和文件管理为例对比演示说明:
a.在桌面环境(GNome或KDE)演示如何创建、移动、删除文件和目录
b.在命令行环境演示相关的功能,并对比演示命令执行结果 - 终端:
a.终端类型及当前系统终端
b.交互式接口及shell基础
c.shell内部外部和外部命令
d.命令别名 - 常见的系统命令,以及shell的常用特性:
- 命令的使用帮助:善用帮助信息、搜案引擎和ChatGPT:
三、文件管理命令和IO重定向
- Linux的文件系统层级结构标准(FHS)及路径遍历
- Linux系统上的文件类型及标识方式
- 文件时间戳atime、ctime、mtime
- glob通配符*、?及常用字符集合表示等特殊符号
- 目录管理类命令:mkdir、rmdir、tree
- 文件管理工具:cp,mv,rm及单源复制和多源复制
- 链接文件的创建In[-s]及符号链接与硬链接区别
- I/O重定向之输入重定向、输出重定向、错误输出重定向
- tr命令、tee命令及特殊文件文件/dev/null和/dev/zerO
- 多命令执行管道概念
四、用户管理、权限管理和文本处理工具基础
- Linux的用户、组、权限基础,进程安全上下文及用户和权限管理模型
- 用户和组的配置文件/etc/{passwd,shadow,group,gshadow} 文件字段说明
- 敏感文件操作命令 vipw、vigr、pwck、grpck和getent简介
- 用户和组管理命令:
a.useradd,usermod、userdel、passwd,chage
b.grouadd、groupmod、groupdel
c.id、su - 文件权限管理 rwx权限体系介绍,文件属主属组操作命令chown和chgrp,以及权限修改命令chmod
- umask 和默认权限
- suid、sgid、stid 特殊权限,chattr、lsattr特殊属性
- 访问控制列表ACL setfacl、getfacl命令
- vim编辑器基础应用、可视化模式、文件查找、多窗口模式
- 文件常用命令cat、more、less、head、tail等命令
- 文本查看及处理工具wc、cut、sort、uniq、diff和patch等命令
五、正则表达式、文件查找和压缩
- 基本正则表达式及扩展正则表达式
- 文本搜索工具:grep,egrep,fgrep
- 文件查找非实时查找locate命令简介
- 文件实时查找find命令
a.查找条件:-name、-iname、-regex、-user、-group、-type、-size、-perm
b.处理动作:-print、-ls、-delete、-fls、-ok、-exe - xargs命令及find组合
- 文件压缩工具qzip、xz、zip、tar及各自的解压缩的使用
- 流编辑器sed工作原理:模式空间、保持空间讲解
- sed命令常用选项-n、-e、-f、-r、-i讲解与示例演示
- sed命令地址定界:空地址、单地址、地址范围、步进表示法
- sed命令常用的编辑命令d、p、a、i、c、w、r、=、!、s///讲解与示例分析
六、shell编程基础
- bash脚本规范及执行方式
- 本地变量、环境变量、局部变量、位置参数变量
- 逻辑组合与或非
- 配置文件profile类、bashrc类、以及logout类文件详解
- 算术运算let VAR=算术表达式、VAR= [ 算术表达式 ] 、 V A R = [算术表达式]、VAR= [算术表达式]、VAR=((算术表达式))、VAR=$(expr $ARG1 $OP $ARG2)
- 算术运算
- 状态返回值$?及参数传递$1、$2、$3…
- 用户交互及read命令等
- 条件判断三种方式:test EXPRESSION[EXPRESSION]
- 测试类型:数值测试、字符串测试、文件测试、命令返回状态,以及组合条件(与、或、非)
- 选择执行之if语句:单分支,多分支及示例
- 选择执行之case语句
七、软件管理
- Linux程序包管理器基础及程序包的组成
- rpm包管理器常用命令rpm命令的安装-i、升级-U、卸载-e、查询-q、校验-V等
- rpm管理的前端工具yum介绍
- 常见的yum仓库配置与使用
- yum/dnf命令的用法安装install、升级update、卸载remove、缓存构建makecache、包组管理groupin-stall、groupupdate grouplist、groupremove 、groupinfo
- 自建yum仓库,介绍createrepo工具的使用
- ubuntu的dpkg包管理器管理deb包
- deb包的管理工具apt/agt-get使用
- deb仓库配置及加速
- 程序包源码编译安装三步走:./configure、make、make install
- 源码安装后的配置;环境变量等
八、 磁盘存储和文件系统
- linux磁盘管理之硬盘结构及分区基础
- 磁盘分区管理命令fdisk,gdisk,parted的使用
- 文件系统组织原理和常见的虚拟文件系统ext系列、xfs、iso9660、nfs、vfat、swap
- 文件系统创建mkfs与管理工具fsck、blkid等
- 挂载mount及挂载选项和umount、fuser、lsof命令的使用
- swap分区的创建mkswap,启用swapon和禁用swapoff
- 开机挂载及/etc/fstab文件及du、df命令
- 常用级别:RAID-0,RAID-1,RAID-5,RAID-10,RAID-50,JBOD与相关概念详解
- LVM2工作原理及相关概念详解
- LVM2软件创建管理工具,以及卷的扩展与缩减
阶段二:系统管理进阶篇
一、网络协议和网络通信
- 计算机网络通信及OSl七层模型概述
- OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
- 网络设备概念MAC、网桥,交换机工作原理的讲解
- 网络层:IP网络、子网、超网及报文路由
- 透辑地址IPV4和IPV6,网络地址、子网及其功能
- 路由设备及相关的路由协议简介
- 路由分类:网络路由、主机路由、默认路由详解
- VLAN及其工作机制简介
- TCP/IP协议栈介绍和分层
- 传输层:TCP协议进程通信原理及TCP的有限状态机及其特性
- 进程通信方式:IPC及Socket介绍
- IANA端口分配标准(特权端口:0-1023、注册端口:1024-49151动态端口:49152)
- 应用层协议简介,介绍常用的http/https等
- IP层、IP协议结构和分类
- 网络地址规划和网络划分
二、Linux网络属性配置及相关工具的应用
- Linux网络配置文件子网掩码、网关、等参数详解
- 网络管理相关命令ifconfiq、route、netstat命令讲解
- iproute家族ip link、ip address、ip route、ss命令
- nmtui及nmcli命令详解
- bondinq和team技术
- 网桥bridge实现
- 常见的网络客户端工具ping,mtr,traceroute,tcpdump等
- Ubuntu系统网络配置专用工具netplan用法介绍
- Ubuntu实现bonding和网桥功能
三、shell编程进阶
- 循环执行之for语句详解与示例
- 循环执行之until语句和while语句
- bash脚本编程之break、continue、跳出循环实例
- bash编程之while循环及for循环特殊用法示例
- function及函数的生命周期详解
- 函数的递归与返回return、传参
- 数组定义、声明及引用方式的讲解
- 非稀疏数组及关联数组相关概念及基础讲解
- 字符串切片${var;offset:number}:基于模式取子串、查找替换、详解
- 信号的相关基础列出trap -l、kill -l、man 7 signal
- (选讲)信号的捕捉及应用:HUP、INT
四、进程管理和计划任务
- Linux进程和线程:父进程fork自身产生子进程
- Linux内存和进程结构
- 同一主机进程通信方式和不同主机通信方式
- 进程的类型:守护进程和前台进程与状态:running、ready、sleeping、zombie、stopped及分类
- Linux进程管理工具ps、uptime、top、htop、vmstat、lsof等命令
- Linux作业控制jobs、fg、bg、kill及进程优先级nice值调整
- Linux任务计划at命令和周期性任务执行crontab命令详解
五、Linux启动流程、配置内核参数和AWK
- Linux操作系统的组成部件:
a.静态Linux操作系统的组成部分:内核+根文件系统
b.运行中的llnux系统环境介绍:内核空间+用户空间 - 内核的设计流派及linux内核的特点:模块化、支持动态装卸载
- Linux系统初始化基本流程,以及传统系统运行模型下的7种启动级别简介
- grub2启动引导程序配置及命令行接口、单用户模式及救援模式修复grub2
- 内核模块管理相关的命令lsmod、modprobe和insmode简要说明
- 常见的内核参数讲解
- 伪文件系统目录/proc和/syS
- Systemd及其功用、Unit常见类型、系统服务管理命令systemctl
- systemd运行级别管理:target unit格式、常用参数及编写要
- systemctl命令的常见用法:级别查看、切换、关机重启
- 文本格式化工具awk工作原理
- awk命令用法示例讲解
- awk内建变量F5、OFS、RS、ORS、NF、NR、FILENAME使用示例讲解
- awk处理动作打印print与格式化打印printf命令详解
- awk进阶之数组和函数示例及讲解
六、 域名解析和DNS服务
- 应用层协议DNS起源与发展
- DNS服务选代与递归查询原理
- DNS区域数据库文件资源记录A、AAAA、PTR、SOA、NS、CNAME和MX详解
- 主从DNS股务器工作机制
- bind程序的安装于使用
- DNS正向区域、反向区域与缓存dns的配置演示
- rndc、dig、host、nslookup工具使用
- bind的从DNS服务器的配置子域授权
- bind中的基础安全相关的配置
- CDN工作原理
- httpDNS简介
- 在公有云中配置DNS解析
七、通信安全和时间同步
- 网络通信中安全机制和各种攻击方式介绍
- 对称加密、非对称加密算法及单向哈希算法介绍
- PKI体系介绍,以及基于0penSSL等创建私有CA实现数字证书颁发
- https通信流程详解
- ssh协议介绍,0pensSH服务安装、配置和优化
- sudo体系及实现权限委派案例
八、NFS、Rsync服务和rsyslog日志
- NFS协议及工作机制
- NFS服务配置及应用
- 利用Rsync和Inotify同步数据
- 利用sersync实现实时数据同步
- rsyslog及服务器配置
- 日志转储
阶段三:HTTP与高性能Web应用
一、HTTP协议工作模型和httpd基础配置和应用
- 基于Web的服务架构介绍,以及常见的企业Web架构案例
- 常见的网络I/O模型及同步/异步消息通知机制讲解,以及多路I/0复用select、pol和epoll对比说明
- HTT协议基础、HTTP事务的处理流程,及超文本标记语言简介
- Web服务中动态资源和静态资源,URL统一资源定位符标识资源的方式及资源间的reference
- Request报文语法格式与Response报文语法格式
- Request报文之请求方法GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS
- Response状态响应吗1xx、2xx、3xx、4xx、5xx及常见得状态响应码
- HTTP协议中的Cookie和Session
- Apache httpd应用安装和配置说明
- 配置和使用虚拟主机
- 配置和使用https虚拟主机
- 通用网关CGI标准、php编程语言、Zend Engine解释器、加速器相关概念介绍
- 配置LAMP动态Web环境,并部署Wordpress示例
二、Nginx基础
- Nginx程序架构及工作机制
- Nginx安装、配置文件语法格式及基本应用,以及平滑升级和回滚
- Nginx全局配置段及关键配置参数
- http块配置、Location、虚拟主机配置及应用,以及https虚拟主机
- 基于域名的企业PC站点与移动站点
- rewrite模块功能、配置参数及配置案例
- Nginx防盗链及跨域资源调用(Cors)
- 压力测试工具ab、及curl、elink、htpasswd命令
三、Nginx反向代理(http和fastcgi)和优化
- Web反向代理及其工作机制
- 七层代理ngx_http_proxy_module模块、缓存服务及配置案例(Nginx–>httpd–>php module(word-press)–>MySOL)
- 负载均衡机制(四层和七层)及其应用场景介绍
- Nginx七层调度模块ngx_http_upstream module工作机制、调度算法及使用案例
- nginx模块应用之ngx_http_headers_module
- Nginx四层代理和调度模块ngx_stream_upstream工作机制及使用案例
- LNMP:FastCGl协议、ngx_http_fastcgi_module模块工作机制及使用案例(Nginx–>php_fpm(word-press)–>MySQL)
- Nginx的二开版OpenResty和Tengine简介
四、Java、JSP、Tomcat及应用运行案例
- lava编程语言及技术体系结构规范概述
- Java 2SE (JDK)及企业级类库jsp、servlet简介
- Web Container的开源实现Tomcat历史介绍
- Tomcat的顶级组件、服务组件、连接器组件、容器类、被嵌套类组件、集群类组件等核心组件介绍
- Tomcat的JDK环境安装及tomcat的安装部署:OpenJDK+Tomcat、OracleJDK+Tomcat
- JSP WebAPP组织结构及webapp归档
- manager及host-manager的配置及应用
- Tomcat的配置定制:连接器、虚拟主机、Context及访问日志等
- JSP Web应用程序的部署示例(JPress)及部署webapp的相关操作
- 基于Nginx进行负载调度及动静资源分离分发方式
五、Tomcat集群和JVM
- Maven工程工具简介、安装配置及示例应用构建,并推送制品到Nexus中
- 会话管理:session sticky、session cluster、session server
- Tomcat 会话复制集群的配置解析及部署验证
- Tomcat会话保持与会话服务器(msm)配置示例详解
- JVM运行时内存区域、堆内存分段机制、常用的垃圾收集算法及垃圾收集器
- 新生代及老代年的垃圾收集器搭配机制
- JVM常用的优化思路及配置参数和常用的监控工具用法介绍
- Tomcat自身常用的优化要点
阶段四:运维工具篇
一、Linux防火墙和iptables
- 防火墙功能及特性概述
- iptables和netfilter特性及工作逻辑介绍
- iptables四表(filter、mangle、nat、raw)五链(prerouting、input、forward、output 、postrouting)详解
- iptables命令链管理、规则管理、规则查看基本用法
- iptables基本匹配、扩展匹配、隐式扩展、显式扩展
- iptables扩展模块应用:多端口匹配、连接追踪、报文状态匹配等企业级应用
- iptables规则保存、重载、生效机制及安全体系工具
- iptables之forward转发
- iptables之SNAT、DNAT及端口地址转换
- 新一代防火墙技术nft简介
二、Ansible和应用编排
- 自动化运维技术框架系统安装、程序发布、应用布局宏观介绍
- Ansible工具特性及工作机制详解
- Ansible多方式安装及简单应用
- Ansible常用模块command、shell、copy、cron、fetch、file、service、user、setup等模块详解
三、Ansible应用进阶
- YAML语言介绍与语法
- Ansible Playbook(剧本)核心元素Hosts、Tasks、Variables、Templaters、Handlers、Roles详解
- Ansible Playbooks基础组件实际应用实例讲解
- Ansible 创建角色roles实现代码重用详解
- Role内各目录中可用的文件定义及角色调用实现
- 案例:编写Role,自动编排部署Nginx、Tomcat、MySOL和JPress
四、OpenVPN和Jumpserver
- VPN基础及常见的实现方式
- OpenVPN基础及远程服务器管理中的应用
- OpenVPN服务构建
- OpenVPN客户端
- JumpServer 关键功能与特性
- JumpServer安装、配置,以及资源管理、用户管理、账号管理和权限管理等快速入门
阶段五:关系型数据库
一、MySQL基础
- 数据库概念和类型:SQL和NoSOL
- 关系型数据库管理系统介绍
- 关系型数据库的关系运算和设计范式
- 关系型数据库表、索引、视图及三层模型讲解
- MySQL安装与安全配置
- MySQL的客户端程序mysql、mysqladmin工具介绍
- MySQL数据类型:字符型、数值型、日期时间型简介
- MySQL服务端和客户端命令使用
- SQL语句之DDL、DML语句用法详解
- 表的创建、修改、删除及表的状态信息查看
- 视图,函数,存储过程和事件管理
- 用户和权限管理
- MySQL的图形化的远程管理工具Navicat和SQLyog
二、MySQL性能优化和日志管理
- MySQL速辑架构
- MySQL存储引擎之InnoDB、MyISAM引整详解
- MySQL服务器全局变量,会话变量,及状态变量详解
- 常见的索引:聚集索引、主键索引、稀疏索引、B树索引的介绍
- 索引的管理:查看、创建、及删除
- MySQL基于读/写锁实现并发访问控制
- MySQL事务之ACID测试、及事务的隔离级别READ UNCOMMITTED、READ COMMITTED、REPEATABLE
READ、SERIALIZABLE详解 - 事务日志相关命令及变量详解
- 慢查询日志相关变量及优化查询
- 错误日志分析
三、MySQL备份还原和主从复制
- 二进制日志相关的变量设定及查看
- mysqlbinlog命令的用法
- 常见的数据库备份类型:完全备份、增量备份、差异备份热备份、温备份、冷备份物理备份、逻辑备份
- 常用的备份策略及方案设计:完全+增量
- 常用的备份工具mysqldump、cp、tar等复制归档工具
- 备份的数据快速恢复及注意事项
- 冷备份,温备份及热备份实现
- 逻辑备份工具:mysqldump使用实例讲解
四、MySQL读写分离和高可用
- MySQL常见的扩展方式Scale Up、Scale Out
- MySQL复制特点及复制架构详解
- MySQL主从复制中主节点、从节点配置实例详解
- MySQL复制架构中的数据一致性及事务安全性保持
- MySQL主主复制配置原理及案例演示
- MySQL半同步复制原理及案例演示
- MySQL复制过滤器配置原理及实现指定数据库(表)的快速备份案例演示
- MySQL复制过程中的日志清理与监控备令详解
- MySQL主从复制中数据不一致的解决方案
- MySQL复制中数据损坏或丢失、混合使用存储引擎、serverid的不唯一、及复制延迟中出现的问题及解决方案
- MySQL数据库的切分:重直切分:分库、水平切分:分表
- MySQL读写分离及常见的解决方案MYCAT
- MySQL集群Cluster实现PXC
实战项目(1):Java单体应用JPress
实战案例–基于Tomcat的]ava应用
- JPress/Wordpress
目标
- 各组件尽量以面向生产环境的方式部署
- NFS、Nginx、Tomcat、MySQL和MyCAT
- Ansible进行部署和新版本发布
- 用上JumpServer,模拟进行远程管理接入
- Shell脚本和Xtrabackup/mysqldump:MySQL数据库备份和远程存储
验证
- Ansible进行版本发布过程中,服务不会中断
- MYCAT和MySQL实现的读写分离架构中,数据能够正常读写
- Memcached用作Session server,确保会话保持的功能
- 模拟数据丢失,确保数据库的备份文件能够用于进行恢复
阶段六:接入层及高可用
一、 LVS
- Linux集群及系统扩展的方式概述
- Linux集群类型及调度方法详解
- lvs工作原理及专用术语介绍
- lvs常见的四种集群lvs-nat、Ivs-dr、Ivs-tun、lvs-fullnat优点及使用场景
- LVS 调度方案RR、WRR、SH、DH、LC、WLC、SED、NQ、LBLC、LBLCR详解及应用场景
- 负裁均衡集群中会话保持方式:源地址hash、会话集群、会话服务器
- ipvsadm集群服务管理工具使用
- LV5-NAT的配置以及负裁应用
- LV5-DR的配置以及负载应用
- LVS-FW方式实现LVS的affinity应用
- LV5 FWM 持久性连接应用环境理论及实现
二、Keepalived
- HA Cluster高可用相关原理介绍
- vrrp协议与专业术语介绍
- keepalived相关工作原理介绍
- keepalived软件安装与配置
- keepalived主备、双主互备、多主多备vrrp实例配置及实现
- 实战案例:高可用ipvs调度器及对RealServer进行健康状态检测
- 自定义监控脚本
- vrrp script及其应用示例
- keepalived基于vrrp script高可用nginx及haproxy调度器
阶段七:监控系统
一、Zabbix
- 监控系统概述
- zabbix组件介绍及zabbix监控基础、工作机制及监控实现方式
- zabbix server、agent安装、配置详解及监控数据采集流程
- 通过脚本一键自动批量安装zabbix agent
- 数据采集工具引用标识(key)与监控项配置
- 触发器,触发器表达式与触发器事件
- Action的工作机制及Operations应用:远程命令、告警及告警升级
- 高级配置:宏、自定义key及监控模板
- SNMP协议基础及基于SNMP协议的监控配置
- 聚合图形、dashboard展示
- 部署主动模式代理+主动模式agent客户端
- 监控TCP连接数(主动模板和被动模板)
- 监控redis及自定义模板
- 监控mysql脚本及自定义模板
- zabbix 故障自治愈功能简介与实现案例
- URL和自定义脚本及模板监控端口和进程
- grafana结合zabbix显示绚丽图形
- 用户和组管理
- 自定义系统基础监控模板
- 实现及邮件通知机制,微信报警、短信报警等
- zabbix proxy分布式监控及主被动模式详解及监控案例
- 网络发现及自动注册
- zabbix API使用基础及通过API快速添加监控服务器案例
- zabbix性能优化
- zabbix的高可用
实战项目(2):增强Java单体应用站点可靠性
实战案例 --完善基于Tomcat的]ava系统环境
- jPress/Wordpress
目标
- 各组件尽量以面向生产环境的方式部署
- NFS、Nginx、Tomcat、MySQL和MyCAT
- Ansible进行部署和新版本发布
- 用上JumpServer,模拟进行远程管理接入
- Shell脚本和Xtrabackup/mysqldump:MySQL数据库备份和远程存储
- Nginx模拟做业务网关,耦合请求至业务请求路径中,LVS做接入层流量网关
- (可选)基于Keepalived高可用LVS;若该组件可选,则需要使用keepalived高可用nginx
- 使用Zabbix监控以上系统中的每个组件,规划好存储空间,并制订合理的告警策略
LVS集群
Nginx集群
Tomcat和JVM
Memcached
NFS及同步状态
MySQL主从复制集群
JumpServer
Zabbix Server监控系统自身
验证
- Ansible进行版本发布过程中,服务不会中断
- MyCAT和MySQL实现的读写分离架构中,数据能够正常读写
- Memcached用作Session Server,确保会话保持的功能;
- 模拟数据丢失,确保数据库的备份文件能够用于进行恢复
- Nginx某一实例故障,不会大面积影响业务访问;
- LVS某一实例故障,不会大面积影响业务访问;
- Zabbix能够及时发现问题,并进行及时告警
高级架构课程
课程框架:
阶段八:虚拟化和容器
一、KVM虚拟化和OpenStack简介
- 虚拟化技术基础
- 虚拟化技术分三类:主机虚拟化(模拟、半虚拟、完全虚拟化)、容器、程序级虚拟化等
- 主机级虚拟化中cpu、memory、I/O虚拟化方式及网络虚拟化机制
- KVM虚拟化基础KVM虚拟化技术实现原理
- KVM模块载入后的模式:内核模式、用户模式、来宾式、及kvm hypervisor详解>kvm的特性与局限性详解
- KVM的工具栈:qemu、libvirt的使用
- 构建KVM环境:KVM的安装、配置及应用
- 管理KVM虚拟机(virsh,virt-manager及qemu-kvm)
- kvm常用的虚拟网络模型详解:桥接模型、NAT模型、路由模型、离模型概念及实现
- 磁盘镜像文件管理制作虚拟机模板镜像,并批量创建虚拟机
- 基于kvm运行windows server服务器系统
- 概述KVM虚拟化的其它管理工具:0penStack、oVirt、Proxmox等
二、Docker
- Linux容器技术及其关键组件CGroups及Namespaces
- 低级容器运行时与高级容器运行时、OCI
- 现代应用容器技术Docker的特性及分层组件
- Docker架构及工作模型
- Docker对比虚拟机优缺点,以及其它常见的容器引擎
- Docker存储引擎对比及选择
- Docker CE安装与初始化
- Container和Image管理相关的常用操作
- Dockerfile制作、Docker镜像分层制作精讲及案例
- 镜像优化与镜像漏洞扫描
- Docker的存储管理机制、数据卷和数据卷容器
- Docker网络模型与跨主机的容器间通信
- Docker资源限制介绍、CPU与内存资源限制实现
三、Containerd和Harbor
- docker-compose命令详解及单机容器编排企业案例
- Docker Registry 介绍
- Harbor镜像仓库单机
- Harbor镜像仓高可用实现、镜像扫描、镜像加速
- Containerd基础、部署与快速入门
阶段九:NOSQL存储系统
一、Redis基础
- 存储系统上的ACID、BASE及CAP理论
- NOSQL的常见技术流派及相关的常用实现方案
- Redis特性及功能
- 数据管理接口:各种数据类型的基础管理操作
- Redis配置详解
- RDB及AOF持久化机制对比介绍及其配置
- Redis数据类型介绍
二、Redis进阶
- Redis消息服务的实现
- 主从复制工作机制、配置方式,以及主从复制集群的部署
- Redis Sentinel功能、部署方式及部署案例
- Redis Cluster集群基础概念及工作机制
- Redis Cluster部署案例及集群服务器上下线
- Redis数据跨服务器迁移
- Redis其他横向扩展实现方式
三、MongoDB
- MongoDB数据库关键特性
- MongoDB数据模型:document、collection和database等
- MongoDB安装并连接到服务端
- MongoDB的CRUD操作:datadabase和document的基础管理
- MongoDB复制集工作原理和实战
- MongODB分片集群工作原理和实战
- MongoDB备份和还原
阶段十:CICD和DevOps
一、Git和GitLab
- CI/CD、敏捷开发、DevOps概述
- 持续集成与持续部署工具链
- 常见的代码部署方式介绍,如蓝绿部署、灰度发布、金丝雀部署、滚动部署、A/B测试
- 分布式版本控制工具的工作模型、git基础概念及基本应用
- 分支管理、常见的分支模型及各自的协作流程
- 远程仓库与GitLab
- Gitlab简介、安装、账户与权限管理、项目管理
- Gitlab分支管理、分支合并、代码clone、数据备份、数据恢复
二、Jenkins自由风格流水线
- Jenkins简介、安装、插件管理
- 作业类型及各自的特性
- Jenkins凭据管理
- 常用类型的触发器,以及基于GitLab的自动触发机制
- 参数化构建
- 结合Ansible实现自动化部署
- 构建通知
###三、Jenkins Pipeline
- jenkins分布式架构概念与实现
- 声明式Pipeline语法结构
- 声明式Pipline快速入门
- 参数化Pipeline及高级应用
- 基于spring-boot-helloworld的声明式Pipeline完整示例
- jenkins通知机制,在声明式Pipeline中使用post{}
- Jenkins视图简介与应用场景
- 代码质量测试工具sonarqube简介
- Sonarqube部署、插件管理、实现代码手动扫描
- Jenkins集合sonarqube实现代码自动扫描
实战项目(3)
实战案例–自动化构建SpringBoot和Vue应用项目案例
在线小说网:novel和novel-front-web
- novel:前后端分离的在线小说项目,此为后端,基于Spring Boot3开发
- novel-front-web:novel的前端,基于Vue 3开发
依赖的后端服务包括MySQL8.0、Redis 7.0、ElasticSeach 8.x(可选)RabbitMQ 3.x(可选)和XXL-Job(可选)
- 三个可选项默认均为关闭状态,该示例中,此三者也将基于默认配置,不予部署和使用
目标
- 简述SpringBoot MVC及相关的框架体系
- 容器化运行novel和novel-front-web相关的项目
- 部署高可用Harbor系统,以及分布式的Jenkins系统
- 基于Jenkins自动化构建novel并推送镜像至Harbor中
- 持续交付:自动化更新线上实例,并运行为容器实例(ansible或docker)
- 制订用于novel和novel-front-web更新的灰度策略,并实施相关的策略
- Zabbix监控整个系统环境
阶段十一:消息队列
一、Zookeeper和Kafka
- ZooKeeper架构组件和典型应用场景(发布/订、负载均衡、分布式协调/通知、…)
- Zookeeper数据模型、选举机制和节点类型
- Zookeeper单机部署、配置及常见命令的用法
- Zookeeper集群部署、扩缩容及运维管理
- 发布与消息订阅系统简介
- 消息、消息队列和Broker的基础概念
- Kafka特性、设计理念和系统组件
- 生产者、消费者及消息收发的工作逻辑
- Kafka部署模式、单实例部署和基础配置
二、Kafka和其它消息队列
- Kafka主颖配置、复制系数和分区机制
- Kafka的再均衡与分区分配策略
- Kafka的日志存储与事务机制
- Spark和Kafka Streaming简介
- RabbitMQ快速入门:系统组件、工作机制、集群部署和基础管理操作
- (选讲)RocketMQ快速入门:系统组件、工作机制、主从复制集群和基础管理操作
- 项目案例(3)扩展:为实战项目(3)升级Redis主从架构,并添加RabbitMO集群
阶段十二:搜索引擎和日志中心
一、ElasticSearch及集群管理和优化
- 搜索引擎及功能组件概述
- 索引组件Lucene及搜索组件ElasticSearch和Solr简介
- ElasticStack及小、中及大型规模下的日志采集、存储、展示及搜索平台的架构体系
- Lucene的多样化查询:域、范围、字符串、模糊查询简介
- ES集群组件及工作机制
- ES集群部署及API接口基础使用
- ElasticSeache插件管理,部署中文分词插件analysis-ik和analysis-pinyin
- ES的常用ETL工具栈及LoqStash和Beats组件
- LogStash Aqent部署及基础应用
- LogStash常用的input、filter和output插件体系与常用插件,如grok和geoip等
二、日志中心:filebeat、LogStash和Kibana
- LogStash Server部署及运行
- Kibana基础概念、部署、认证及其展示接口的配置
- Logstash多类型服务访问日志及系统日志收集
- Java日志合并、Nginx访问日志及TCP日志
- Syslog日志收集,以及基于RedisList收集Nginx访问日志
- Kibana Dashboard使用及自定义图形
- Logstash和Filebeat结合Kafka实现企业级日志收集案例
- 日志写入数据库及地图显示客户端城市
- Kibana日志分析,Nginx日志(pv、ip、地理位置等)
- (选讲)项目案例(3)扩展:为实战项目(3)添加ElasticSearch搜索引擎和ELK日志中心
阶段十三:微服务和对象存储
一、Springcloud微服务框架和Nacos
- SpringBoot MVC和SpringCloud微服务框架相关的概念
- 国内主流的微服务治理生态全景
- Nacos系统组件及工作机制
- Nacos 部署模式、单机部署和控制台功能介绍
- Nacos 的关键配置参数和鉴权体系
- Nacos 集群模式部署和多集群模式介绍
- 基于 Docker部署和运行Nacos
二、API网关、SpringCloud Gateway和APISIX
- API管理(API Management)与API网关(API Gateway)介绍
- API网关的类型:流量网关与业务网关各自的功能
- 主流的API网关项目及功能对比(例如SpringCloud Gateway、Zuul、Kong、APISIX等)
- SpringCloud Gateway特性、核心概念与工作流程
- SpringCloud Gateway断言(Predicate)、动态路由配置和过滤器
- APISIX架构组件和插件体系介绍,APISIX Dashboard
- 部署、运行APISIX和APISIX Dashboard
- APISIX的关键术语(Route、Service、Consumer、Upstream和Plugin等)及工作机制
- APISIX的基础管理操作:发布API和保护API
- APISIX高可用部署方案
三、Sentinel(流量治理)和Seata(分布式事务)
- 流量治理的基本概念:流量控制、熔断降级和过载保护等
- Sentinel的功能和设计理念:流量控制、熔断降级和过载保护在Sentinel中的实现机制
- Sentinel的组成(核心库和控制台),以及部署和启动控制台
- Sentinel规则类型及基于控制台规则管理接口介绍
- 流量控制规则、流量控制机制、集群流量控制和网关流量控制
- 熔断降级规则和熔断策略
- 过载保护规则及工作原理
- 热点参数规则和热点参数限流策略,以及访问控制规则和来源访问控制(黑白名单)
- 控制台鉴权机制,以及关键的配置参数说明
- 分布式事务与Seata介绍
- (选讲)Seata事务模式:AT、TCC、SAGA和XA模式
四、对象存储、Minio和华为云OBS(或阿里云OSS)
- 对象存储的基础概念、特性和适用场景
- 对象存储的关键术语:对象(0bject)、存储桶(Bucket)、地域(Region)和端点(Endpoint)
- 公用云的对象存储(阿里云OSS、华为云OBS、Amazon S3和Google Cloud Storage等)简介
- 开源对象存储方案(Minio、ceph RGW、Zenko和Triton等)简介
- Minio架构组件、功能特性和数据组织格式
- Minio核心概念和部署架构:分布式架构和复制架构
- Minio 基于纠删码和部署架构的数据冗余
- Minio 分布式集群部署和配置
- Minio 控制台:集群配置、对象管理和数据安全
- Minio 客户端程序mc及常用的管理命令
- (选讲)Minio SDK及使用示例
##实战案例(4)
实战案例 --部署微服务化应用
项目案例(二选一)
- mall-microservice
- novel-cloud
目标
- 部署基础服务:mysql、redis、nacos、elasticsearch、mongodb和minio等
面向生产环境部署:提供主从复制或者集群服务
容器化部署,或Ansible编排部署
关键数据备份策略和灾难恢复策略 - 部署mall-microservice/novel-cloud的各组件
容器化部署,或Ansible编排部署 - 高可用Nginx反代接入,或者使用APISIX接入
- 配置监控整个系统,并制订合理的告警策略
- 微服务业务前后端应用经Jenkins自动构建为Image后推送至Harbor
- 收集系统日志至ElasticStack中
阶段十四:Kubernetes快速入门
一、基础概念、架构组件、工作机制及集群部署
- 容器编排与Kubernetes编排系统概述
- Kubernetes系统组件与核心术语
- Kubernetes网络模型简介
- 各类部署工具对比介绍,以及kubeadm部署Kubernetes集群的要点及步骤
- 使用ansible和ansible playbook,快速部署基于containerd的Kubernetes集群
- Kubernetes应用编排快速入门:Pod、Service和Deployment
- 资源API和kubectl命令行客户端详解
- 使用Namespace隔离不同的租户、项目或环境
二、Pod、存储卷和配置
- Kubernetes集群组件、工作机制回顾与增强
- Pod的设计理念、配置格式和使用案例
- 定制容器运行方式:命令、参数和环境变量,以MySQL和Wordpress为例,迁移尝试迁移传统应用至Kubernetes平台
- 配置Pod:探针、资源需求、资源限制、安全上下文及使用案例
- 基于容器的设计模式:Sidecar容器、Ambassador容器、Adapter容器和Init容器,以及Init容器使用案例
- Pod状态及常见的异常问题及其排查问题的思路
- 存储卷类型、插件、配置规范和使用案例
三、持久卷、存储类、及应用配置
- 持久卷(PV)和持久卷声明(PVC)的功能、工作逻辑、配置规范及使用案例
- 存储类的功能、配置规范及使用案例
- Kubernetes存储架构、CSI以及基于CSI的NFS-CSI-Driver
- Kubernetes的CAS存储,0penEBS部署,以MSQL和Wordpress为例,为迁移到Kubernetes集群上的应用提供持久化存储的
- ConfigMap、Secret功能、配置规范,以MySQL和Wordpress为例,为迁移到Kubernetes集群上的应用提供Kubernetes原生方式的应用配置功能
- DownwardAP1、Proiectd卷功能、配置规范和使用案例
- Service的功用、模式及工作机制快速入门
- 标签、标签选择器和注解
四、Service和应用编排
- Service类型、资源规范及各类型使用案例
- Service资源名称、名称解析和CoreDNS
- 配置Pod上的名称解析策略
- CoreDNS插件体系、查询路由、配置格式、查询重写和常用场景下的配置案例
- Kubernetes声明式API与控制器模式的基本工作逻辑
- 无状态应用编排控制器Deployment:应用部署、更新、扩缩容、金丝雀部署、卸载及使用案例
- 有状态应用编排控制器StatefulSet:应用部署、更新、扩缩容、分区部署、卸载及使用案例(MySQL主从复制集群)
五、应用编排与Ingress应用发布
- 有状态应用编排Operator工作机制及案例(ECK Operator)
- 系统级应用编排控制器DaemonSet:应用部署、更新、扩缩容、分区部署、卸载及使用案例(Prometheus Node Exporter)
- 作业类编排控制器Job、Cronob配置规范及使用案例
- Ingress资源的功用、类型及同Ingress Controller的关系
- Ingress Controller的常见实现、部署模式和IngressNginx部署示例
- Ingress资源类型、配置规范和示例,以及通过Ingress发布应用的实际案例
- 基于Ingress的灰度发布案例:canary-by-header、canary-by-cookie和canary-by-weight
- Helm的核心概念、工作逻辑、以及Artifact Hub介绍;
- Helm案例:部署Wordpress和Harbor;
阶段十五:云原生监控系统
一、Prometheus监控系统入门
- 监控系统和监控体系回顾,以及四个黄金信号、USE方法和RED方法等监控理论;
- Prometheus生态组件与工作机制、数据模型和数据采集快速入门;
- 部署、启动Prometheus Server和Node Exporter
- 实战案例:监控Prometheus Server、Node、MySQL、Nginx、ElasticSearch和Tomcat,以及使用Black-box Exporter进行黑盒监控:
- Prometheus数据模型、向量选择器和指标类型;
- PromOL聚合函数、聚合表达式和向量匹配;
- Prometheus服务发现工作机制、常见的发现服务及配置案例:基于文件、Consul和Kubernetes AP Server的服务发现;
二、Prometheus监控系统进阶
- Promehteus重新打标(relabel_configs和metric_relabel_configs)机制及使用案例;
- 使用记录规则持久保存查询结果,以及基于Grafana展示查询结果;
- Prometheus告警逻辑、AlertManager告警路由框架及工作机制;
- 告警规则格式、告警模板字串及相关的配置案例
- 部署、启动AlertManager,配置邮件告警、钉钉告警等多种告警机制;
- 告警路由、告警抑制配置案例;
- Prometheus存储引擎简介,以及配置Prometheus使用远端存储的方法,
- Prometheus的各类高可用方案介绍;
- (选讲)VictoriaMetrics系统架构、工作机制,以及部署VictoricMetrics作为Prometheus的远端存储;
阶段十六:Kubernetes实战进阶
一、认证、鉴权及网络插件基础
- Kubernetes APl Server的访问控制体系及工作机制:认证、鉴权与准入控制
- 身份认证策略介绍、静态令牌认证、X509数字证书认证及使用案例
- kubeconfig配置文件格式、管理命令及使用案例
- ServiceAccount功能、工作机制、配置规范及使用案例
- 鉴权策略介绍和RBAC鉴权工作原理
- RBAC鉴权体系中Role/ClusterRole/RoleBinding/ClusterRoleBinding资源规范及案例
- CNI技术体系及Pod网络基础
二、Kubernetes网络
- Kubernetes的网络模型及组件间的通信链路
- CNI插件体系、NetPlugin和IPAM插件类各自的功能和常见的实现、以及容器网络接口的主流实现机制
- Pod网络解决方案中的Overlay网络和Underlay网络模型,以及各自常见的实现机制
- 主流网络插件的功能、特性、性能,以及选择插件的评判原则
- Flannel网络的vxlan、vxlan directrouting、host-gw的工作机制、配置方法和模型验证
- ProjectCalico网络工作机制、架构组件及支持的网络模型
- 部署ProjectCalico,配置其使用BGP和IPIP网络,并验证其通信模型
三、Kubernetes集群运维
- Kubernetes调度相关的概念、经典调度器的调度流程、预选策略、优选策略和新式调度框架
- Kubernetes的亲调度机制:节点亲和、Pod亲和、Pod反亲和及Pod拓扑分散约束
- Kubernetes基于污点和容忍度的调度策略
- Kubernetes节点状态和节点维护
- Kubernetes高可用架构模型,以及部署高可用的Kubernetes集群示例
- 集群版本升级注意事项和实践准则,以及升级高可用的Kubernetes集群的案例
- Velero程序组件及备份、恢复的工作机制
- Velero备份恢复Kubernetes资源及数据卷的案例
项目案例(二选一)
- mall-microservice
- novel-cloud
目标
- 将实战案例4的环境全线迁上Kubernetes平台
- 监控系统切换为Prometheus
- 接入层切换为基于Ingress Controller的Ingress资源
阶段十七:SRE工程理念
一、SRE工程模型
- SRE的起源、岗位职责、工作原则和适用范围
- SRE的核心理念、方法论和稳定性的衡量机制
- 服务质量SLI、SLO和SLA的制订与落地原则
- 应用事件处理:紧急事件响应、紧急事故管理、故障排查、事后总结和0n-Call机制建设
- 稳定性建设的方法:基于"主备"的冗余、基于"负载均衡"的冗余、基于平台自愈机制的设计,基于业务架构的设计
- 灾备建设简介:同机房灾备、同城双活灾备、异地数据灾备、两地三中心和分布式多活
实战进阶
阶段十九:Kubernetes实战进阶
一、基于kubeasz部署高可用Kubernetes集群
- Kubernetes集群组件架构及服务器硬件选型
- 准备本地部署环境,并基于kubeasz初始化Kubernetes集群部署过程
- kubeasz部署Kubernetes集群的配置文件详细介绍
- 基于ansible-playbook,定制要部署的Kubernetes集群环境
- Kubernetes集群更新注意事项及更新过程演示
- 部署常用的附件,例如Kuboard等,并介绍kubesphere系统
- etcd存储系统介绍及集群管理
- Kubernetes原生名称解析服务CoreDNS功能、特性及常用配置
二、Kubernetes实战话题
- Calico网络插件的eBPF模式及应用,以及在Kubernetes部署使用eBPF模式的网络插件
- Pod的特性伸缩机制、VPA/HPA的工作机制,以及基于Promteheus的应用自动伸缩案例
- 公有云SLB结合Ingress实现客户端IP透传
- eBPF介绍、Cilium网络插件系统组件、工作机制及部署Kubernetes集群使用Cilium网络插件
- Cilium网络插件的虚拟网络接口、Pod网络模式及通信验证,以及Cilium内置的可观测组件Hubble
- Cilium内置的Ingress Controller与应用,以及Cilium的高级特性介绍
三、Kubernetes上部署微服务电子商城项目
- 云原生的概念、服务网格、微服务治理体系介绍
- 开源微服务电子商城mall-microservice项目架构介绍
- 部署mall-microservice依赖的各后端服务:MySQL、Nacos、EFK、Redis、MongoDB、RabbitMQ、Minio并它们纳入Promtheus的监控体系
- 部署Skywalking及相关的UI
- 部署商城后台组件:mall-gateway、mall-portal、mall-search等
- 部署商城的商家管理端mall-admin-web,并测试进行测试访问
- 在Prometheus/Grafana中验证指标采集、在EFK中验证日志采集和检索,在Skywalking中验证请求链路跟踪
阶段二十:分布式消息系统Kafka
一、Kafka及应用案例
- 单体应用与微服务简介、进化历史、服务注册机发现机制、实现微服务的几个要素
- 消息分发系统发展历史及对比、消息分发机制
- Kafka简介及优缺点、Kafka逻辑架构详解
- Kafka配置详解、基于Zookeeper和Kraft实现Kafka集群部署简介;
- Kafka命令行及图形客户端使用、验证消息的写入Kafka并从Kafka集群消费
- Kafka集群成员间关系、复制及物理存储机制
- Kafka的可靠性保证、复制以及broker配置
- 管理Kafka-Topic操作、消费者群组、动态配置变更及分区管理
- 在Kubernetes集群上,基于Strimzi Operator部署面向生产环境的Kafka集群
阶段二十一:列式数据库ClickHouse
一、CilckHouse入门与实践
- 关系型数据库与非关系型数据库简介、行式数据库与列式数据库简介、ClickHouse使用场景特性及功能介绍
- ClickHouse服务器选型、安装配置及优化配置、数据导入
- Clickhouse安装、ClickHouse查询语句简介及常用函数的使用
- Clickhouse-Client及DBeaver等客户端工具使用、用户管理
- ClickHouse数据格式简介,JSON、TabSeparated、TSKV、CSV、Parquet、ORC等数据格式
- ClickHouse存储引擎简介,MergeTree系列引擎简介及Log系列存储引擎简介
- Clickhouse用户profile、quota配额及多用户管理
二、ClickHouse生态整合
- ClickHouse与MySQL及Kafka等整合使用;
- ClickHouse分布式集群部署简介及集群部署,
- ClickHouse查询语句简介及常用函数的使用;
- Prometheus基于ClickHouse实现数据的远程读写案例;
- 基于Prometheus监控ClickHouse并通过Grafana实现监控数据可视化;
- 将ClickHouse部署并运行于Kubernetes之上,使用基于Ceph rbd的PVC存储数据,并由Prometheus自动完成ClickHouse的监控和告警:
师姐的号(可撩!):Evelyn-lin717
结语:
无人扶我青云志,我自踏雪至山巅。
若是命中无此运,亦可孤身登昆仑。