Linux运维精华常见基础⾯试题
尽管运维是做的最苦最累的活,最容易背锅的⼀个岗位,⼤家还是应该在⼯作中不断提⾼⾃⼰。
下⾯是⼀名资深Linux运维求职数⼗家公司总结的Linux运维⾯试精华,助⼒⼤家跳槽个⾼薪好⼯作。
1、你理解的运维是什么,什么是游戏运维?
1)运维是指⼤型组织已经建⽴好的⽹络软硬件的维护,就是要保证业务的上线与运作的正常,
在他运转的过程中,对他进⾏维护,他集合了⽹络、系统、数据库、开发、安全、监控于⼀⾝的技术
运维⼜包括很多种,有DBA运维、⽹站运维、虚拟化运维、监控运维、游戏运维等等
2)游戏运维⼜有分⼯,分为开发运维、应⽤运维(业务运维)和系统运维
开发运维:是给应⽤运维开发运维⼯具和运维平台的
应⽤运维:是给业务上线、维护和做故障排除的,⽤开发运维开发出来的⼯具给业务上线、维护、做故障排查系统运维:是给应⽤运维提供业务上的基础设施,⽐如:系统、⽹络、监控、硬件等等
总结:开发运维和系统运维给应⽤运维提供了“⼯具”和“基础设施”上的⽀撑
开发运维、应⽤运维和系统运维他们的⼯作是环环相扣的
2、在⼯作中,运维⼈员经常需要跟运营⼈员打交道,请问运营的⼈员是做什么⼯作的?
游戏运营要做的⼀个事情除了协调⼯作以外
还需要与各平台沟通,做好开服的时间、开服数、⽤户导量、活动等计划
3、现在给你⼆三百台服务器,你怎么对他们进⾏管理?
管理3百台服务器的⽅式:
1)设定跳板机,使⽤统⼀账号登录,便于安全与登录的考量。
2)使⽤salt、ansiable、puppet进⾏系统的统⼀调度与配置的统⼀管理。
3)建⽴简单的服务器的系统、配置、应⽤的cmdb信息管理。便于查阅每台服务器上的各种信息记录。
4、简述raid0 raid1 raid5 三种⼯作模式的⼯作原理及特点
RAID,可以把硬盘整合成⼀个⼤磁盘,还可以在⼤磁盘上再分区,放数据
还有⼀个⼤功能,多块盘放在⼀起可以有冗余(备份)
RAID整合⽅式有很多,常⽤的:0 1 5 10
RAID 0,可以是⼀块盘和N个盘组合
其优点读写快,是RAID中最好的
缺点:没有冗余,⼀块坏了数据就全没有了
RAID 1,只能2块盘,盘的⼤⼩可以不⼀样,以⼩的为准
10G+10G只有10G,另⼀个做备份。它有100%的冗余,缺点:浪费资源,成本⾼
RAID 5 ,3块盘,容量计算10*(n-1),损失⼀块盘
特点,读写性能⼀般,读还好⼀点,写不好
冗余从好到坏:RAID1 RAID10 RAID 5 RAID0
性能从好到坏:RAID0 RAID10 RAID5 RAID1
成本从低到⾼:RAID0 RAID5 RAID1 RAID10
单台服务器:很重要盘不多,系统盘,RAID1
数据库服务器:主库:RAID10 从库 RAID5\RAID0(为了维护成本,RAID10)
WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)
有多台,监控、应⽤服务器,RAID0 RAID5
我们会根据数据的存储和访问的需求,去匹配对应的RAID级别
5、LVS、Nginx、HAproxy有什么区别?⼯作中你怎么选择?
LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,⼜是反向代理服务器,可以做七层的转发
区别: LVS由于是基于四层的转发所以只能做端⼝的转发
⽽基于URL的、基于⽬录的这种转发LVS就做不了
⼯作选择:
HAproxy和Nginx由于可以做七层的转发,所以URL和⽬录的转发都可以做
在很⼤并发量的时候我们就要选择LVS,像中⼩型公司的话并发量没那么⼤
选择HAproxy或者Nginx⾜已,由于HAproxy由是专业的代理服务器
配置简单,所以中⼩型企业推荐使⽤HAproxy
6、Squid、Varinsh和Nginx有什么区别,⼯作中你怎么选择?
Squid、Varinsh和Nginx都是代理服务器
什么是:
能当替⽤户去访问公⽹,并且能把访问到的数据缓存到服务器本地,等⽤户下次再访问相同的资
源的时候,代理服务器直接从本地回应给⽤户,当本地没有的时候,我代替你去访问公⽹,我接
收你的请求,我先在我⾃已的本地缓存,如果我本地缓存有,我直接从我本地的缓存⾥回复你
如果我在我本地没有到你要访问的缓存的数据,那么代理服务器就会代替你去访问公⽹
区别:
1)Nginx本来是反向代理/web服务器,⽤了插件可以做做这个副业
但是本⾝不⽀持特性挺多,只能缓存静态⽂件
2)从这些功能上。varnish和squid是专业的cache服务,⽽nginx这些是第三⽅模块完成mysql面试题sql
3)varnish本⾝的技术上优势要⾼于squid,它采⽤了可视化页⾯缓存技术
在内存的利⽤上,Varnish⽐Squid具有优势,性能要⽐Squid⾼。
还有强⼤的通过Varnish管理端⼝,可以使⽤快速、批量地清除部分缓存
它是内存缓存,速度⼀流,但是内存缓存也限制了其容量,缓存页⾯和图⽚⼀般是挺好的
4)squid的优势在于完整的庞⼤的cache技术资料,和很多的应⽤⽣产环境
⼯作中选择:
要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid或者varnish。
7、Tomcat和Resin有什么区别,⼯作中你怎么选择?
区别:Tomcat⽤户数多,可参考⽂档多,Resin⽤户数少,可考虑⽂档少
最主要区别则是Tomcat是标准的java容器,不过性能⽅⾯⽐resin的要差⼀些
但稳定性和java程序的兼容性,应该是⽐resin的要好
⼯作中选择:现在⼤公司都是⽤resin,追求性能;⽽中⼩型公司都是⽤Tomcat,追求稳定和程序的兼容
8、什么是中间件?什么是jdk?
中间件介绍:
中间件是⼀种独⽴的系统软件或服务程序,分布式应⽤软件借助这种软件在不同的技术之间共享资源
中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和⽹络通讯
是连接两个独⽴应⽤程序或独⽴系统的软件。相连接的系统,即使它们具有不同的接⼝
但通过中间件相互之间仍能交换信息。执⾏中间件的⼀个关键途径是信息传递
通过中间件,应⽤程序可以⼯作于多平台或OS环境。
jdk:jdk是Java的开发⼯具包
它是⼀种⽤于构建在 Java 平台上发布的应⽤程序、applet 和组件的开发环境
9、讲述⼀下Tomcat8005、8009、8080三个端⼝的含义?
8005==》 关闭时使⽤
8009==》 为AJP端⼝,即容器使⽤,如Apache能通过AJP协议访问Tomcat的8009端⼝
8080==》 ⼀般应⽤使⽤
10、什么叫CDN?
即内容分发⽹络
其⽬的是通过在现有的Internet中增加⼀层新的⽹络架构,将⽹站的内容发布到
最接近⽤户的⽹络边缘,使⽤户可就近取得所需的内容,提⾼⽤户访问⽹站的速度
11、什么叫⽹站灰度发布?
eclipse中xml文件怎么编辑灰度发布是指在⿊与⽩之间,能够平滑过渡的⼀种发布⽅式
AB test就是⼀种灰度发布⽅式,让⼀部⽤户继续⽤A,⼀部分⽤户开始⽤B
如果⽤户对B没有什么反对意见,那么逐步扩⼤范围,把所有⽤户都迁移到B上⾯ 来
灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度
12、简述DNS进⾏域名解析的过程?
⽤户要访问,会先本机的host⽂件,再本地设置的DNS服务器,如果也没有的话,就去⽹络中根服务器,根服务器反馈结果,说只能提供⼀级域名服务器*,就去⼀级域名服务器,⼀级域名服务器说只能提供⼆级域名服务器*,就去⼆级域名服务器,⼆级域服务器只能提供三级域名服务器*.baidu,就去三级域名服务器,三级域名服务器正好有这个⽹站,然后发给请求的服务器,保存⼀份之后,再发给客户端
13、RabbitMQ是什么东西?
RabbitMQ也就是中间件,消息中间件是在消息的传息过程中保存消息的容器
消息中间件再将消息从它的源中到它的⽬标中标时充当中间⼈的作⽤
队列的主要⽬的是提供路由并保证消息的传递;如果发送消息时接收者不可⽤
消息队列不会保留消息,直到可以成功地传递为⽌,当然,消息队列保存消息也是有期限的
14、讲⼀下Keepalived的⼯作原理?
在⼀个虚拟路由器中,只有作为MASTER的VRRP路由器会⼀直发送VRRP通告信息,
BACKUP不会抢占MASTER,除⾮它的优先级更⾼。当MASTER不可⽤时(BACKUP收不到通告信息)
多台BACKUP中优先级最⾼的这台会被抢占为MASTER。这种抢占是⾮常快速的(<1s),以保证服务的连续性
由于安全性考虑,VRRP包使⽤了加密协议进⾏加密。BACKUP不会发送通告信息,只会接收通告信息
15、讲述⼀下LVS三种模式的⼯作过程?
LVS 有三种负载均衡的模式,分别是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)
⼀、NAT模式(VS-NAT)
深圳哪家it培训机构好原理:就是把客户端发来的数据包的IP头的⽬的地址,在负载均衡器上换成其中⼀台RS的IP地址
并发⾄此RS来处理,RS处理完后把数据交给负载均衡器,负载均衡器再把数据包原IP地址改为⾃⼰的IP
将⽬的地址改为客户端IP地址即可期间,⽆论是进来的流量,还是出去的流量,都必须经过负载均衡器
优点:集中的物理服务器可以使⽤任何⽀持TCP/IP操作系统,只有负载均衡器需要⼀个合法的IP地址
缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈
因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时
⼤量的数据包都交汇在负载均衡器那,速度就会变慢!
⼆、IP隧道模式(VS-TUN)
原理:⾸先要知道,互联⽹上的⼤多Internet服务的请求包很短⼩,⽽应答包通常很⼤
那么隧道模式就是,把客户端发来的数据包,封装⼀个新的IP头标记(仅⽬的IP)发给RS
RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过
负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进⾏还原,所以说必须⽀持
IPTUNNEL协议,所以,在RS的内核中,必须编译⽀持IPTUNNEL这个选项
优点:负载均衡器只负责将请求包分发给后端节点服务器,⽽RS将应答包直接发给⽤户
所以,减少了负载均衡器的⼤量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨⼤的请求量
这种⽅式,⼀台负载均衡器能够为很多RS进⾏分发。⽽且跑在公⽹上就能进⾏不同地域的分发。
缺点:隧道模式的RS节点需要合法IP,这种⽅式需要所有的服务器⽀持”IP Tunneling”
(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上
三、直接路由模式(VS-DR)
原理:负载均衡器和RS都使⽤同⼀个IP对外服务但只有DR对ARP请求进⾏响应
所有RS对本⾝这个IP的ARP请求保持静默也就是说,⽹关会把对这个服务IP的请求全部定向给DR
⽽DR收到数据包后根据调度算法,出对应的RS,把⽬的MAC地址改为RS的MAC(因为IP⼀致)
并将请求分发给这台RS这时RS收到这个数据包,处理完成之后,由于IP⼀致,可以直接将数据返给客户
则等于直接从客户端收到这个数据包⽆异,处理后直接返回给客户端
由于负载均衡器要对⼆层包头进⾏改换,所以负载均衡器和RS之间必须在⼀个⼴播域
kolb的四个阶段英文也可以简单的理解为在同⼀台交换机上
优点:和TUN(隧道模式)⼀样,负载均衡器也只是分发请求,应答包通过单独的路由⽅法返回给客户端与VS-TUN相⽐,VS-DR这种实现⽅式不需要隧道结构,因此可以使⽤⼤多数操作系统做为物理服务器。缺点:(不能说缺点,只能说是不⾜)要求负载均衡器的⽹卡必须与物理⽹卡在⼀个物理段上。
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
mysql的innodb如何定位锁问题:
在使⽤ show engine innodb status检查时,发现了死锁问题
在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎)
innodb_trx ## 当前运⾏的所有事务
innodb_locks ## 当前出现的锁
innodb_lock_waits ## 锁等待的对应关系
mysql如何减少主从复制延迟:
如果延迟⽐较⼤,就先确认以下⼏个因素:
1. 从库硬件⽐主库差,导致复制延迟
2. 主从复制单线程,如果主库写并发太⼤,来不及传送到从库
就会导致延迟。更⾼版本的mysql可以⽀持多线程复制
3. 慢SQL语句过多
4. ⽹络延迟
5. master负载
主库读写压⼒⼤,导致复制延迟,架构的前端要加buffer及缓存层
6. slave负载
⼀般的做法是,使⽤多台slave来分摊读请求,再从这些slave中取⼀台专⽤的服务器
只作为备份⽤,不进⾏其他任何操作.另外, 2个可以减少延迟的参数:
–slave-net-timeout=seconds 单位为秒 默认设置为 3600秒
#参数含义:当slave从主数据库读取log数据失败后,等待多久重新建⽴连接并获取数据
–master-connect-retry=seconds 单位为秒 默认设置为 60秒
#参数含义:当重新建⽴主从连接时,如果连接建⽴失败,间隔多久后重试
通常配置以上2个参数可以减少⽹络问题导致的主从数据同步延迟
MySQL数据库主从同步延迟解决⽅案
最简单的减少slave同步延时的⽅案就是在架构上做优化,尽量让主库的DDL快速执⾏
还有就是主库是写,对数据安全性较⾼,⽐如sync_binlog=1,innodb_flush_log_at_trx_commit
= 1 之类的设置,⽽slave则不需要这么⾼的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog innodb_flushlog也可以设置为0来提⾼sql的执⾏效率。另外就是使⽤⽐主库更好的硬件设备作为slave
17、如何重置mysql root密码?
⼀、 在已知MYSQL数据库的ROOT⽤户密码的情况下,修改密码的⽅法:
1、 在SHELL环境下,使⽤mysqladmin命令设置:
mysqladmin –u root –p password “新密码” 回车后要求输⼊旧密码
2、 在mysql>环境中,使⽤update命令,直接更新mysql库user表的数据:
有关datedif函数说法正确的是Update mysql.user set password=password(‘新密码’) where user=’root’;
flush privileges;
注意:mysql语句要以分号”;”结束
3、 在mysql>环境中,使⽤grant命令,修改root⽤户的授权权限。
grant all on . to root@’localhost’ identified by ‘新密码’;
⼆、 如查忘记了mysql数据库的ROOT⽤户的密码,⼜如何做呢?⽅法如下:
1、 关闭当前运⾏的mysqld服务程序:service mysqld stop(要先将mysqld添加为系统服务)
2、 使⽤mysqld_safe脚本以安全模式(不加载授权表)启动mysqld 服务
/usr/local/mysql/bin/mysqld_safe --skip-grant-table &
3、 使⽤空密码的root⽤户登录数据库,重新设置ROOT⽤户的密码
#mysql -u root
Mysql> Update mysql.user set password=password(‘新密码’) where user=’root’;
Mysql> flush privileges;
18、lvs/nginx/haproxy优缺点
Nginx的优点是:
1、⼯作在⽹络的7层之上,可以针对http应⽤做⼀些分流的策略,⽐如针对域名、⽬录结构
它的正则规则⽐HAProxy更为强⼤和灵活,这也是它⽬前⼴泛流⾏的主要原因之⼀
Nginx单凭这点可利⽤的场合就远多于LVS了。
2、Nginx对⽹络稳定性的依赖⾮常⼩,理论上能ping通就就能进⾏负载功能,这个也是它的优势之⼀
相反LVS对⽹络稳定性依赖⽐较⼤,这点本⼈深有体会;
3、Nginx安装和配置⽐较简单,测试起来⽐较⽅便,它基本能把错误⽤⽇志打印出来
图片在一个框里滑动代码LVS的配置、测试就要花⽐较长的时间了,LVS对⽹络依赖⽐较⼤。
4、可以承担⾼负载压⼒且稳定,在硬件不差的情况下⼀般能⽀撑⼏万次的并发量,负载度⽐LVS相对⼩些。
5、Nginx可以通过端⼝检测到服务器内部的故障,⽐如根据服务器处理⽹页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另⼀个节点,不过其中缺点就是不⽀持url来检测。⽐如⽤户正在上传⼀个⽂件,⽽处理该上传的节点刚好在上传过程中出现故障,Nginx 会把上传切到另⼀台服务器重新处理,⽽LVS就直接断掉了
如果是上传⼀个很⼤的⽂件或者很重要的⽂件的话,⽤户可能会因此⽽不满。
6、Nginx不仅仅是⼀款优秀的负载均衡器/软件,它同时也是功能强⼤的Web应⽤服务器
LNMP也是近⼏年⾮常流⾏的web架构,在⾼流量的环境中稳定性也很好。
7、Nginx现在作为Web反向加速缓存越来越成熟了,速度⽐传统的Squid服务器更快,可考虑⽤其作为反向代理加速器
8、Nginx可作为中层反向代理使⽤,这⼀层⾯Nginx基本上⽆对⼿,唯⼀可以对⽐Nginx的就只有lighttpd了
不过lighttpd⽬前还没有做到Nginx完全的功能,配置也不那么清晰易读,社区资料也远远没Nginx活跃
9、Nginx也可作为静态⽹页和图⽚服务器,这⽅⾯的性能也⽆对⼿。还有Nginx社区⾮常活跃,第三⽅模块也很多
Nginx的缺点是:
1、Nginx仅能⽀持http、https和Email协议,这样就在适⽤范围上⾯⼩些,这个是它的缺点
2、对后端服务器的健康检查,只⽀持通过端⼝来检测,不⽀持通过url来检测
不⽀持Session的直接保持,但能通过ip_hash来解决
LVS:使⽤Linux内核集实现⼀个⾼性能、⾼可⽤的负载均衡服务器
它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)
LVS的优点是:
1、抗负载能⼒强、是⼯作在⽹络4层之上仅作分发之⽤,没有流量的产⽣
这个特点也决定了它在负载均衡软件⾥的性能最强的,对内存和cpu资源消耗⽐较低
2、配置性⽐较低,这是⼀个缺点也是⼀个优点,因为没有可太多配置的东西
所以并不需要太多接触,⼤⼤减少了⼈为出错的⼏率
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论