面试题大全(持续补充)

面试问题

1. Nginx有哪些应用场景、有什么特点、正向代理与反向代理

nginx特点:

  1. 高性能的HTTP和反向代理的web服务器,有强大的处理高并发的能力
  2. 内存占有小,在同类型的web服务器中表现较好,并且国内很多大公司的网站也使用的nginx。

应用面:

  1. 可以作为静态页面的web服务器,支持CGI(通用网关端口)协议的动态语言,如php。不支持java,java应用程序需要配合tomcat完成。
  2. 可做反向代理实现负载均衡,也可正向代理进行上网的功能。

正向代理:是一个位于客户端与原始服务器之间的一个服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定服务器,代理就会向原始服务器提交请求并将获得的内容返回给客户端。
反向代理:客户端将代理服务器当作原始服务器,向服务器请求访问其他服务器。进行反向代理的服务器通过配置proxy_pass设置代理服务,得到要访问的web服务器内容。其中客户端只直到能够直接拿到目标的内容。

2. nginx、LVS、HAproxy的区别

LVS基于Linux操作系统实现软负载均衡,而Haproxy和Nginx是基于第三方应用实现的软负载均衡
LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而Haproxy和Nginx都可以实现4层和7层技术,Haproxy可提供TCP和Http应用的负载均衡综合解决方案
LVS因为工作在ISO模型的第四层,其状态监测功能单一,而Haproxy在状态监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态监测方式
Haproxy功能强大,但整体性能低于4层模式的LVS负载均衡
Nginx主要用于web服务器或缓存服务器,高并发处理能力强。

2. nginx的动静分离

动静分离是指:静态页面与动态页面分开不同系统访问的架构设计方法。
静态页面:是一个页面对应一个内容,也就是一对一的关系,在互联网架构中,页面几乎为不变的或者是页面发生变化频率较低的。比如:html 页面,js/css 样式文件等;
动态页面:是一对多访问,通过一个页面可以根据若干参数返回其不同的数据,在互联网架构中,不同的用户访问不同的动态场景页面请求,都可能是不一样的页面。比如:淘宝京东商品列表页面、百度搜索引擎结果页面等;

动态页面,与其之匹配的技术架构,比如:分层架构、服务化架构、数据库、缓存架构;

2. nginx高可用

nginx作为反向代理时,可能出现宕机情况,导致其它服务器无法被访问,高可用可以避免这种情况的发生。
高可用:nginx的高可用可以通过配置多台nginx服务器,配置主从服务器,当主服务器宕机时,可以自动切换到备用服务器,来保证项目的正常运行。
nginx实现高可用需要借助其他工具实现如keepalived。

nginx高可用实现原理及方法:

在keepalived中配置一个虚拟ip,主服务器正常工作,vip就会映射到主服务器的ip上。主服务器失效时,健康检查也会检查到,并且会根据配置的优先级选择备用服务器,将虚拟ip映射到该服务器的ip。主服务器恢复正常,会自动切换回主服务器上,从而实现高可用。

实现方法:

在主备服务器中修改keepalived的配置文件,配置权重,主备名称还有虚拟ip路由、优先级等参数。重启nginx与keepalived服务即可实现高可用。

3. keepalived基于VRRP协议实现的作用、keepalived高可用解决脑裂问题

keepalived基于VRRP协议的软件实现,配合LVS实现负载均衡的一种技术。
vrrp:为了解决静态网关单点故障风险,它能够保证当个别节点宕机时,整个网络可以不间断地运行。

keepalived的工作原理:

VRRP是通过竞选机制来确定主备节点的,主节点的优先级高于备节点,因此,工作时主节点会优先获得所有的资源,备节点处于等待状态,当主节点出现故障时,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。

脑裂

高可用系统中,主备均无法发送心跳信息来确定是否故障时,会出现脑裂情况。主备之间互相无关联。抢夺资源或者同时起服务。导致数据损坏。
造成脑裂的原因:

  • 高可用服务器对之间心跳线链路发生故障,导致无法正常通信。
  • 因心跳线坏了(包括断了,老化)。
  • 因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)
  • 因心跳线间连接的设备故障(网卡及交换机)
  • 因仲裁的机器出问题(采用仲裁的方案)
  • 高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。
  • 高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
  • 其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。
解决常见方案:
  • 如果开启防火墙,一定要让心跳消息通过,一般通过允许IP段的形式解决
  • 可以拉一条以太网网线或者串口线作为主被节点心跳线路的冗余
  • 开发检测程序通过监控软件检测脑裂

4. Mysql数据库优化

SQL语句优化
  • 根据情况选择合适的查询方式
  • 用事务进行数据操作,来保持数据库中的数据的一致性
  • 使用外键关联数据,保证表与表之间的数据的关联性
  • 使用索引,提高数据库检索性能
  • 优化查询语句
架构方面:主备、读写分离

5. 哨兵选举机制,redis主从、高可用

Redis实现主从同步可以有两种方式:命令方式以及配置文件方式,一般采取命令的方法
可用keepalived+redis双机热备部署主从
哨兵+redis主从架构

6. Mysql主从、读写分离、主数据库宕机怎么处理

主从复制:涉及到

2个日志(binlog、relaylog日志)、

3个线程:master(dump线程)、slave(I/O线程、SQL线程)

主dump线程:数据库中数据更新时,创建一个dump线程通知slave有数据更新,传给slave的IO线程(binlog和更新位置传给slave I/O 线程)

I/O线程:接收到dump线程发来的 binlog文件,存放到本地relay log中

sql线程:读取relay log中的内容,本地做redo操作,将主库事件本地执行一遍,最终保证主从数据的一致性

基本过程:

1、主库写入数据并且生成binlog文件,即MySQL将事务串行的写入二进制日志

2、master通知存储引擎提交事务

3、从服务器IO线程连接至master,请求binlog 指定位置读取到从库

4、主服务器接收到请求,会根据slave请求信息分批读取binlog文件,返回给从库IO线程

5、IO线程获取到maser的日志内容、文件、问之后,会将binlog写到slave自身的relay log中。

6、从服务器中SQL 监测到本地Relay Log中新增了日志内容,翻译成SQL 执行,并更新从库数据

优点:
1、故障转移-高可用  主服务宕机后,可以由从服务切换成为主服务

2、读写分离   数据库读请求从服务分担(一些查询大请求,仅查从库)

3、数据安全   数据的热备,后备数据库,避免数据丢失

7. 容器与虚拟机的区别

  • 大小区别,容器一般很小,容易迁移,快速部署
  • 容器没有独立的操作系统,使用宿主机的资源与操作系统,所以能够更有效的部署应用程序,不浪费启动关闭操作系统的资源
  • 都是隔离的系统,但是容器只在进程应用层面进行隔离,依赖主机系统的安全协议
  • 生命周期,容器因为其快速、迁移等特性,生命周期很短。主打快速高效,但不稳定。

8. pod

9. Mysql-MHA高可用搭建及部署

MHA里有 两个角色一个是MHA Node(数据节点)另一个是MHA Manager(管理节点)
MHA是处理Mysql故障切换和主从复制的高可用软件
MHA特点:自动故障切换会尝试复制binlog日志中的sql,最大限度保障数据不丢失。使用半同步复制可以降低数据丢失风险。
半同步复制:
速度快,主库在提交事务时,只需等待一个从库收到事件的确认信息(从库将事务写入relaylog,不需要重放和提交),主库收到确认信息后进行正式的commit操作。半同步复制更适合网络条件好的环境,否则会因延迟问题降低主库性能。

MHA架构

例如一主两从
更改主库从库的my.cnf配置文件
配置主从复制:首先授权用户给同步数据库与管理节点使用
安装mha依赖环境,每个节点都需要安装。相应组件,对应配置
配置切换虚拟IP的MHA脚本,自己存或者网上下载
重启服务

10. Openstack

11. Zabbix

12. Ansible

13. Docker自定义镜像

14. TCP/IP、IP路由等网络知识

15. 华为公有云

ECS:弹性云服务器
RDS:云数据库
VPC:虚拟私有云
ELB:负载均衡
OBS:对象存储
EIP:弹性公网IP
CBR:云备份
CES:云监控服务

16. shell

17.资源对象文件

可以用kubectl run来生成资源对象文件 后面加-o yaml格式 dry run就可以预览生成的yaml

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值