木二 YP小站

运维工具简述Ansible及其上风?

Ansible是一款极其大略的开源的自动化运维工具,基于Python开拓,凑集了浩瀚运维工具(puppet, cfengine, chef, func, fabric)的优点。
实现了批量系统配置,批量程序支配,批量运行命令等功能。
同时Ansible是基于模块事情,实在现批量支配的是ansible所运行的模块。

Ansible其他主要的上风:

servletjsp实现表单回填IT运维面试问题总结运维CephDockerApacheNginx等 jQuery

跨平台支持:Ansible在物理、虚拟、云和容器环境中为Linux、Windows、UNIX和网络设备供应无代理支持。
人类可读的自动化:Ansible playbook以YAML文本文件的形式编写,易于阅读,有助于确保每个人都理解他们将要做的事情。
对运用程序的完美描述:Ansible playbook可以进行任何变动,并且可以描述和记录运用程序环境的每个细节。
易于管理的版本掌握:Ansible剧本和项目是纯文本。
它们可以像源代码一样处理,并放在现有的版本掌握系统中。
支持动态库存:Ansible管理的机器列表可以从外部资源动态更新,以便随时捕获所有受管做事器的精确确当前列表,无论根本举动步伐或位置如何。
易于与其他系统集成的编排:HP SA、Puppet、Jenkins、Red Hat Satellite,以及存在于环境中的其他系统,都可以被利用并集成到Ansible事情流中。
简述Ansible事情机制及其特性?

Ansible是一款自动化运维工具,基于Python开拓,具有批量系统配置, 批量程序支配, 批量运行命令等功能。

其事情机制如下:

1、用户利用Ansible或Playbook,在做事器中断输入Ansible的Ad-Hoc命令集或Playbook;2、Ansible遵照预先编排的规则将Playbooks逐条拆解为Play;3、Play组织成Ansible可识别的任务(Task);4、Task会调用任务所涉及的所有模块(Module)和插件(Plugin);5、读取Inventroy中定义的主机列表;6、通过SSH认证(默认)将任务集以临时文件或命令的形式传输到远程客户端实行并返回实行结果。
其特性如下:7、no agents:不须要在被管控主机上安装任何客户端,只需SSH、Python即可,建议Python版本为2.6.6以上;8、no server:无做事器端, 利用时直接运行命令即可;9、modules in any languages:基于模块事情, 丰富的内置模块,可利用任意措辞开拓模块;10、yaml, not code:利用yaml措辞定制剧本playbook,易于管理,API大略明了;11、ssh by default:基于SSH事情,全体过程大略、方便、安全,建议利用公钥办法认证;12、strong multi-tier solution:可实现多级指挥。
简述Ansible中如何保存敏感数据?

在ansible内容中保留秘密数据并仍旧公开共享,那么可以在playbooks中利用Vault。
Ansible Vault,它包含在Ansible中,可以加密和解密Ansible利用的任何构造化数据文件。

简述Ansible适宜的场景?

Ansible将编排与配置管理、供应和运用程序支配结合并统一在一个易于利用的平台上。
Ansible的一些紧张场景包括:

配置管理:集中配置文件管理和支配是Ansible的一个常见场景。
运用程序支配:当利用Ansible定义运用程序,并利用Ansible Tower管理支配时,团队可以有效地管理从开拓莅临盆的全体运用程序生命周期。
支配:当在系统上支配或安装运用程序时,Ansible和Ansible Tower可以帮助简化供应系统的流程,无论是PXE启动的裸金属做事器或虚拟机,还是从模板创建虚拟机或云实例。
持续交付:创建CI/CD管道须要许多团队的折衷和参与。
如果没有一个大略的自动化平台,团队协作很难完成。
而Ansible playbook在运用程序的全体生命周期中可以保持适当的支配(和管理)安全性和审计:当安全策略在Ansible中定义时,可以将站点范围的安全策略的扫描和修复集成到其他自动化流程中。
安全性是支配的所有内容中不可或缺的一部分。
编排:配置本身不能定义环境,须要定义多个配置如何交互,并确保可以将不同的部分作为一个整体来管理。
简述Ansible Inventory?

Ansible中受管主机列在主机清单(inventory)文本文件中,清单还将这些系统组织成group,以便更随意马虎地进行批量管理。
一个Inventory定义了Ansible将管理的主机凑集。
这些主机还可以分配至组,可以对组进行批量管理。
组可以包含子组,主机可以是多个组的成员。
Inventory根据类型可分为静态清单和动态清单:

静态主机Inventory可以由文本文件定义。
动态主机Inventory可以由脚本或其他程序根据须要利用外部信息供应者天生。
简述Ansible配置文件优先级?

Ansible 只利用最高优先级配置文件中的设置,其它配置文件中的设置将被忽略。
纵然存在其他优先级较低的文件,它们的设置也将被忽略,并且不会与所选配置文件中的设置相结合。

$ANSIBLE_CONFIG环境变量指定的任何文件都将覆盖所有其他配置文件。
如果没有设置该变量,接下来将检讨运行ansible命令的目录以查找ansible.cfg文件。
如果该文件不存在,则检讨用户的主目录以查找.ansible.cfg文件。
如上配置文件都不存在时,才利用全局/etc/ansible/ansible.cfg文件。

简述Ansible ad-hoc命令?

Ad-Hoc命令是一种快速实行单个Ansible任务的方法,适宜于不须要永久保存该任务,临时实行的场景。
Ad-Hoc是大略的掌握台操作,无需编写剧本就可以运行。
它们对付快速测试和变动非常有用。

简述Ansible ad-hoc和playbook的差异?Ad-Hoc 命令可以作为一次性命令对一组目标主机运行单个、大略的任务。
Ad-Hoc 不适宜繁芜配置管理或编配场景,Ad-Hoc 一次只能调用一个模块和一组参数。
当须要多个操作时,必须利用多个 Ad-Hoc 来实行。
playbook可以实现以一种大略单纯重复的办法对一组目标主机运行多个繁芜的任务。
Playbook 是描述要在受管主机上履行的必要配置或程序性步骤的文件。
Playbook 为配置管理和支配供应了强大而灵巧的办理方案。
Playbook 可以将冗长而繁芜的管理任务转变为可轻松重复的进程,并且可预测成果然而。
playbook 是一个文本文件,个中包含一个或多个按顺序运行的play的列表。
playbook中,可以将playbook中的tasks保存为人类可读且可立即运行的形式。
play 是一组有序的任务,该当对从目录中选择的主机运行。
简述Ansible变量?

Ansible 利用变量存储全体 Ansible 项目文件中可重复利用的值,从而可以简化项目的创建和掩护,并减少缺点的发生率。
在定义Ansible变量时,常日有如下三种范围的变量:

global范围:从命令行或Ansible配置中设置的变量;play范围:在 play 和干系构造中设置的变量;host范围:inventory、facts 或 register 的变量,在主机组和个别主机上设置的变量。
简述Ansible如何实现任务的循环?

大略循环:

Ansible支持利用loop在一组item上迭代任务;loop可以利用列表中的每个项、列表中每个文件的内容、天生的数字序列或利用更繁芜的构造来重复任务。
利用loop使管理员不必编写利用相同模块的多个任务。

繁芜(嵌套)循环:

with_nested键用于嵌套循环,循环在循环中运行。
它须要一个包含两个或多个列表的列表。
例如,将一个列表划分为两个列表,任务将迭代第一个列表中的每一项与第二个列表中的每一项。
简述Ansible hanlder?

Ansible模块被设计成幂等的,即在一个适当编写的剧本中,剧本及其任务可以在不变动受管主机的情形下多次运行,除非它们须要进行变动以使受管主机达到所需的状态。

然而,有时当一个任务对系统进行了变动后同时须要运行另一个任务。
例如,对做事的配置文件的变动可能须要重新加载做事,以便变动后的配置生效。
此时就须要利用hanlder程序。
handler程序是相应由其他任务组成的关照的任务。
每个handler程序都有一个全局惟一的名称,并在剧本中任务块的末端触发。

如果没有任务通过名称调用handler程序,它将不会运行。

如果一个或多个任务都调用handler程序,它将在剧中的所有其他任务完成后仅运行一次。

由于handler程序是任务,以是可以在handler程序中利用与处理任何其他任务相同的模块。
常日,handler程序用于重新启动主机和重新启动做事。

handler程序可以视为非活动任务,只有在利用notify语句显式调用时才会触发这些任务。

简述Ansible Block?

在 playbook 中, blocks 是席卷了任务的子句;

blocks 许可对任务进行逻辑分组,并可用于掌握任务的实行办法,例如,管理员可以定义一组紧张任务和一组附加任务,附加任务仅在第一组失落败时实行。
为此,可利用三个关键字在 playbook 中利用块:

block:定义要运行的紧张任务;rescue:定义将在 block 子句中定义的任务失落败时运行的任务;always:定义始终都独立运行的任务,不论 block 和 rescue 子句中定义的任务是成功还是失落败。
简述Ansible如何处理play缺点的?

Ansible审查每个任务的返回代码,以确定任务是否成功或失落败。
默认情形下,当一个任务失落败时,Ansible会立即中止该主机上的其他操作,并跳过所有后续任务。

实际生产中,若希望纵然任务失落败也能连续实行play,Ansible也包含了多种特性用于管理任务缺点:

忽略任务失落败:在任务中利用ignore_errors关键字忽略缺点,纵然任务失落败,也连续在主机上实行playbook。

简述Ansible角色?

数据中央有各种不同类型的主机。
如web做事器、数据库做事器,基于开拓环境的做事器。
随着韶光的推移,具有处理所有这些情形的任务和职员的Ansible playbook将变得弘大而繁芜。

角色许可将繁芜的剧本组织成独立的、更小的剧本和文件。
角色供应了一种从外部文件加载任务、处理程序和变量的方法。
角色也可关联和引用静态的文件和模板。
角色可以编写成知足普通用场需求,并且能被重复利用。
定义角色的文件具有特定的名称,并以严格的目录构造进行组织。
简述Ansible Galaxy?

Ansible Galaxy是一个由各种Ansible管理员和用户编写的Ansible角色的公共库。
它是一个包含数千个Ansible角色的归档文件,并且有一个可搜索的数据库,帮助Ansible用户识别可能帮助他们完成管理任务的角色。
Ansible Galaxy包括指向新用户和角色开拓职员的文档和视频的链接。

简述Ansible如何掌握任务的并行实行?

通过在所有主机上并走运行任务,Ansible可以对剧本的实行进行更多的掌握。
默认情形下,Ansible默认最多并行5个,因此它将同时在5台不同的机器上运行一个特定的任务。
Ansible可以通过配置forks来设置并行实行任务数量。

同时Ansible也可以通过serial来减少ork数量所指定的并行书,serial关键字紧张用于掌握滚动更新,避免一次性更新过多的节点。

简述Ansible故障后的排查思路?日志判断:默认情形下,Ansible没有配置为将其输出,记录到任何日志文件中。
可通过ansible.cfg配置文件default部分中的log_path参数或$ANSIBLE_LOG环境变量进行配置。
然后通过日志进行定位。
Debug模块:调试模块是Ansible可用的模块之一,它可以更好地理解掌握节点上正在进行的操作。
这个模块可以在playbook实行时为某个变量供应值。
syntax-check:通过ansible-playbook 命令的 --syntax-check命选项检讨剧本的YAML语法。
diff:Ansible还供应了--diff选项。
此选项报告对受管主机上的模板文件所做的变动。
如果与--check选项一起利用,这些变动将显示出来,而不是实际实行。
从而判断Ansible全体过程须要做何种变动。
开源运用简述Ceph的上风及其特点?

Ceph是一个分布式的数据工具存储,Ceph相对其他存储系统具有如下上风:

CRUSH算法:ceph摒弃了传统的集中式存储元数据寻址的方案,而利用CRUSH算法完成数据的寻址操作。
能够实现各种负载的副本放置规则,例如跨机房、机架感知等。
Crush算法有相称强大的扩展性,理论上支持数千个存储节点,从而增强了Ceph弹性扩展和高可用性。
高可用:通过CRUSH算法指定副本的物理存储位置以分隔故障域,支持数据强同等性,ceph可以忍受多种故障场景并自动考试测验并行修复。
高扩展性:Ceph本身并没有主控节点,扩展起来比较随意马虎,并且理论上,它的性能会随着磁盘数量的增加而线性增长。
特性丰富:Ceph支持三种调用接口:工具存储,块存储,文件系统挂载。
三种办法可以一同利用。
Ceph紧张特点如下:统一存储;无任何单点故障;数据多份冗余;存储容量可扩展;自动容错及故障自愈。
简述Ceph存储体系架构?

Ceph体系架构紧张由RADOS和RADOS GW和RBD以及CephFS构成。

RADOS(Reliable, Autonomic Distributed Object Store)是Ceph的底层核心,RADOS本身也是分布式存储系统,CEPH所有的存储功能都是基于RADOS实现。
RADOS由两个组件组成:OSD和Monitor。
OSD紧张供应存储资源,每一个disk、SSD、RAID group或者一个分区都可以成为一个OSD,而每个OSD还将卖力向该工具的繁芜节点分发和规复;Monitor掩护Ceph集群并监控Ceph集群的全局状态,供应同等性的决策。
RADOS GW和RBD:RADOS GateWay、RBD其浸染是在librados库的根本上供应抽象层次更高、更便于运用或客户端利用的上层接口。
个中,RADOS GW是一个供应与Amazon S3和Swift兼容的RESTful API的gateway,以供相应的工具存储运用开拓利用。
RBD则供应了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume。
CEPHFS:CEPHFS则供应了POSIX接口,用户可直接通过客户端挂载利用。
简述Ceph Pool有几种类型?

Ceph存储池Pool是Ceph存储集群用于存储工具的逻辑分区。
池类型确定池用于确保数据持久性的保护机制,Ceph有两种Pool类型:

replication类型:在集群等分布每个工具的多个副本。

erasure coding类型:将每个工具分割成块,并将它们与其他擦除编码块一起分发,以利用自动纠错机制保护工具。

简述Ceph Pool、PG、ODDs的关系?

Ceph存储池Pool是Ceph存储集群用于存储工具的逻辑分区。

Pool中存在一定的数量的PG,PG将工具存储在一组由CRUSH算法确定的osd中。

Ceph利用CRUSH算法将工具分配给池中的一个PG,根据池的配置和CRUSH算法,PG自动映射到一组OSDs。

一个PG里包含一堆工具,一个工具只能属于一个PG。

简述Ceph节点的角色?

所有Ceph存储集群的支配都始于支配一个个Ceph节点、网络和Ceph存储集群。
Ceph存储集群至少须要一个Ceph Monitor和两个OSD守护进程。
而运行Ceph文件系统客户端时,则必须要有元数据做事器(Metadata Server)。

Ceph OSDs:Ceph OSD守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、规复、回填、再均衡,并通过检讨其他OSD守护进程的心跳来向Ceph Monitors供应一些监控信息。
当Ceph存储集群设定为有2个副本时,至少须要2个OSD守护进程,集群才能达到active+clean状态(Ceph默认有3个副本)。
Monitors:Ceph Monitor掩护着展示集群状态的各种图表,包括监视器图、OSD图、归置组(PG)图、和CRUSH 图。
MDSs:Ceph元数据做事器(MDS)为Ceph文件系统存储元数据(也便是说,Ceph块设备和Ceph 工具存储不该用MDS)。
元数据做事器使得POSIX文件系统的客户端,可以在不对Ceph存储集群造成包袱的条件下,实行诸如ls、find等基本命令。
简述Ceph的适应场景?

Ceph的运用处景紧张由它的架构确定,Ceph供应工具存储、块存储和文件存储。

LIBRADOS运用

Librados供应了运用程序对RADOS的直接访问,目前Librados已经供应了对C、C++、Java、Python、Ruby和PHP的支持。

RADOSGW运用

此类场景基于Librados之上,增加了HTTP协议,供应RESTful接口并且兼容S3、Swfit接口。
RADOSGW将Ceph集群作为分布式工具存储,对外供应做事。

RBD运用

此类场景也是基于Librados之上的,细分为下面两种运用处景。

第一种运用处景为虚拟机供应块设备。
通过Librbd可以创建一个块设备(Container),然后通过QEMU/KVM附加到VM上。
通过Container和VM的解耦,使得块设备可以被绑定到不同的VM上。

第二种运用处景为主机供应块设备。
这种场景是传统意义上的理解的块存储。

以上两种办法都是将一个虚拟的块设备分片存储在RADOS中,都会利用数据条带化提高数据并行传输,都支持块设备的快照、COW(Copy-On-Write)克隆。
最主要的是RBD还支持Live migration。

CephFS(Ceph文件系统)

此类运用是基于RADOS实现的PB级分布式文件系统,个中引入MDS(Meta Date Server),它紧张为兼容POSIX文件系统供应元数据,比如文件目录和文件元数据。

简述Docker的特性?

Docker紧张有如下特性:

标准化担保同等的运行环境弹性伸缩,快速扩容方便迁移持续集成、持续交付与持续支配高性能不须要进行硬件虚拟以及运行完全的操作系统轻量级快速启动隔离性进程隔离简述Docker容器的几种状态?

Docker容器可以有四种状态:

运行已停息重新启动已退出简述Dockerfile、Docker镜像和Docker容器的差异?

Dockerfile 是软件的原材料,Docker镜像 是软件的交付品,而 Docker容器 则可以认为是软件的运行态。
从运用软件的角度来看,Dockerfile、Docker 镜像与 Docker 容器分别代表软件的三个不同阶段,Dockerfile 面向开拓,Docker 镜像成为交付标准,Docker 容器则涉及支配与运维。

简述Docker与KVM(虚拟机)的差异?容器支配大略,虚拟机支配相对繁芜。

虚拟化技能依赖物理CPU和内存,是硬件级别的;

而docker构建在操作系统上,利用操作系统的containerization技能,以是docker乃至可以在虚拟机上运行。

容器秒级启动,虚拟机常日分钟级启动。

传统的虚拟化技能在构建系统的时候较为繁芜,须要大量的人力;

而docker可以通过Dockfile来构建全体容器,重启和构建速率很快。

容器须要的资源(如磁盘、CPU、内存)相对更少。
容器比较轻便,虚拟机相对较重。

虚拟化系统一样平常都是指操作系统级观点,比较繁芜,称为“系统”;

而docker开源而且轻量,称为“容器”,单个容器适宜支配少量运用,比如支配一个redis、一个memcached。

简述Docker紧张利用的技能?

容器紧张利用如下技能:

Cgroup:资源掌握Namespace:访问隔离rootfs:文件系统隔离容器引擎(用户态工具):生命周期掌握简述Docker体系架构?

Docker体系相对大略,紧张涉及如下5个组件:

Docker客户端 – Docker

docker客户端则扮演着docker做事真个远程掌握器,可以用来掌握docker的做事端进程。

Docker做事端 – Docker Daemon

docker做事端是一个做事进程,管理着所有的容器。

Docker镜像 – Image

docker镜像,一个能够运行在docker容器上的一组程序文件,是一个只读的模板,不包含任何动态数据。

Docker容器 – Docker Container

docker容器,便是运行程序的载体,容器是镜像运行时的实体。

Docker镜像仓库 -- Registry

Docker仓库是集中存放镜像文件的场所,Docker仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

简述Docker如何实现网络隔离?

Docker利用了网络的命名空间特性,实现了不同容器之间的网络隔离。
命名空间可以支持网络协议栈的多个实例,独立的协议栈被隔离到不同的命名空间中。

因此处于不同命名空间中的网络栈是完备隔离的,彼此之间无法通信。
每个独立的命名空间中可以有自己独立的路由表及独立的iptables设置来供应包转发、NAT及IP包过滤等功能。

简述Linux文件系统和Docker文件系统?

Linux文件系统:由bootfs和rootfs组成,bootfs紧张包含bootloader和kernel,bootloader紧张是勾引加载kernel,当kernel被加载到内存之后bootfs就被卸载掉了。
rootfs包含的便是范例linux系统中/dev,/proc,/bin,/etc等标准目录。

Docker文件系统:Docker容器是建立在Aufs分层文件系统根本上的,Aufs支持将不同的目录挂载到同一个虚拟文件系统下,并实现一种layer的观点。
Aufs将挂载到同一虚拟文件系统下的多个目录分别设置成read-only,read-write以及whiteout-able权限。
docker 镜像中每一层文件系统都是read-only。

简述Docker网络模式?

Docker利用Linux的Namespaces技能来进行资源隔离,个中Network Namespace实现隔离网络。

一个Network Namespace供应了一份独立隔离的网络环境,包括网卡、路由、Iptable规则等,Docker网络有如下四种模式:

host模式:host模式下容器将不会得到独立的Network Namespace,该模式下与宿主机共用一个Network Namespace。
容器将不会虚拟出自己的网卡,不会配置独占的IP等,而是利用宿主机的IP和端口。
container模式:Container 网络模式是 Docker 中一种较为特殊的网络的模式,处于container模式下的 Docker 容器会共享其他容器的网络环境,因此,两个或以上的容器之间不存在网络隔离,而配置container模式的容器又与宿主机以及除此之外其他的容器存在网络隔离。
none模式:none模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置和布局任何网络环境。
Docker 容器采取了none 网络模式,那么容器内部就只能利用loopback网络设备,不会再有其他的网络资源。
Docker Container的none网络模式意味着不给该容器创建任何网络环境,容器只能利用127.0.0.1的本机网络。
bridge模式:bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将该宿主机上的Docker容器连接到一个虚拟网桥上。
简述Docker跨主机通信的网络实现办法?

docker跨主机通信按事理可通过以下三种办法实现:

直接路由办法:直接在不同宿主机之间添加静态路由;桥接办法(如pipework):通过静态指定容器IP为宿主机IP同一个网络的形式,即可实现。
Overlay隧道办法:利用overlay网络实现,Overlay网络指在现有网络层之上叠加的虚拟化技能,实现运用在网络上的承载,并能与其他网络业务分离,并且以基于IP的网络技能为主,如flannel、ovs+gre。
简述flannel网络模型实现事理?

Flannel为每个host分配一个subnet,容器从subnet等分配IP,这些IP可以在host间路由,容器间无需利用nat和端口映射即可实现跨主机通信。
每个subnet都是从一个更大的IP池中划分的,flannel会在每个主机上运flanneld的agent,卖力从池子等分配subnet。

Flannel利用etcd存放网络配置、已分配的subnet、host的IP等信息,Flannel数据包在主机间转发是由backend实现的,目前已经支持UDP、VxLAN、host-gw、AWS VPC和GCE路由等多种backend。

简述什么是Apache做事器?

Apache做事器是一个非常盛行、功能强大并且开源的Web做事器,基于HTTP超文本传输协议运行,这一协议供应了做事器和客户端Web浏览器通信的标准。
它支持SSL、CGI文件、虚拟主机等许多功能特性。

简述Apache虚拟主机?

Apache虚拟主机相称于一个在同一台做事器中却相互独立的站点,从而实现一台主机对外供应多个 web 做事,每个虚拟主机之间是独立的,互不影响的。
Apache具有两种类型的虚拟主机:基于名称的虚拟主机和基于IP的虚拟主机。

简述Apache的Worker MPM和Prefork MPM之间的差异?

它们都是MPM,Worker和Prefork有它们各清闲Apache上的运行机制,取决于哪种模式启动Apache。
Worker MPM和Prefork MPM基本的差异在于它们产生子进程的处理过程。

1、Prefork MPM中,一个主httpd进行被启动,这个主进程会管理所有其它子进程为客户端要求供应做事。
Worker MPM中一个httpd进程被激活,则会利用不同的线程来为客户端要求供应做事.2、Prefork MPM利用多个子进程,每一个进程带有一个线程,Worker MPM利用多个子进程,每一个进程带有多个线程。
3、Prefork MPM中的连接处理,每一个进程一次处理一个连接而在Worker MPM中每一个线程一次处理一个连接。
4、内存占用Prefork MPM占用弘大的内存,而Worker MPM占用更小的内存。
简述Nginx是什么及其紧张特点?

Nginx是一款自由的、开源的、高性能的HTTP做事器和反向代理做事器。
可以作为一个HTTP做事器进行网站的发布处理,同时也可以作为反向代理进行负载均衡的实现。
其紧张特点有:

霸占内存少,并发能力强。
Nginx利用基于事宜驱动架构,使得其可以支持数以百万级别的TCP连接。
高度的模块化和自由软件容许证使得第三方模块非常丰富。
Nginx是一个跨平台做事器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上。
简述Nginx和Apache的差异?Nginx是一个基于事宜的Web做事器,Apache是一个基于流程的做事器;Nginx所有要求都由一个线程处理,Apache单个线程处理单个要求;Nginx避免子进程的观点,Apache是基于子进程的;Nginx在内存花费和连接方面更好,Apache在内存花费和连接方面一样平常;Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件;Nginx支持热支配,Apache不支持热支配;Nginx对付静态文件处理具有更高效率,Apache相对一样平常;Nginx在反向代理场景具有明显上风,Apache相对一样平常。
简述Nginx紧张运用的场景?

基于Nginx的特性,Nginx的运用处景紧张有:

http做事器:Nginx是一个http做事可以独立供应http做事,可以做网页静态做事器。
虚拟主机:可以实现在一台做事器虚拟出多个网站。
正反代理:负载均衡或加速,当网站的访问量达到一定程度后,单台做事器不能知足用户的要求时,须要用多台做事器集群可以利用Nginx做反向代理,并且多台做事器可以均匀分担负载。
简述Nginx HTTP连接和要求的关系?

HTTP是建立在TCP上,一次HTTP要求须要先建立TCP三次握手(称为TCP连接),在连接的根本上再进行HTTP要求。

HTTP要求建立在一次TCP连接根本上,对付HTTP会话,一次TCP连接可以建立多次HTTP要求。

简述Nginx支持哪些访问掌握办法?连接限定:Nginx自带的limit_conn_module模块(TCP连接频率限定模块)和limit_req_mudule模块(HTTP要求频率限定模块)支持对连接频率以及要求频率、来源进行限定,常日可可以用来防止DDOS攻击。
IP限定:Nginx利用http_access_module模块可实现基于IP的访问掌握,但通过代理可以绕过限定。
账号限定:Nginx利用http_auth_basic_module模块可实现用户密码的登录限定。
流量限定:Nginx利用http_core_moduleblock模块可实现客户端传送相应的速率限定。
简述Nginx Master进程和Worker节点?

master进程紧张用来管理worker进程,包含:吸收来自外界的旗子暗记,向各worker进程发送旗子暗记,监控worker进程的运行状态,当worker进程退出后(非常情形下),会自动重新启动新的worker进程。

worker进程则是处理基本的网络事宜。
多个worker进程之间是对等的,他们同等竞争来自客户真个要求,各进程相互之间是独立的。
一个要求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的要求。

简述Nginx如何处理HTTP要求?首先,Nginx 在启动时,会解析配置文件,获取须要监听的端口与 IP 地址,然后在 Nginx 的 Master 进程里面先初始化好这个监控的Socket(创建 Socket,设置 addr、绑定ip和端口,然后listen 监听)。
然后,再 fork 出多个子进程出来。
之后,子进程会竞争 accept 新的连接。
此时,客户端就可以向 nginx 发起连接了。
当客户端与nginx完成TCP三次握手,与 nginx 建立好一个连接后。
此时,某一个子进程会 accept 成功,得到这个建立好的连接的 Socket ,然后创建 nginx 对连接的封装。
接着,设置读写事宜处理函数,并添加读写事宜来与客户端进行数据的交流。
末了,Nginx 或客户端来主动关掉连接,完玉成部HTTP要求的处理。
简述Nginx对付HTTP要求采取哪两种机制进行处理?

Nginx 是一个高性能的 Web 做事器,能够同时处理大量的并发要求。
它结合多进程机制和异步非壅塞机制 。

多进程机制:做事器每当收到一个客户端要求时,就有做事器主进程 (master process)天生一个子进程(worker process)和客户端建立连接进行交互,直到连接断开,该子进程就结束了。
利用进程的好处是各个进程之间相互独立,不须要加锁,减少了利用锁对性能造成影响。
其次,采取独立的进程,可以让进程相互之间不会影响 ,如果一个进程发生非常退出时,其它进程正常事情,master进程则很快启动新的worker进程,确保做事不会中断,从而将风险降到最低。
缺陷是操作系统天生一个子进程须要进行 内存复制等操作,在资源和韶光上会产生一定的开销。
当有大量要求时,会导致系统性能低落 。
异步非壅塞机制:每个事情进程利用异步非壅塞办法,可以处理多个客户端要求 。
当某个事情进程吸收到客户端要求往后,调用 IO 进行处理,如果不能立即得到结果,就去处理其他要求(即为非壅塞 )。
而客户端在此期间也无需等待相应,可以进行其他任务(即为 异步 )。
当IO返回时,就会关照此事情进程。
该进程得到关照,暂时挂起当前处理的事务去相应客户端要求。
简述Nginx支持哪些类型的虚拟主机?

对付Nginx而言,每一个虚拟主机相称于一个在同一台做事器中却相互独立的站点,从而实现一台主机对外供应多个 web 做事,每个虚拟主机之间是独立的,互不影响的。
通过 Nginx 可以实现虚拟主机的配置,Nginx 支持三种类型的虚拟主机配置:

基于 IP 的虚拟主机(较少利用)基于域名的虚拟主机基于端口的虚拟主机简述Nginx缓存及其浸染?

缓存对付Web至关主要,尤其对付大型高负载Web站点。
Nginx缓存可作为性能优化的一个主要手段,可以极大减轻后端做事器的负载。
常日对付静态资源,即较少常常更新的资源,如图片,css或js等进行缓存,从而在每次刷新浏览器的时候,不用重新要求,而是从缓存里面读取,这样就可以减轻做事器的压力。

简述Nginx作为代理缓存后,客户端访问的过程?

利用Nginx作为代理缓存后,可加快客户真个访问,其过程大致如下:

1、第一步:客户端第一次向Nginx要求数据A;2、第二步:当Nginx创造缓存中没有数据A时,会向做事端要求数据A;3、第三步:做事端吸收到Nginx发来的要求,则返回数据A到Nginx,并且缓存在Nginx;4、第四步:Nginx返回数据A给客户端运用;5、第五步:客户端第二次向Nginx要求数据A;6、第六步:当Nginx创造缓存中存在数据A时,则不会要求做事端;7、第七步:Nginx把缓存中的数据A返回给客户端运用。
简述Nginx代理及其类型?

代理(forward)是一个位于客户端和原始做事器(origin server)之间的做事器,即代理做事器。
为了从原始做事器取得内容,客户端向代理做事器发送一个要求并指定目标原始做事器,然后代理做事器向原始做事器转交要求并将得到的内容返回给客户端。
其常日有如下三种代理模式:

正向代理(forward proxy):一个位于客户端和原始做事器(origin server)之间的做事器,为了从原始做事器取得内容,客户端向代理发送一个要求并指定目标(原始做事器),然后代理向原始做事器转交要求并将得到的内容返回给客户端。
反向代理(reverse proxy):指以代理做事器来接管 Internet上的连接要求,然后将要求,发给内部网络上的做事器并将从做事器上得到的结果返回给 Internet 上要求连接的客户端,此时期理做事器对外就表现为一个反向代理做事器。
透明代理简述Nginx盗链及如何防护?

盗链 指的是在自己的界面展示非本做事器上的内容,通过技能手段得到其他做事器的资源。
绕过他人资源展示页面,在自己页面向用户供应此内容,从而减轻自己做事器的包袱,由于真实的空间和流量来自其他做事器。

因此,常日为了避免被盗链,常日Web做事器建议配置防盗链。
Nginx防盗链其紧张防盗链思路是能差异哪些要求是非正常用户要求,对付非正常用户的要求直接反馈403或重定向至其他页面。

简述Nginx负载均衡的意义?

负载均衡是将负载分摊到多个操作单元上实行,从而提高做事的可用性和相应速率,带给用户更好的体验。
对付Web运用,通过负载均衡,可以将一台做事器的事情扩展到多台做事器中实行,提高全体网站的负载能力。
实在质采取一个调度者,担保所有后端做事器都将性能充分发挥,从而保持做事器集群的整体性能最优,这便是负载均衡。

简述Nginx负载均衡的上风?

Nginx作为负载均衡用具有极大的上风,紧张表示在:

高并发连接内存花费少配置文件非常大略本钱低廉支持Rewrite重写规则内置的康健检讨功能节省带宽稳定性高简述Nginx负载均衡紧张的均衡机制(策略)?

Nginx作为负载均衡用具有极大的上风,其负载均衡策略可以划分为两大类:内置策略和扩展策略,扩展策略为第三方供应。

内置策略轮询(默认):Nginx根据要求次数,将每个要求均匀分配到每台做事器;weight:加权轮询,加权轮询则是在第一种轮询的根本上对后台的每台做事授予权重,做事器的权重比例越大,被分发到的概率也就越大。
least_conn:最少连接,将要求分配给连接数最少的做事器。
Nginx会统计哪些做事器的连接数最少。
ip_hash:IP 哈希,绑定处理要求的做事器。
第一次要求时,根据该客户真个IP算出一个HASH值,将要求分配到集群中的某一台做事器上。
后面该客户真个所有要求,都将通过HASH算法,找到之前处理这台客户端要求的做事器,然后将要求交给它来处理。
扩展策略fair:按后端做事器的相应韶光来分配要求,相应韶光短的优先分配。
url_hash:按访问url的hash结果来分配要求,使每个url定向到同一个后端做事器,后端做事器为缓存时比较有效。
简述Nginx负载均衡(反向代理)通过什么办法实现后端RS的康健检讨?

nginx负载均衡(反向代理)包含内置的或第三方扩展来实现做事器康健检测的。
如果后端某台做事器相应失落败,nginx会标记该台做事器失落效,在特定时间内,要求不分发到该台上。

fail_timeout:该指令定义了多永劫光做事器将被标记为失落败。
在fail_timeout后,做事器还是failed,nginx将检测该做事器是否存活,如果探测成功,将标记为活的。
max_fails:该指令设置在fail_timeout期间内连续的失落败考试测验。
默认情形下,max_fails为1。
如果被设置为0,该做事器的康健检测将禁用。
简述Nginx动静分离?

为了提高网站的相应速率,减轻程序做事器(Tomcat,Jboss等)的负载,对付静态资源,如图片、js、css等文件,可以在反向代理做事器中进行缓存,这样浏览器在要求一个静态资源时,代理做事器就可以直接处理,而不用将要求转发给后端做事器。
对付用户要求的动态文件,如servlet、jsp,则转发给Tomcat,Jboss做事器处理,这便是动静分离。
即动态文件与静态文件的分离。

简述Nginx动静分离的事理?

动静分离可通过location对要求url进行匹配,将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台运用分开支配,提高用户访问静态代码的速率,降落对后台运用访问。
常日将静态资源放到nginx中,动态资源转发到tomcat做事器中。

简述Nginx同源策略?

同源策略是一个安全策略。
同源,指的是协议,域名,端口相同。
浏览器处于安全方面的考虑,只许可本域名下的接口交互,不同源的客户端脚本,在没有明确授权的情形下,不能读写对方的资源。

简述Nginx跨域及如何实现?

从一个域名的网页去要求另一个域名的资源,或任何协议、域名、端口有一惩罚歧的要求,就被当作是跨域,即都被当身分歧源。

常日基于安全考虑,Nginx启用了同源策略,即限定了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。
这是一个用于隔离潜在恶意文件的主要安全机制。

Nginx若要实现跨域访问,可通过JSONP和CORS进行实现。

简述Nginx重定向及其利用的场景?

重定向(Redirect)指通过各种方法将各种网络要求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变革也是对数据报文经由路径的一种重定向)。

URL重写是指通过配置conf文件,以让网站的URL中达到某种状态时则定向/跳转到某个规则,比如常见的伪静态、301重定向、浏览器定向等。
当客户端浏览某个网址时,将其访问导向到另一个网址的技能。

其紧张场景有如下两个:

将一串很长的网址,转成较短的网址,从而实现便于传播、易于影象。
调度或改换Web做事器,网址(域名)又必须要变更(如访问目录、访问扩展名HTML变为PHP、访问域名),为了能使旧的访问依旧生效,从而实现自动重定向到新的网站。
简述Nginx地址重写、地址转发、反向代理?地址重写:为了实现地址的标准化,如地址栏中中输入 www.baidu.com. 也可以输入 www.baidu.cn。
末了都会被重写到 www.baidu.com 上。
浏览器的地址栏也会显示www.baidu.com。
即nginx把收到客户端要求的内容所对应的做事器地址发给客户端,让客户端自己去获取,nginx同时返回302精确信息。
地址转发:指在网络数据传输过程中数据分组到达路由器或桥接器后,该设备通过检讨分组地址并将数据转发到最近的局域网的过程。
反向代理:当浏览器访问网站时,nginx反向代理做事器会代替客户端向后端做事器查找所需的内容,然后nginx反向代理做事器会把查找的内容返回给客户端。
简述Nginx地址重写和地址转发的差异?

地址重写和地址转发有以下不同点:

地址重写会改变浏览器中的地址,使之变成重写成浏览器最新的地址。
而地址转发不会改变浏览器的地址的。
地址重写会产生两次要求,而地址转发只会有一次要求。
地址转发一样平常发生在同一站点项目内部,而地址重写且不受限定。
地址转发的速率比地址重定向快。
简述Nginx 301和302重定向及其差异?

301和302状态码都表示重定向,表示浏览器在拿到做事器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从相应的Location首部中获取(客户端输入的地址A瞬间变成了另一个地址B)。
其紧张差异为:

301:代表永久性转移(Permanently Moved):旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交流为重定向之后的网址;302:代表暂时性转移(Temporarily Moved):旧地址A的资源还在(仍旧可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。
简述Nginx高可用的常见方案?

Keepalived + Nginx 实现Nginx的高可用:通过Keepalived来实现同一个虚拟IP映射到多台Nginx代理做事器,从而实现Nginx的高可用性。

Heartbeat + Nginx 实现Nginx的高可用:通过Heartbeat的心跳检测和资源接管、集群中做事的监测、失落效切换等功能,结合Nginx来实现高可用性。

简述SSL和HTTPS?

SSL(Secure Socket Layer)安全套接字层是一种数字证书,它利用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在client与server之间的安全传输。

HTTPS(Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以供应加密通讯及对网络做事器身份的鉴定。

HTTPS也可以理解为HTTP over SSL,即HTTP连接建立在SSL安全连接之上。

作者:木二

链接:https://www.yuque.com/docs/share/d3dd1e8e-6828-4da7-9e30-6a4f45c6fa8e