Linux知识

Linux运维跳槽必备的40道面试精华题

2017年企业运维岗经典面试题(28题)


Mysql的调优参数(重要TODO)


HTTP请求的全过程(重要TODO)

重点:

HTTP协议需要建立TCP连接,从而引出TCP的3次握手和4次挥手(区别:SYN和ACK是否一起发送),以及TCP滑动窗口的概念;(面试的重点)


TCP/IP的七层模型


mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

定位死锁

show engine innodb status

在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎)
- innodb_trx ## 当前运行的所有事务
- innodb_locks ## 当前出现的锁
- innodb_lock_waits ## 锁等待的对应关系

MariaDB [(none)]> show databases like '%schema%';
+---------------------+
| Database (%schema%) |
+---------------------+
| information_schema  |
| performance_schema  |
+---------------------+

MariaDB [information_schema]> show tables like '%INNODB_LOCK%';
+----------------------------------------------+
| Tables_in_information_schema (%INNODB_LOCK%) |
+----------------------------------------------+
| INNODB_LOCK_WAITS                            |锁等待的对应关系
| INNODB_LOCKS                                 |当前出现的锁
+----------------------------------------------+
2 rows in set (0.00 sec)

MariaDB [information_schema]> show tables like '%INNODB_TR%';
+--------------------------------------------+
| Tables_in_information_schema (%INNODB_TR%) |
+--------------------------------------------+
| INNODB_TRX                                 |当前运行的所有事务
+--------------------------------------------+

减少主从延时复制

TODO


raid0 raid1 raid5 (TODO)

TODO


讲一下Keepalived的工作原理、如何做到健康检查

虚拟路由器: 多个物理路由器组成一个路由器组,这个路由器组就是虚拟路由器(1个master+N个Backup)
VRRP:虚机路由冗余协议,可以认为是实现路由器高可用的协议;
VIP: 虚拟路由器组对外提供的虚拟IP

原理

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协议的。

当MASTER不可用时,BACKUP收不到通告信息,多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性。

于安全性考虑,VRRP包使用了加密协议进行加密。BACKUP不会发送通告信息,只会接收通告信息

健康检查

global_defs {
   router_id LVS_k8s
}

//定义监控脚本
vrrp_script CheckK8sLb {
    script "curl http://admin:admin@10.254.9.21:8082/admin"
    interval 3
    timeout 9
    fall 2
    rise 2
}

//具体实例
vrrp_instance VI_1 {
    state MASTER
    interface  bond1
    virtual_router_id 61
    priority 200
    advert_int 1
    mcast_src_ip 10.254.9.21
    nopreempt
    authentication {
        auth_type PASS
        auth_pass sqP05dQgMSlzrxHj
    }
    unicast_peer {
        10.254.9.21
        10.254.9.23
    }
    virtual_ipaddress {
        10.254.9.129       
    }
    track_script {
        CheckK8sLb
    }
}


简述DNS进行域名解析的过程

找: www.baidu.com

  1. 会先找本机host文件;
  2. 再找本地设置的DNS服务器;
  3. 网络中找根服务器;
  4. 找一级域名:.cn
  5. 找二级域名:.com.cn
  6. 找三级域名:baidu.com.cn

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

1)设定跳板机(仅跳板机可以访问),使用统一账号登录,便于安全与登录的考量。

2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理

3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。


FTP的主动模式和被动模式

FTP主动模式和被动模式的区别

要点: 命令链路 + 数据链路 (类似监听socket通信socket
不同点: 数据链路的建立方式不同;
主动模式: 传送数据是“服务器”连接到“客户端”的端口(可能被客户端的防火墙阻塞掉);
被动模式: 传送数据是“客户端”连接到“服务器”的端口(可能被服务端的防火墙阻塞掉):

主动模式
主动模式

主动模式

被动模式
被动模式

被动模式
被动模式

主动FTP:
   命令连接:客户端 >1023端口 -> 服务器 21端口
   数据连接:客户端 >1023端口 <- 服务器 20端口 

被动FTP:
   命令连接:客户端 >1023端口 -> 服务器 21端口
   数据连接:客户端 >1023端口 -> 服务器 >1023端口 

优缺点

主动模式(服务器发起):FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉

被动模式(客户端发起):FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉

选择

主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。

被动模式只需要服务器端开放端口给客户端连接就行了。(一般选择被动模式的比较多)


Linux启动流程

启动流程

Linux 开机引导和启动过程详解

MBR