了解云计算、虚拟化、服务器、搭建虚拟环境
服务器
服务器的分类:
塔式、机架(1U=1.75英寸)、2U、4U、刀片式、高密度 (企业一般用机架)
厂家有:戴尔(R730、R430)、浪潮、华为、IBM(这个一般跑的UNIX系统)、联想
服务器内部结构:
与普通PC类似,只是多了raid卡
raid作用:冗余(即使硬盘坏了,换了硬盘,数据也不会丢失)
类UNIX:
AIX(IBM)、Solaris(sun)、HP-UX(HP)、A/UX(Apple)
1、GNU和GPL
GNU计划(又称革奴计划),是由Richard Stallman(理查德·斯托曼)在1983年9月27日公开发起的自由软件集体协作计划。它的目标是创建一套完全自由的操作系统。GNU也称为自由软件工程项目。
GPL是GNU的通用公共许可证(GNU General Public License,GPL),即"反版权"概念,是GNU协议之一,目的是保护GNU软件可以自由的使用、复制、研究、修改和发布。同时要求软件必须以源代码的形式发布。
GNU系统与Linux内核结合构成一个完整的操作系统:一个基于Linux的GNU系统,该操作系统在通常情况下称为"GNU/Linux",或简称Linux。
2、Linux发行版
一个典型的Linux发行版包括:Linux内核,一些GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。
主流的发行版:
Red Hat Enterprise Linux、CentOS、SUSE、Ubuntu、Debian、Fedora、Gentoo
3、Unix和Linux
Linux是基于Unix的,属于Unix类,Uinx操作系统支持多用户、多任务、多线程和支持多种CPU架构的操作系统。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统 linux内核官网: https://www.kernel.org/
GRUB的概念
GNU GRUB(GRand Unified Bootloader简称"GRUB")是一个来自GNU项目的多操作系统启动引导管理程序。
GRUB是一个支持多种操作系统的启动引导管理器,在一台有多个操作系统的计算机中,可以通过GRUB在计算机启动时选择用户希望运行的操作系统。同时GRUB可以引导Linux系统分区上的不同内核,也可用于向内核传递启动参数,如进入单用户模式。
云计算
"云计算"这个词,相信大家都非常熟悉了。
作为IT行业的热门技术,它频繁出现在各大媒体的新闻报道中。BAT这样的互联网企业,也经常把它挂在嘴边。
相信很多人都想学习云计算,跟上技术潮流。如果对云计算有一定了解的话,应该会或多或少地听到这些名词------OpenStack、Hypervisor、KVM、Docker、K8S...
这些名词,全部都属于云计算的范畴。
对于自学的初学者来说,想要理解这些名词的具体含义,还有它们之间的关系,并不是一件容易的事情。
虽然互联网上有很多的资料,但是杂乱无章、晦涩难懂,对新人很不友好,容易让人晕头转向,甚至打退堂鼓。
所以,作为云计算的入门第一课,将给大家做一个通俗易懂的宏观介绍,重点解释最主要的几个名词,和它们之间的关系,希望对大家入门有所帮助。
什么是云计算
在介绍那些古怪名词之前,我先简单介绍一下云计算。
以前电脑被发明的时候,还没有网络,每个电脑(PC),就是一个单机。
这台单机,包括CPU、内存、硬盘、显卡等硬件。用户在单机上,安装操作系统和应用软件,完成自己的工作。
后来,有了网络(Network),单机与单机之间,可以交换信息,协同工作。
再后来,单机性能越来越强,就有了服务器(Server)。人们发现,可以把一些服务器集中起来,放在机房里,然后让用户通过网络,去访问和使用机房里的计算机资源。
再再后来,小型网络变成了大型网络,就有了互联网(Internet)。小型机房变成了大型机房,就有了IDC(Internet Data Center,互联网数据中心)。
当越来越多的计算机资源和应用服务(Application,例如看网页,下电影)被集中起来,就变成了------"云计算(Cloud Computing)"。无数的大型机房,就成了"云端"。
是不是觉得太简单?别急,开始深入。
云计算的道理是简单的,说白了,就是把计算机资源集中起来,放在网络上。但是,云计算的实现方式,就复杂了。
举个例子,如果你只是在公司小机房摆了一个服务器,开个FTP下载服务,然后用于几个同事之间的电影分享,当然是很简单的。
如果是"双11"的淘宝购物节,全球几十亿用户访问阿里巴巴的淘宝网站,单日几十PB(1PB=1024TB=1024×1024GB)的访问量,每秒几百GB的流量......这个,就不是几根网线几台服务器能解决的了。
需要设计一个超大容量、超高并发(同时访问)、超快速度、超强安全的云计算系统,才能满足业务平稳运行的要求。
这才是云计算的复杂之处。
刚才说了,我们把计算机资源,放在云端。这个计算机资源,实际上,分为好几种层次:
第一层次,是最底层的硬件资源,主要包括CPU(计算资源),硬盘(存储资源),还有网卡(网络资源)等。
第二层次,要高级一些,我不打算直接使用CPU、硬盘、网卡,我希望你把操作系统(例如Windows、Linux)装好,把数据库软件装好,我再来使用。
第三层次,更高级一些,你不但要装好操作系统这些基本的,还要把具体的应用软件装好,例如FTP服务端软件、在线视频服务端软件等,我可以直接使用服务。
这三种层次,就是大家经常听到的IaaS、Paas、SaaS。
SaaS: Software-as-a-Service(软件即服务)
PaaS: Platform-as-a-Service(平台即服务)
IaaS: Infrastructure-as-a-Service(基础设施即服务)
再补一张图,可能更直观:
目前主流的云计算服务提供商,例如亚马逊AWS、阿里云、华为云,说白了,都是为大家提供以上三个层次的云资源。你想要什么,它们就提供什么。
继续,继续。这么多样化多层次的云计算服务,阿里、华为们又是怎么提供的呢?
难道说,人工安排?------
如果你要八核CPU、16GB内存、500GB硬盘的服务器,阿里临时安排工程师帮你组装?如果你要装CentOS 7.2(一种类Linux操作系统),MySQL 5.5.60(一种数据库系统),阿里也临时让工程师帮你安装配置?
这显然是不可能的,耗不起人力,也等不起时间。
于是,就有了各种软件和平台,负责对资源进行调用和管理。
什么是虚拟化
如果要对物理资源进行管理,第一步,就是"虚拟化"。
虚拟化是云计算的基础。简单来说,虚拟化就是在一台物理服务器上,运行多台"虚拟服务器"。这种虚拟服务器,也叫虚拟机(VM,Virtual Machine)。
从表面来看,这些虚拟机都是独立的服务器,但实际上,它们共享物理服务器的CPU、内存、硬件、网卡等资源。
物理机,通常称为"宿主机(Host)"。虚拟机,则称为"客户机(Guest)"。
谁来完成物理资源虚拟化的工作呢?就是大名鼎鼎的 Hypervisor 。Hypervisor,汉译过来是"超级监督者",也叫做VMM(Virtual Machine Monitor,虚拟机监视器)。它不是一款具体的软件,而是一类软件的统称。
Hypervisor分为两大类:
第一类,hypervisor直接运行在物理机之上。虚拟机运行在hypervisor之上。
第二类,物理机上安装正常的操作系统(例如Linux或Windows),然后在正常操作系统上安装hypervisor,生成和管理虚拟机。
像VMware、KVM、Xen、Virtual Box,都属于Hypervisor。
VMware大家应该很熟悉,就是VMware Workstation。学习Linux的话,很多人都是在windows系统下安装WMware,然后创建Linux虚拟机。
但是,真正厉害的,是 KVM(kernel-based virtual machine,基于Linux内核的虚拟机)。它是目前最热门最受追捧的虚拟化方案。
KVM这样的Hypervisor软件,实际上是提供了一种虚拟化能力,模拟CPU的运行,更为底层。但是它的用户交互并不良好,不方便使用。于是,为了更好地管理虚拟机,就需要OpenStack这样的云管理平台。
关于OpenStack,我之前曾经介绍过(链接)。它有点像个商店,负责管理商品(计算资源、存储资源、网络资源等),卖给用户,但它本身不制造商品(不具备虚拟化能力),它的商品,来自于KVM。当然,如果不用KVM,也可以用Xen等其它hypervisor。
请记住,上面所说的几个概念,包括VM、KVM、OpenStack等,都主要属于IaaS(基础设施即服务)。这个不难理解吧?
容器 VS 虚拟机
继续往下说。
那么,容器、Docker、K8S,又是什么呢?
根据前文所说的虚拟化方式,人们在使用一段时间后发现,它存在一些问题:
不同的用户,有时候只是希望运行各自的一些简单程序,跑一个小进程。为了不相互影响,就要建立虚拟机。如果建虚拟机,显然浪费就会有点大,而且操作也比较复杂,花费时间也会比较长。
而且,有的时候,想要迁移自己的服务程序,就要迁移整个虚拟机。显然,迁移过程也会很复杂。
有没有办法更灵活快速一些呢?有,这就引入了"容器(Container)"。
容器也是虚拟化,但是属于"轻量级"的虚拟化。它的目的和虚拟机一样,都是为了创造"隔离环境"。但是,它又和虚拟机有很大的不同------虚拟机是操作系统级别的资源隔离,而容器本质上是进程级的资源隔离。
而大家常听说的Docker,就是创建容器的工具,是应用容器引擎。Docker的中文意思,就是码头工人。而它的LOGO,就是一只鲸鱼背着很多货柜箱。
相比于传统的虚拟机,Docker的优势很明显,它启动时间很快,是秒级,而且对资源的利用率很高(一台主机可以同时运行几千个Docker容器)。此外,它占的空间很小,虚拟机一般要几GB到几十GB,而容器只需要MB级甚至KB级。
除了Docker对容器进行创建之外,我们还需要一个工具,对容器进行编排。这个工具,就是K8S。K8S,就是Kubernetes,中文意思是舵手或导航员。Kubernetes这个单词很长,所以大家把中间8个字母缩写成8,就成了K8S。
K8S是一个容器集群管理系统,主要职责是容器编排(Container Orchestration)启动容器,自动化部署、扩展和管理容器应用,还有回收容器。
简单来说,K8S有点像容器的保姆。它负责管理容器在哪个机器上运行,监控容器是否存在问题,控制容器和外界的通信,等等。
通过下面这张K8S系统结构图,就能够看出K8S和容器之间的关系。
除了K8S之外,还有很多种容器管理平台,例如Compose,Marathon,Swarm,Mesos等。
Docker和K8S,关注的不再是基础设施和物理资源,而是应用层,所以,就属于PaaS。明白了吧?
好啦,以上就是今天的内容。再说下去,估计很多人又要晕了。
正如文章开头所说,今天主要是介绍KVM、Hypervisor、OpenStack、Docker、K8S这些名词的意思,它们在云计算系统中的位置,以及它们之间的关系。云计算涉及到大量的需求。同一个需求,会有很多不同的技术来实现。同一个技术,往往又有多个不同的厂家互相竞争。所以,概念和名词就会特别多,发展变化也会很快。
不管怎么说,梳理清楚最关键的名词概念,是学好云计算的第一步。
利用VMwareWorkstation搭建虚拟环境
Centos7.6安装详见:Centos7.6操作系统安装及优化全纪录
CentOS安装示例:https://mp.weixin.qq.com/s/YhafWB4c1JVtcDUGlE1kpw
1、版本下载链接:http://isoredirect.centos.org/centos/7/isos/x86_64/
本文选择下载源和centos版本为
http://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso
一般安装选择CentOS-7-x86_64-DVD-1810.iso这个版本,该版本是标准版,也是推荐版本,CentOS-7-x86_64-Minimal-1810.iso是最小版,具有系统运行所需的最少包数。
2、历史版本下载链接
eg:
1、在VMware安装CentOS
2、快照:如果系统出问题了,可以回到快照的那个位置
3、安装界面解释
-
安装或升级已有的系统
-
安装带有基础的媒体影音驱动
-
紧急救援模式
-
从本地驱动
-
内存测试
Ctrl+alt+F1/F2/F3/F4/F5/F6
在装机过程中,这几个键可以图形与命令界面相互切换
先创建boot分区
在把剩余空间做成LVM(企业中,以企业标准来做,这里只是举例)
创建卷组
分根
分swap
其他:
剩余磁盘空间:
最终效果:
开始分区:
Grub密码设置(这里也可以不用设置)
选择安装的系统
最后安装界面:
由于我们是最小安装,没有图形界面,如果有时候需要用图形界面,我们就可以装这个包组
yum groupinstall Desktop
yum install xclock #(小工具,测试是否可用图形界面)
ssh root@ip -X #表示登录到图形化界面
Xming、Xmanger #(支持图形化工具)
联网(以下部分是参考其他博主的,忘记博主地址了)
这个时候,我们安装的虚拟机,还不能联网,无法把自己的意念传达出去。由于我们没有对虚拟机进行任何设置,所以使用的是默认的NAT模式。
将光标聚焦到命令行窗口,然后输入命令dhclient
。等待几秒钟,执行ping baidu.com
测试以下网络,可以看到能够正常访问网络了。
上面黑漆漆的窗口,就是我们现在的Linux界面。有人觉得很丑,就像是在玩dos,但像我这种不可救药的人,却觉得格外的亲切。
接下来的命令,我们不会再截图,而使用高亮的代码块表示。为了不至于让人晕头转向,请先看下图。
3、外部访问虚拟机
由于NAT模式的特点,我们的虚拟机能够访问外网,但无法被外部发现。酒香竟怕巷子深。为了解决这个问题,我们需要再添加一块网卡。
在做这些更改之前,需要首先关闭虚拟机。可以强制关闭机器,也可以在命令行中输入:
shutdown -h now
虚拟机关闭后,再次点击设置,切换到网络适配器选项卡。如图,添加一个新的网络适配器,适配器类型为Host-only Adapter
。通过这块网卡,我们的宿主机就能够访问它了。
再次启动虚拟机,执行dhclient
命令后,执行ip addr
查看主机的ip地址。可以看到,我们现在有两块网卡,两个ip地址。
记录下192打头的网络地址,我们会使用外部的程序,比如XShell、SecureCRT等,进行连接。比如,我这里的ip地址是:192.168.99.100。不废话,看图。
小提示:关于虚拟网卡的网段,如果有差异。你可以在全局设置里,改成和我一样的。
4、远程连接
你可能已经体验到,通过虚拟机自带的命令行界面进行输入,局限性非常大。通过远程连接,可以把终端界面切换到我们熟悉的操作模式,如果能够显示彩色的终端,那再好不过了。下面介绍几个工具,一般的,使用xshell的居多。
Windows
- XShell 你可能在公司内,见过你的SRE同事,运指如飞,命令字符如流水一般撒过屏幕。即使非常繁杂,难以记忆的密码,也能瞬间输入。他可能用的就是xshell。
- SecureCRT 比较老的一款产品,使用也较多。
- MobaXterm MobaXterm就是一单文件纯绿色软件,下载过来exe包直接运行即可,不需要任何的安装过程。
它们都有免费版和专业版之分。无力购买的话,就找找破解版。但是注意,盗版汉化的ssh客户端,有些别有用心的人会在软件中植入木马,窃取你的密码、证书,这种情况已经发生过很多次。
MacOS
对于macos用户来说,简单的很。直接使用iTerm,输入命令行即可。比如使用下面的命令连接我们的机器。
ssh root@192.168.99.100
Linux
唔,你都已经是Linux环境了,还折腾个啥虚拟机呢?直接用吧
免责声明: 本文部分内容转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除。