Linux运维经典面试题

什么是运维?什么是游戏

  1. 运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术。运维又包括很多种:有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等
  2. 游戏运维又有分工,分为开发运维、应用运维(业务运维)和系统运维
  • 开发运维:是给应用运维开发运维工具和运维平台的
  • 应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维护、做故障排查
  • 系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等

总结:开发运维和系统运维给应用运维提供了“工具”和“基础设施”上的支撑
开发运维、应用运维和系统运维他们的工作是环环相扣的

在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

游戏运营要做的一个事情除了协调工作以外,还需要与各平台沟通,做好开服的时间、开服数、用户导量、活动等计划

现在给你三百台服务器,你怎么对他们进行管理?

管理3百台服务器的方式:

  1. 设定跳板机,使用统一账号登录,便于安全与登录的考量。
  2. 使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。
  3. 建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。

简述raid0 raid1 raid5 三种工作模式的工作原理及特点

  • RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据
    还有一个大功能,多块盘放在一起可以有冗余(备份),RAID整合方式有很多,常用的:0 1 5 10
整合方式 工作原理 特点 适用场合
raid0 可以是一块盘和N个盘组合 优点:读写快,容量无损失。是RAID中最好的,缺点:没有冗余,一块坏了数据就全没有了 适用于大规模并发读写,但对数据安全性要求不高的情况,如:MySQL Slave,集群的节点RS
raid1 只能2块盘,盘的大小可以不一样,以小的为准10G+10G只有10G,另一个做备份 优点:100%的冗余,缺点:容量损失一半,成本高 适合存放重要数据
raid5 3块盘,容量计算10*(n-1),损失一块盘 读写性能一般,读还好一点,写不好 适合对性能和冗余都有一定要求,又不是十分高的情况
raid10 浪费50%磁盘 200%的速度和单磁盘损坏的数据安全性。100%冗余。缺点:成本高 性能和冗余要求很好的业务
  • 整合方式对比
特点 对比
冗余从好到坏 RAID1> RAID10> RAID 5> RAID0
性能从好到坏 RAID0 >RAID10 >RAID5> RAID1
成本从低到高 RAID0> RAID5> RAID1> RAID10

单台服务器:很重要盘不多,系统盘,RAID1
数据库服务器:主库:RAID10 从库 RAID5RAID0(为了维护成本,RAID10)
WEB服务器:如果没有太多的数据的话,RAID5,RAID0(单盘)有多台,监控、应用服务器,RAID0 RAID5
我们会根据数据的存储和访问的需求,去匹配对应的RAID级别

LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

  • LVS: 是基于四层的转发

  • HAproxy: 是基于四层和七层的转发,是专业的代理服务器

  • Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

  • 区别:
    LVS由于是基于四层的转发所以只能做端口的转发,而基于URL的、基于目录的这种转发LVS就做不了

  • 工作选择:
    HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做
    在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
    选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器
    配置简单,所以中小型企业推荐使用HAproxy

Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

Squid、Varinsh和Nginx都是代理服务器

  • 什么是代理服务器:
    能当替用户去访问公网,并且能把访问到的数据缓存到服务器本地,等用户下次再访问相同的资源的时候,代理服务器直接从本地回应给用户,当本地没有的时候,我代替你去访问公网,我接收你的请求,我先在我自已的本地缓存找,如果我本地缓存有,我直接从我本地的缓存里回复你如果我在我本地没有找到你要访问的缓存的数据,那么代理服务器就会代替你去访问公网

    扫描二维码关注公众号,回复: 6617077 查看本文章
  • 区别:
    1)Nginx本来是反向代理/web服务器,用了插件可以做做这个副业
    但是本身不支持特性挺多,只能缓存静态文件
    2)从这些功能上。varnish和squid是专业的cache服务,而nginx这些是第三方模块完成
    3)varnish本身的技术上优势要高于squid,它采用了可视化页面缓存技术在内存的利用上,Varnish比Squid具有优势,性能要比Squid高。还有强大的通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存它是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的
    4)squid的优势在于完整的庞大的cache技术资料,和很多的应用生产环境

  • 工作中选择:
    要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid或者varnish。

Tomcat和Resin有什么区别,工作中你怎么选择?

  • 区别:
    Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些但稳定性和java程序的兼容性,应该是比resin的要好

  • 工作中选择:
    现在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求稳定和程序的兼容

讲一下Keepalived的工作原理?

在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP通告信息,
BACKUP不会抢占MASTER,除非它的优先级更高。当MASTER不可用时(BACKUP收不到通告信息)多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性由于安全性考虑,VRRP包使用了加密协议进行加密。BACKUP不会发送通告信息,只会接收通告信息

讲述一下LVS三种模式的工作过程?

NAT模式(VS-NAT)

  • 原理:就是把客户端发来的数据包的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之间必须在一个广播域,也可以简单的理解为在同一台交换机上。
  • 优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。
  • 缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。

如何重置mysql root密码?

  • 在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法:

1、 在SHELL环境下,使用mysqladmin命令设置:mysqladmin –u root –p password “新密码”回车后要求输入旧密码
2、 在mysql>环境中,使用update命令,直接更新mysql库user表的数据:

Update  mysql.user  set  password=password(‘新密码’)  where  user=’root’;
flush   privileges;

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;

lvs/nginx/haproxy优缺点

类别 优点 缺点
lvs 1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西 所以并不需要太多接触,大大减少了人为出错的几率。3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案 如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。5、应用范围较广,因为LVS工作在4层,所以它几乎可对所有应用做负载均衡,包括http、数据库、在线聊天室等 1、软件本身不支持正则表达式处理,不能做动静分离而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所。2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了特别后面有Windows Server的机器的话,如果实施及配置还有维护过程就比较复杂了相对而言,Nginx/HAProxy+Keepalived就简单多了。
nginx 1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一Nginx单凭这点可利用的场合就远多于LVS了。2、Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一相反LVS对网络稳定性依赖比较大,这点本人深有体会。3、Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来,LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。4、Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。还有Nginx社区非常活跃,第三方模块也很多。5、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,可考虑用其作为反向代理加速器。 1、Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些,这个是它的缺点2、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测不支持Session的直接保持,但能通过ip_hash来解决LVS:使用Linux内核集群实现一个高性能、高可用的负载均衡服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)
HAProxy 1、HAProxy也是支持虚拟主机的。2、HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导同时支持通过获取指定的url来检测后端服务器的状态。3、HAProxy跟LVS类似,本身就只是一款负载均衡软件单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。4、HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。5、HAProxy负载均衡策略非常多,HAProxy的负载均衡算法现在具体有如下8种:①roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;② static-rr,表示根据权重,建议关注;③leastconn,表示最少连接者先处理,建议关注;④ source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似我们用其作为解决session问题的一种方法,建议关注;⑤ri,表示根据请求的URI;⑥rl_param,表示根据请求的URl参数’balance url_param’ requires an URL parameter name;⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip

cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -10

使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log

tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log

如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1

iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080

实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令

tcpdump -nn tcp port 80

用tcpdump嗅探80端口的访问看看谁最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -20

写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线

#!/bin/bash
for ip in `seq 1 255`
do
{
ping -c 1 192.168.1.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 192.168.1.$ip UP
else
echo 192.168.1.$ip DOWN
fi
}&
done
wait

请执行命令取出 linux 中 eth0 的 IP 地址(请用 cut,有能力者也可分别用 awk,sed 命令

cut方法1:
# ifconfig eth0|sed -n '2p'|cut -d ":" -f2|cut -d " " -f1
192.168.20.130

awk方法2:
# ifconfig eth0|awk 'NR==2'|awk -F ":" '{print $2}'|awk '{print $1}'
192.168.20.130

awk多分隔符方法3:
# ifconfig eth0|awk 'NR==2'|awk -F "[: ]+" '{print $4}'
192.168.20.130

sed方法4:
# ifconfig eth0|sed -n '/inet addr/p'|sed -r 's#^.*ddr:(.*)Bc.*$##g'
192.168.20.130

每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下(最好每次备份按时间生成不同的备份包)

# cat a.sh 
#/bin/bash
cd /var/www/ && /bin/tar zcf /data/html-`date +%m-%d%H`.tar.gz html/
# crontab –e
00 00 * * * /bin/sh /root/a.sh

猜你喜欢

转载自blog.csdn.net/qq_33235529/article/details/88665029