提示:根据面试的企业、岗位不同,考察技术问题不一,万变不离其宗,掌握核心技术问题是关键!若您的非技术问题,不占优势,则必须要能讲好技术内容。
一、专项题
1、Tomcat
讲述一下Tomcat8005、8009、8080三个端口的含义?
答:8005 关闭时使用
8009为AJP端口,即容器使用,如Apache能通过AJP协议访问Tomcat的8009端口来实现功能
8080 一般应用使用
2、什么叫CDN?
答:即内容分发网络
其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可就近取得所需的内容,提高用户访问网站的速度
3、什么叫网站灰度发布?
答:灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式,AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
4、简述DNS进行域名解析的过程?
答:迭代查询(返回最优结果)、递归查询(本地找DNS)用户要访问 www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有找到,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端
5、讲述一下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这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。
缺点:要求负载均衡器的网卡必须与物理网卡在一个物理段上。
6、讲一下Keepalived的工作原理?
答:在一个虚拟路由器中,只有作为MASTER的VRRP(虚拟路由冗余协议)路由器会一直发送VRRP通告信息,
BACKUP不会抢占MASTER,除非它的优先级更高。当MASTER不可用时(BACKUP收不到通告信息)
多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性
由于安全性考虑,VRRP包使用了加密协议进行加密。BACKUP不会发送通告信息,只会接收通告信息
7、keepalive的工作原理和如何做健康检查
答:keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组
这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内
其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了
这时就需要根据VRRP的优先级来选举一个backup当master。这样就可以保证路由器的高可用了
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护
及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式,vrrp模块是来实现VRRP协议的
Keepalived健康检查方式配置
HTTP_GET|SSL_GET
HTTP_GET | SSL_GET
{
url {
path /# HTTP/SSL 检查的url可以是多个
digest # HTTP/SSL 检查后的摘要信息用工具genhash生成
status_code 200# HTTP/SSL 检查返回的状态码
}
connect_port 80 # 连接端口
bindto
connect_timeout 3 # 连接超时时间
nb_get_retry 3 # 重连次数
delay_before_retry 2 #连接间隔时间
}
8、统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip
答:cat access.log | awk ‘{print $1}’ | uniq -c | sort -rn | head -10
9、使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到 tcpdump.log
答:分析需求,两个方面:首先,探知主机是否存活并80端口有没开放;其次,将结果保存到此文件中。tcpdump ‘host 192.168.1.1 and port 80’ > tcpdump.log
10、如何将本地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
11、RabbitMQ是什么东西?
RabbitMQ也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器
消息中间件再将消息从它的源中到它的目标中标时充当中间人的作用
队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用
消息队列不会保留消息,直到可以成功地传递为止,当然,消息队列保存消息也是有期限地
12、什么是中间件?什么是jdk?
中间件介绍:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源
中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯
是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口
但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递
通过中间件,应用程序可以工作于多平台或OS环境。
jdk:jdk是Java的开发工具包
它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境
二、 综合题
1、lvs/nginx/haproxy优缺点:
类型 | Nginx | haproxy | LVS |
---|---|---|---|
简记 | 高、低、稳、少 | 多、小、u | 稳、广、强、简 |
优点 | 安装和配置简单 、内存消耗少、承担高负载压力且稳定 | 支持多网段、支持url 、负载均衡策略多、会话保持 | 抗负载能力强、工作稳定,自身有完整的双机热备方案、应用范围比较广 |
缺点 | 支持协议少,http、https和Email | 不支持http cache | 不支持正则、不能做动静分离、成本高 |
算法 | 轮巡、加权轮巡、ip哈希 | 轮巡、加权轮巡、原地址保持、RI(请求URL)、rdp-cookie | 轮巡、加权轮巡、最小连接、权重最小连接 |
虚拟机 | 支持 | 支持 | 不支持 |
适用 层 | 七层 | 四、七层 | 四层 |
场景 | 网站建设初期 | 网站建设初期 | 大规模时期,日pv千万以上 |
Nginx优点:
1)安装和配置简单
2)内存消耗少
3)可承担高负载压力且稳定
4)Nginx不仅可做负载均衡器/反向代理软件,也可做Web网站服务器
缺点:
1)不支持URL;
2)Nginx仅能支持http、https和Email协议。
3)Nginx的Session的保持,Cookie的引导能力相对欠缺。
haproxy优点:
1)HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
2)能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
3)支持url检测后端的服务器;
4)它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
5)HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
6)HAProxy的算法较多,达到8种;
haproxy缺点:
1)不支持http cache
2)重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好。
3)不支持POP/SMTP协议
LVS优点:
1)抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;
2)工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;
3)应用范围比较广,可以对所有应用做负载均衡;
4)配置简单,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
LVS的缺点:
1)软件本身不支持正则处理,不能做动静分离
2)如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,配置成本高
2、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
答:
LVS
1)抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;
2)工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;
3)应用范围比较广,可以对所有应用做负载均衡;
4)配置简单,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
LVS的缺点:
1)软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
2)如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了。
Nginx
1)工作在第7层,应用层,可以针对http应用做一些分流的策略。比如针对域名、目录结构。它的正则比HAProxy更为强大和灵活;
2)Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能
3)Nginx安装和配置简单
4)可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
5)Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。Nginx在处理静态页面、特别是抗高并发方面相对apache有优势;
6)Nginx作为Web反向代理加速缓存越来越成熟,速度比传统的Squid服务器更快
Nginx的缺点:
1)Nginx不支持url来检测。
2)Nginx仅能支持http、https和Email协议
3)Nginx的Session的保持,Cookie的引导能力相对欠缺。
HAProxy
1)HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
2)能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
3)支持url检测后端的服务器;
4)它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
5)HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
6)HAProxy的算法较多,达到8种;
工作选择:
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做
在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器
配置简单,所以中小型企业推荐使用HAproxy
3、现在给你三百台服务器,你怎么对他们进行管理?
答:
1)设定跳板机,使用统一账号登录,便于安全与登录的考量。
2)使用saltstark、ansiable、shell进行系统的统一调度与配置。
3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。
4、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
Squid、Varinsh和Nginx都是代理服务器
答:
什么是代理服务器:
能当替用户去访问公网,并且能把访问到的数据缓存到服务器本地,等用户下次再访问相同的资源的时候,代理服务器直接从本地回应给用户,当本地没有的时候,我代替你去访问公网,我接
收你的请求,我先在我自已的本地缓存找,如果我本地缓存有,我直接从我本地的缓存里回复你如果我在我本地没有找到你要访问的缓存的数据,那么代理服务器就会代替你去访问公网
区别:
1)Nginx本来是反向代理/web服务器,用了插件可以做做这个副业
但是本身不支持特性挺多,只能缓存静态文件
2)从这些功能上。varnish和squid是专业的cache服务,而nginx这些是第三方模块完成
3)varnish本身的技术上优势要高于squid,它采用了可视化页面缓存技术
在内存的利用上,Varnish比Squid具有优势,性能要比Squid高。
还有强大的通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存
它是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的
4)squid的优势在于完整的庞大的cache技术资料,和很多的应用生产环境
工作中选择:
要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid或者varnish。
5、Tomcat和Resin有什么区别,工作中你怎么选择?
区别:Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少
最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些
但稳定性和java程序的兼容性,应该是比resin的要好
工作中选择:现在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求稳定和程序的兼容
6、
提示:大部分非技术问题,没有固定答案可根据自己的理解,保证主题对,针对面试企业需求去应对
1、 什么是运维?什么是游戏运维?
答:对已建立好的网络软硬件的维护,保证业务的上线与运作的正常,在运转的过程中,对它进行维护,运维又包括很多种,有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等;
分为开发运维、应用运维(业务运维)和系统运维
开发运维:是给应用运维开发运维工具和运维平台的
应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维护、做故障排查
系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等
总结:开发运维和系统运维给应用运维提供了“工具”和“基础设施”上的支撑
开发运维、应用运维和系统运维他们的工作是环环相扣的
2、 在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
答:游戏运营要做的一个事情除了协调工作以外,还需要与各平台沟通,做好开服的时间、开服数、用户导量、活动等计划