欢迎阅读我的笔记博客

48) linux运维简答题

1- 什么是运维

  1. 运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,
    在设备运转的过程中,对设备进行维护。运维集合了网络、系统、数据库、开发、安全、监控于一身的技术
    运维又包括很多种,有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等

  2. 游戏运维又有分工,分为开发运维、应用运维(业务运维)和系统运维
    开发运维:是给应用运维开发运维工具和运维平台的
    应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维护、做故障排查
    系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等

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

2- 如何高效率管理多台服务器

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

3- raid0 raid1 raid5 三种工作模式的工作原理及特点

RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据
还有一个大功能,多块盘放在一起可以有冗余(备份)
RAID整合方式有很多,常用的:0 1 5 10

  1. RAID 0,可以是一块盘和N个盘组合。优点: 读写快,是RAID中最好的。 缺点:没有冗余,一块坏了数据就全没有了
  2. RAID 1,只能2块盘,盘的大小可以不一样,以小的为准10G+10G只有10G,另一个做备份。它有100%的冗余,缺点:浪费资源,成本高
  3. RAID 5 ,3块盘,容量计算10*(n-1),损失一块盘。特点,读写性能一般,读还好一点,写不好

总结:

  • 冗余从好到坏:RAID1 RAID10 RAID 5 RAID0
  • 性能从好到坏:RAID0 RAID10 RAID5 RAID1
  • 成本从低到高:RAID0 RAID5 RAID1 RAID10

建议

  1. 单台服务器:很重要盘不多,系统盘,RAID1
  2. 数据库服务器:主库:RAID10 从库 RAID5RAID0(为了维护成本,RAID10)
  3. WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)。有多台,监控、应用服务器,RAID0 RAID5

4- LVS、Nginx、HAproxy有什么区别

  • LVS: 是基于四层的转发
  • HAproxy: 是基于四层和七层的转发,是专业的代理服务器
  • Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

区别

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

5- 代理服务器

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

6- 什么是中间件

  • 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源
  • 中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯
  • 连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口.

通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递
通过中间件,应用程序可以工作于多平台或OS环境。

7- 什么叫CDN

  • 内容分发网络
  • 目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到
    最接近用户的网络边缘,使用户可就近取得所需的内容,提高用户访问网站的速度

8- 网站灰度发布

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。
AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。
灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度

9- DNS进行域名解析的过程

用户要访问www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端

10- Keepalived的工作原理

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

11- LVS三种模式的工作过程

LVS 有三种负载均衡的模式,分别是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)

11.1- NAT模式(VS-NAT)

原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址并发至此RS来处理,RS处理完后把数据交给负载均衡器,负载均衡器再把数据包原IP地址改为自己的IP将目的地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器

  1. 优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址

  2. 缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!

11.2- IP隧道模式(VS-TUN)

原理:首先要知道,互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS。RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。
注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议,所以,在RS的内核中,必须编译支持IPTUNNEL这个选项

  1. 优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量。这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。

  2. 缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”,(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上

11.3- 直接路由模式(VS-DR)

原理:负载均衡器和RS都使用同一个IP对外服务但只有DR对ARP请求进行响应所有RS对本身这个IP的ARP请求保持静默也就是说,网关会把对这个服务IP的请求全部定向给DR。而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致),并将请求分发给这台RS这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必须在一个广播域,也可以简单的理解为在同一台交换机上

  1. 优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端,与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。

  2. 缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。

12- mysql如何减少主从复制延迟

延迟比较大,就先确认以下几个因素:

  1. 从库硬件比主库差,导致复制延迟
  2. 从复制单线程,如果主库写并发太大,来不及传送到从库
  3. 慢SQL语句过多
  4. 网络延迟
  5. master负载:主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层
  6. slave负载: 使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器只作为备份用,不进行其他任何操作.

解决办法:

  1. 使用高版本的mysql可以支持多线程复制。
  2. slave库设置参数:–slave-net-timeout=seconds 单位为秒 默认设置为 3600秒。【当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据】
  3. –master-connect-retry=seconds 单位为秒 默认设置为 60秒。 【当重新建立主从连接时,如果连接建立失败,间隔多久后重试】
  4. 减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行。
  5. 主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit
    = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog 【innodb_flushlog也可以设置为0来提高sql的执行效率】
  6. 使用比主库更好的硬件设备作为slave

方法2,3参数可以减少网络问题导致的主从数据同步延迟

13- 重置mysql root密码

13.1- 已知MYSQL数据库的ROOT用户密码

####shell 终端
mysqladmin –u root –p password "新密码" 

###mysql>环境中
update  mysql.user  set  password=password(‘新密码’)  where  user=’root’;
flush   privileges;

###mysql>环境中
 grant  all  on  *.*  to   root@’localhost’  identified  by  '新密码';

13.2- 忘记mysql数据库的ROOT用户的密码

#1. 关闭当前运行的mysqld服务程序.
service mysqld stop
#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;

14- lvs/nginx/haproxy优缺点

14.1- Nginx

14.1.1- Nginx的优点

  1. 工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构.它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一。Nginx单凭这点可利用的场合就远多于LVS
  2. Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一。 相反LVS对网络稳定性依赖比较大
  3. Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间
  4. 可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS相对小些。
  5. Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉。
  6. Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。在高流量的环境中稳定性也很好。
  7. Nginx作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快
  8. Nginx可作为中层反向代理使用,基本上无对手
  9. Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。还有Nginx社区非常活跃,第三方模块也很多

14.1.2- Nginx的缺点

  1. 仅能支持http、https和Email协议,这样就在适用范围上面小些
  2. 对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测
  3. 不支持Session的直接保持,但能通过ip_hash来解决

14.2- LVS

使用Linux内核集群实现一个高性能、高可用的负载均衡服务器。
它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)

14.2.1- LVS的优点

  1. 抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生。也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
  2. 配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,大大减少了人为出错的几率
  3. 工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案。【如LVS+Keepalived,项目实施中用得最多的还是LVS/DR+Keepalived】
  4. 无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。
  5. 应用范围较广,因为LVS工作在4层,所以它几乎可对所有应用做负载均衡,包括http、数据库、在线聊天室等

14.2.2- LVS的缺点

  1. 软件本身不支持正则表达式处理,不能做动静分离 【许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在】
  2. 网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂 【在windows server上,
    Nginx/HAProxy+Keepalived相对简单】

14.3- HAProxy

特点:

  1. HAProxy也是支持虚拟主机的

  2. HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导。【同时支持通过获取指定的url来检测后端服务器的状态】

  3. 跟LVS类似,本身就只是一款负载均衡软件。【纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx】

  4. HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡。【对后端的MySQL节点进行检测和负载均衡,可以用LVS+Keepalived对MySQL主从做负载均衡】

  5. 负载均衡策略非常多,负载均衡算法现在具体有8种:

    1) roundrobin:简单的轮询
    2) static-rr: 根据权重
    3) leastconn: 最少连接
    4) source: 根据请求源IP,这个跟Nginx的IP_hash机制类似。【用其作为解决session问题的一种方法】
    5) ri: 根据请求的URI
    6) rl_param: 根据请求的URl参数’balance url_param’ requires an URL parameter name
    7) hdr(name): 根据HTTP请求头来锁定每一次HTTP请求
    8) rdp-cookie(name): 根据cookie(name)来锁定并哈希每一次TCP请求

15- mysql数据备份工具

15.1- mysqldump

mysqldump是mysql自带的备份工具,目录在bin目录下面:```/usr/local/mysql/bin/mysqldump``
支持基于innodb的热备份,但是由于是逻辑备份,所以速度不是很快,适合备份数据比较小的场景
Mysqldump完全备份+二进制日志可以实现基于时间点的恢复。

15.2- LVM快照(tar包备份)

物理备份中,有基于文件系统的物理备份(LVM的快照),也可以直接用tar之类的命令对整个数据库目录进行打包备份,但是这些只能进行泠备份,不同的存储引擎备份的也不一样,myisam自动备份到表级别。而innodb不开启独立表空间的话只能备份整个数据库。

15.3- percona提供的xtrabackup工具

支持innodb的物理热备份,支持完全备份,增量备份,而且速度非常快,支持innodb存储引起的数据在不同。数据库之间迁移,支持复制模式下的从机备份恢复备份恢复,为了让xtrabackup支持更多的功能扩展.可以设立独立表空间,打开 innodb_file_per_table功能,启用之后可以支持单独的表备份

16- keepalive的工作原理和健康检查

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组。这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了。 这时就需要根据VRRP的优先级来选举一个backup当master。这样就可以保证路由器的高可用了

16.1- keepalived 模块

分别是core、check和vrrp。

  • core模块为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析
  • check负责健康检查,包括常见的各种检查方式
  • vrrp模块是来实现VRRP协议。

16.2- Keepalived健康检查方式配置


HTTP_GET | SSL_GET
{
    url {
    path /``# HTTP/SSL 检查的url可以是多个
    digest <STRING> ``# HTTP/SSL 检查后的摘要信息用工具genhash生成
    status_code 200``# HTTP/SSL 检查返回的状态码
    }
    connect_port 80 ``# 连接端口
    bindto<IPADD>
    connect_timeout 3 ``# 连接超时时间
    nb_get_retry 3 ``# 重连次数
    delay_before_retry 2 ``#连接间隔时间
    }

17- 分析nginx访问日志,访问页面数量在前十位的ip

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

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

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

19- iptables将本地80 端口的请求转发到8080 端口。

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

20- 对运维工程师的理解和以及对其工作的认识

  • 运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供最高、最快、最稳定、最安全的服务
  • 运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失
  • 运维工程师的工作需要严谨及富有创新精神

21- 抓取并显示当前系统中tcp 80端口的网络数据信息

tcpdump -nn tcp port 80

22- Linux系统中病毒

  1. 重装系统
  2. 就是找到病毒文件然后删除
    1. 中毒之后一般机器cpu、内存使用率会比较高
    2. 机器向外发包等异常情况
  3. 即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下

检查处理办法:

  • top 命令找到cpu使用率最高的进程
  • 一般病毒文件命名都比较乱,可以用 ps aux 找到病毒文件位置
  • rm -f 命令删除病毒文件
  • 检查计划任务、开机启动项和病毒文件目录有无其他可以文件等

23- OSI七层模型

  1. 应用层 (Application):网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
  2. 表示层(Presentation Layer):数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)。格式有,JPEG、ASCll、DECOIC、加密格式等
  3. 会话层(Session Layer):建立、管理、终止会话。(在五层模型里面已经合并到了应用层)。对应主机进程,指本地主机与远程主机正在进行的会话
  4. 传输层 (Transport):定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
  5. 网络层 (Network):进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
  6. 数据链路层 (Link):建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)。 将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正
  7. 物理层(Physical Layer): 为传输数据所需要的物理链路创建、维持、拆除而提供具有机械的,电子的,功能的和规范的特性。

24- Nginx常用模块

  1. rewrite模块,实现重写功能
  2. access模块:来源控制
  3. ssl模块:安全加密
  4. ngx_http_gzip_module:网络传输压缩模块
  5. ngx_http_proxy_module 模块实现代理
  6. ngx_http_upstream_module模块实现定义后端服务器列表
  7. ngx_cache_purge实现缓存清除功能

25- 优化 Linux系统

  1. 不用root,添加普通用户,通过sudo授权管理
  2. 更改默认的远程连接SSH服务端口及禁止root用户远程连接
  3. 定时自动更新服务器时间
  4. 配置本地yum源
  5. 关闭selinux及iptables(iptables工作场景如果有外网IP一定要打开,高并发除外)
  6. 调整文件描述符的数量
  7. 精简开机启动服务(crond rsyslog network sshd)
  8. 内核参数优化(/etc/sysctl.conf)
  9. 锁定关键系统文件
  10. 清空/etc/issue,去除系统及内核版本登录前的屏幕显示

26- 命令取出 linux 中 eth0 的 IP 地址

  1. ifconfig eth0|sed -n '2p'|cut -d ":" -f2|cut -d " " -f1
  2. ifconfig eth0|awk 'NR==2'|awk -F ":" '{print 2}'|awk '{print1}'
  3. ifconfig eth0|awk 'NR==2'|awk -F "[: ]+" '{print $4}'
  4. ifconfig eth0|sed -n '/inet addr/p'|sed -r 's#^.ddr:(.)Bc.*$##g'

27- 快捷键

  1. Ctrl + a —->光标移动到行首
  2. Ctrl + e —->光标移动到行尾
  3. Ctrl + c —->终止当前程序
  4. Ctrl + d —->如果光标前有字符则删除,没有则退出当前中断
  5. Ctrl + l —->清屏
  6. Ctrl + u —->剪切光标以前的字符
  7. Ctrl + k —->剪切光标以后的字符
  8. Ctrl + y —->复制u/k的内容
  9. Ctrl + r —->查找最近用过的命令
  10. tab —->命令或路径补全
  11. Ctrl+shift+c —->复制
  12. Ctrl+shift+v —->粘贴
posted @ 2020-03-15 22:06  lemanlai  阅读(507)  评论(0编辑  收藏  举报