Linux运维与架构工程实践

1 本章概览

介绍Linux系统Linux运维与架构工程实践的方方面面

2 Linux系统基础入门

  • 认识计算机和服务器核心硬件
  • Linux发展历史、系统组成、应用领域以及发行版
  • 搭建运维环境:VMWareWorkStation、SecureCRT的使用
  • Linux系统的基本使用
  • Shell入门以及命令概述

3 Linux系统管理

  • 文件目录管理
  • 用户管理
  • 权限管理
  • VIM编辑器的使用
  • 文档压缩打包
  • 程序包管理(安装、卸载)
  • 网络管理
  • 文件系统管理
  • 内存管理
  • 系统管理(监控、环境变量)
  • 安全管理(selinux,iptables)

4 企业级应用服务管理

  • 文件服务(Samba、NFS、SFTP)
  • Web服务(HTTP协议、Apache、Nginx)
  • LAMP/LNMP
  • DNS

5 Shell编程实战

  • Shell脚本入门
  • Shell变量、条件语句(if、case)、函数
  • Shell 循环(语句while、unit、for、select)
  • Shell 控制循环
  • Shell 数组
  • sed和gawk应用进阶
  • Shell 脚本开发范例
  • Shell脚本的调试
  • Shell脚本开发环境变量配置和优化实践
  • Expect自动化交互程序应用实践
  • 子Shell和Shell嵌套模式应用
  • Shell面试题实战

6 高性能、高可用MySQL

  • MySQL架构与历史
  • MySQL基准测试
  • 服务器性能剖析
  • Schema与数据类型优化
  • 创建高性能索引
  • 查询性能优化
  • MySQL高级特性
  • 优化服务器设置
  • 操作系统和硬件优化
  • MySQL复制及其原理
  • 可扩展的MySQL
  • 高可用性
  • 云端的MySQL
  • 应用层优化
  • 备份与恢复
  • MySQL工具集
  • MySQL Replicant库
  • 二进制日志
  • 高可用性复制
  • 横向扩展复制
  • 数据分片
  • MySQL集群
  • MySQL监控

7 负载均衡集群解决方案 HAProxy+LVS

8 高可用集群解决方案 Keepalived

9 高性能集群解决方案

10 运维工具使用

  • ansible 自动化部署管理工具
  • puppet 自动化配置管理工具
  • fabric 自动化运维工具
  • saltstack 自动化运维工具

11 运维监控

  • Zabbix

12 Python自动化运维

  • 构造B/S自动化运维平台
  • 构造Linux系统安全审计功能
  • 构建分布式质量监控平台
  • 构建桌面版自动化运维平台

13 云计算

  • OpenStack

14 大数据

  • Hadoop

    • Hadoop生态圈(HDFS,Hive,HBase,Zookeeper,Pig,Impala,Kudu,Flume)
  • Spark
  • Strom

15 企业级虚拟化

  • KVM

16 分布式消息中间件

  • RabbitMQ
  • RocketMQ

17 分布式MongoDB企业级应用

  • MongoDB介绍
  • MongoDB设计应用
  • MongoDB复制
  • MongoDB 分片
  • MongoDB 应用管理
  • MongoDB 服务管理

18 分布式Redis企业级应用

  • 初识Redis
  • API的理解与使用
  • Redis常用的小功能
  • Redis客户端
  • Redis持久化
  • Redis复制
  • Redis的噩梦:阻塞
  • 理解内存
  • 哨兵
  • 集群
  • 缓存设计
  • 开发运维的陷阱
  • Redis监控运维平台CacheCloud
  • Redis配置统计字典

19 分布式日志系统

  • E(elasticsearch)
  • L(Logstash)
  • K(Kibana)

20 分布式MySQL中间件

  • MyCat

21 分布式文件存储

  • MooseFS
  • GlusterFS
  • FastDFS

22 虚拟化容器

  • Docker
  • Kubernetes

23 Linux系统调优

  • Linux系统优化思路
  • Linux系统性能评估与优化案例
  • 内存、磁盘性能评估
  • 网络性能评估
  • 基于Web应用的性能评估

24 Java技术栈

  • Tomcat
  • Jenkins
  • Git/Gitlab
  • Maven
  • Jira

计算机系统硬件概述

1 本章概览

介绍计算机的分类和基本组成、服务器及其硬件的使用场景以及各组件的IO性能汇总和互联网应用场景的解决方案。

2 计算机分类和硬件组成

2.1 计算机的分类

按照不同的用途,计算机的类型可以分为笔记本,PC台式机和服务器以及移动终端,通常笔记本的使用场景用于便携办公,PC台式机用于开发,设计等等,服务器用于大型互联网公司的后台服务和数据处理,区别于笔记本和PC台式机的显著不同之处在于服务器要实现处理高可用,高并发,高性能的业务场景。

2.2 计算机硬件的组成

现代计算机(冯诺依曼计算机体系)主要由CPU(运算器和控制器),存储器(内存和外存),IO设备(网卡)等五大核心组件组成的,它们各司其职,完成计算机的数据计算数据存储数据传输的任务。

3 认识服务器及其硬件的使用场景

DELL,HP和IBM是互联网公司中使用最常用的服务器品牌。
其中互联网公司中使用最广泛的品牌DELL常见的服务器型号按照不同的用途分为2u的R730/R830和4U的R930,其中1U表示高度为4.45cm。

服务器中重要的组件包含电源(如果是单台服务器通常都是双路电源,集群场景不需要使用双路电源),主板(类似于人体的骨架),CPU,内存和磁盘,网卡等等。

运维人员需要重点关注服务器的CPU、内存、磁盘三大核心组件!

  • CPU
    CPU主要是负责数据的运算(算术,逻辑运算)和控制(协调其他计算机组件完成数据的存储、传输)等任务。
    常用的CPU品牌是英特尔和AMD。
    根据用途不同服务器的CPU通常是2-4颗,单颗CPU是4-8核,如果是做虚拟化宿主机则需要4-8颗CPU,虚拟6-10个虚拟机。

  • 内存
    内存是编址的存储设备,主要是负责小容量数据的暂时存储,程序运行时会将数据加载到内存计算,断电后数据会丢失。
    服务器的内存区间通常是16-256G(32G-64G更多),如果是做虚拟化的宿主机,内存总量一般是48-128G,用来虚拟6-10个虚拟机。
    32位系统最多寻址2的32次方也就是4G个内存空间,64位系统最高寻址内存可以达到2的64次方也就是4G*4G内存空间,但是实际使用不了那么多,64位Linux支持内存为16EB

  • 磁盘
    磁盘主要是负责永久性存储大容量(TB)数据(PB通过RAID来实现)。
    服务器的磁盘接口类型通常分为SATA(转速7200-10000转/分),SAS(转速15000转/分),SSD三种。
    通常不对外访问的业务(例如线下数据备份)采用SATA,STAT的特点是容量大,价格便宜但是速度比较慢。
    而常规正式的工作场景选用SAS硬盘,机械磁盘转速高的性能好。
    高并发,小数据量(TB)时选用SSD。
    考虑到经济效益,互联网公司通常根据不同的应用场景都是SATA,SAS和SSD混合使用。

磁盘阵列(RAID)主要是解决网站数据量非常大,一块磁盘存放不下时可以将多块磁盘整合成一块盘,而网站的重要数据通常需要冗余备份。常见的raid级别包含raid0,raid1,raid5,raid10,从冗余,性能,成本三个不同方面考虑各个raid级别的排名如下:
冗余从好到坏: raid1,raid10,raid5,raid0
性能从高到底:raid0,raid10,raid5 ,raid1
成本从低到高:raid0 ,raid5,raid1 raid10

重要数据(例如数据库主库)考虑冗余性选择raid1,性能要求高(web服务器)选择raid5,raid0

4 计算机硬件的IO各层次性能汇总

组件名称 延时、带宽
CPU
Cache L1,L2,L3 0.5-15ns、20-60GB/S
内存 30-100ns、2-12GB/S
SSD硬盘 10us-1ms、50MB-2GB/S
普通硬盘 5-20ms、50-200MB/S
网卡-网卡 100us-1ms、10MB-10GB/S

从该表格中可以看出CPU延时(最低)和带宽(最高),而普通硬盘是性能最差的,根据木桶效应,在性能优化时应该优先优化磁盘。

5 互联网应用场景的解决方案

在面对高并发场景(例如抢红包,秒杀,淘宝的双11),通常都是将数据写入到内存(例如Memcache,Redis),当达到一定的量以后将数据定时定量的写入到磁盘,最终通过程序加载到内存对外提供访问。

将数据写入内存性能更高,速度快,然而可能断电会造成部分数据来不及写入磁盘,可以通过服务器主板安装蓄电池,或者选择双电路的机房来避免该情况。

而面对并发数据量不是很大,读多写少(99%的网站面对的场景都是读多写少)的场景通常是将数据写入到磁盘,再通过程序将磁盘的数据加载到内存对外提供访问。

写入数据到内存里,这个数据的内存空间称为缓冲区(Buffer)
从内存中读取数据,这个数据的内存空间称为缓存区(Cache)

Linux系统概述

1 本章概述

介绍计算机系统架构、Linux系统历史、系统组成、GNU组织和GPL协议、发行版以及应用场景和版本的选择

2 计算机系统架构

计算机系统架构主要是由硬件系统和软件系统组成,之前的文章中已经详细介绍了计算机硬件及其应用场景。
这里主要聊软件系统
软件主要由系统软件和应用软件组成,最典型的系统软件就是操作系统(OS)了。
操作系统介于系统硬件(CPU、内存、磁盘)和应用软件之间,主要是用于管理和分配硬件资源,给应用软件提供必要的运行环境。
提供硬件驱动管理,进程管理,内存管理,网络管理和安全管理的通用功能。
而最常见的操作系统(基于Intel X86)包括Windows,Unix/Linux,MacOS。
其中Windows,Linux(Ubuntu),MacOS主要运行在PC台式机,笔记本。
而Unix/Linux(RedHat,CentOS)主要是运行在服务器之上给用户提供服务。

3 Linux系统概述

3.1 Unix系统介绍

Unix系统于1969年诞生于AT&T的贝尔实验室,20世纪70年代后逐步流行,在这期间产生了一个重要的分支BSD,从BSD系统开始,各大产商和商业公司开始根据自己公司的硬件架构,并以BSD系统为基础进行Unix系统的研发,从而产生了各个不兼容的Unix。
目前主流的三大分支:IBM的AIX,Oracle的Solaris,HP公司的HP Unix。

Unix系统的主要特点

  • 技术成熟、可靠性高:通常超大型银行、金融公司等可靠性要求性极高的公司会采用Unix作为服务器操作系统,但是Unix通常是随着硬件捆绑销售的。
  • 支持主流CPU的架构:Intel/AMD,PowerPC,UltraSPARC
  • 支持主流的数据库:Oracle,DB2,Informix
  • 强大的开发功能:Unix促使C语言的诞生,而TCP/IP,XML,WWW都是诞生在Unix之上

3.2 Linux系统发展的历程

我们通常所说的Linux通常指的是内核(kernel),而从Linux系统架构图中看出如果只有内核,就不是一个完整的操作系统,还需要许多能够解决问题的应用程序。

由于Unix面临商业化版权制约以及源码面临闭源的问题,Ritchard Stallman发起了开发自由软件的运动,并成立自由软件基金会(FSF)和GNU项目以及GPL,最终开发了Linux系统的重要组件,包括GCC编译器,Emacs编辑器,bash命令解释程序和编程语言,gawk。

自由不代表免费,例如RedHat是自由但是不免费的操作系统
GPL是保证任何人有共享和修改自由软件的自由,任何人有权获取、修改、发布自由软件的源代码的权利,但同时给出具体的修改的源码。

而最早期的Linux内核是由Linus Torvalds在大学教授Andrew Tanenbaum开发的Minix基础之上开发的,1991年年底发布了Linux内核的0.02版本,自那以后全世界的开源爱好者们共同推进着Linux系统的发展,使其在服务器端,嵌入式和PC桌面得到了广泛的运用。

Linux系统=Linux内核+GNU项目组件+各种应用程序(Apache,Nginx,Zabbix)

完整的Linux系统架构图
内核主要是实现系统内存管理,软件程序管理,硬件设备管理,文件系统管理

GNU组件主要包含处理文件(gawk)、操作文本、管理进程的工具以及shell,gcc等等

常见的应用程序包含不同的图形化界面(KDE,GNOME,XFace),运行于桌面端的Firefox,Chrome和运行于服务端Nginx,Zabbix,Tomcat等等。

3.3 Linux系统的特点

Linux系统的特点(继承Unix之外的)

  • 开放源代码、自由传播的类Unix
  • 基于Intel X86系列CPU
  • 支持多任务、多线程、多CPU、多用户
  • 完善的图形用户界面:GNOME,KDE
  • 完善的开发平台:Java/C/C++/Pythton
  • 支持主流数据库:MySQL,Oracle,PostgreSQL
  • 完善的网络服务:HTTP、WWW,SFTP,DNS,SSH等等

3.4 Linux系统的主流发行版

为了便于Linux系统的安装和使用,诞生了诸如RedHat公司的Linux发行商,将Linux内核和各种系统组件以及应用组件组合成一个完整的操作系统。
目前主流的Linux发行版主要由三个,分别是RedHat,Debian和Slackware,后续主流的RHEL,Ubuntu,Open SUSE都是基于前面三个分支演进而来的。

关于RHEL和CentOS的关系:CentOS是基于RHEL源码编译而来,仅仅去除了RHEL源码的商标以及非自由软件部分。

3.5 Linux系统的应用领域

经过20多年的发展,如今的Linux在服务器领域、桌面领域、移动嵌入式领域和云计算、大数据领域占据了广阔的市场。
其中服务器领域在全球占据了75%的市场份额
而Ubuntu也作为最流行的桌面版Linux,基本可以满足日常办公需要,但是普及远远不及Windows。
通过Linux系统架构图可以得知手机操作系统Android的内核就是基于Linux修改而来的。

3.6 Linux系统的版本选择

如果你想从事Linux系统运维与架构设计的工作,推荐使用CentOS7.3系统。
如果仅仅是想尝试下Linux的桌面版,推荐可以使用Open SUSE LEAP 42.3或者Ubuntu17.10
如果对系统稳定性、安全性有更高的要求可以使用FreeBSD

搭建Linux系统运维与架构环境(一)

1 本章概览

主要是介绍虚拟机使用以及硬件要求,同时介绍VMware Workstation的下载和安装。
还使用了VMware Workstation根据物理机的硬件创建虚拟机,为后期的安装CentOS7.3做准备。

2 虚拟机介绍

虚拟机(Virtual Machine)是指通过软件模拟的具有完整的硬件系统功能,运行在一个完全隔离环境中的完整计算机系统。

通过使用虚拟机,可以实现节省成本、安全便捷和简单高效的搭建系统运维和架构设计环境,当然你的物理机(宿主机)性能要足够的强悍。推荐笔记本配置如下:

CPU:Intel i7-7820HK
内存:32G/64G
磁盘:512 SSD+1T SATA

目前主流的虚拟机软件有Windows/Linux(Ubuntu)上的WMWare Workstation,VirtualBox和MacOS上的Paralles Desktop。

不推荐笔记本安装双系统,因为有些特殊软件没有Linux版本,例如PowerDesigner等等。
推荐在Windows上安装VMWare Workstation,然后安装CentOS7.3

3 VMware Workstation的下载和安装

3.1 VMware Workstation的下载

目前VMWareWorkStation的最新版本为VMware Workstation 12.5.7 Pro,谷歌自行搜索下载即可。

3.2 VMware Workstation的安装

VMware Workstation的安装非常简单,只需要在安装时选择路径,同意条款以及提供密钥即可,因为是收费软件,如果条件可以的话建议购买正版软件。

接下来将以图文的形式展示64位Windows10上VMware Workstation安装过程

第一步 启动安装

第二步 同意许可

第三步 选择安装路径

第四步 用户体验设置

第五步 设置快捷方式

第六步 开始安装

第七步 输入许可证

第八步 完成安装

4 使用VMware Workstation创建虚拟机

接下来将使用VMWare Workstation创建一台完整的电脑,说明下物理机的配置。

CPU :i5
内存: 16G
磁盘:128SSD+1T STAT

因为VMware Workstation在创建虚拟机时,根据物理机的不同配置会有不同的设置参数,读者可以根据自己物理机的配置进行调整。

预览VMware Workstation界面

第一步 使用新建虚拟机向导(快捷键Ctrl+N)

第二步 选择虚拟机兼容性

第三步 安装客户机操作系统
这里选择稍后安装

第四步 选择客户机操作系统
这里选择CentOS6.4位

第五步 命名虚拟机以及指定安装位置
虚拟机名称:CentOS7.3
位置:D:\Linux\CentOS

第六步 设置CPU
i5处理器设置2颗CPU,双核即可
i7处理器可以选择2颗CPU,4核

第七步 设置内存
内存推荐4G以上

第八步 设置网路类型
选择NAT或者桥接模式都可以

第九步 设置I/O控制器类型
选择推荐类型:LSI Logic(L)

第十步 选择磁盘类型

第十一步 创建磁盘

第十二步 设定磁盘容量
根据自身的磁盘容量设定

第十三步 指定磁盘文件
总览刚才的配置

第十四步 完成创建虚拟机

到这里虚拟机的创建工作就完成了,如果向修改之前的配置(以添加网卡为例子)可以通过如下图所示的操作来进行
编辑设置

添加网卡

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值