[关闭]
@xushengkai 2023-02-05T09:02:02.000000Z 字数 9055 阅读 430

服务问题总结

概念
[TOC]


一--Rsync

1.Rsync有几种模式

  • 三种模式:
    • 单主机本地之间的数据传输
    • 借助ssh通道在不同主机之间的数据传输
    • 以守护进程socket方式传输数据

2.Rsync的socket模式的监听端口号?

默认监听873端口

3.Rsync的限速参数

--bwlimit=KBPS:限制 I/O 带宽

4.什么是NFS网络文件共享系统

NFS是一种基于TCP/IP 传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源

5.什么是动态数据

第一种:有些数据时按照客户的状态需求场景等,外界因素发生动态变化的数据,而这一类数据无法利用所谓的文件进行保存。
比如:个人的朋友圈留言,状态信息发布,账户余额,消费记录,充值记录,游戏用户的注册信息,人口普查信息。

第二种:需要先进行代码的解析处理后,才可发送给客户的数据

6.什么是静态数据

静态数据一般是以文件的形式存储在硬盘上,比如文档、照片、视频等。

二--网络

1.什么是公网,私网,内网,外网

公共网络
运营商搭建的网络为公网,主要负责连接各个公司或者家庭的网络

IP是公网IP
公网访问私网的话,需要运用到DNAT把私网转换成公网

私有网络
企业或者家庭搭建的网络


IP是私网IP
访问公网网站,需要在私网和公网接口处,做SNAT把私网IP转换成公网IP

内部网络
可以简单理解为私网,针对企业而言,企业内部叫内网,企业外部 的叫外网

外部网络
可以简单理解为公网,企业内部的叫内网,企业外部的叫外网


三--NFS

1.什么是NFS网络文件共享系统

NFS是一种基于TCP/IP 传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源

2.为什么企业要用NFS

它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。NFS服务器可以将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,
比如web集群想实现数据共享和动静分离,配置分布式存储比较复杂,也没必要,搭建一个NFS服务器,就可以通过NFS共享几个目录,挂载在几个web服务器上。

3.NFS挂载原理

挂载都需要建立3次握手,客户端去找NFS服务端的rpcbind 111 固定端口,然后分配端口号,进行tcp3次握手,建立连接

4.NFS服务的监听端口号

监听端口 111

5.NFS在/etc/fstab里配置开机自动挂载失败了,这是什么原因?

/etc/fstab会优先于网络被Linux系统加载。网络没启动时执行/etc/fstab会导致连不上NFS服务器端,无法实现开机挂载。而且,即使是本地的文件系统,也要注意,fstab最后两列要设置0 0.否则有可能导致无法启动服务器的问题

6.NFS的优缺点
优点:

节省本地存储空间将常用的数据存放在一台服务器可以通过网络访问
简单容易上手
方便部署非常快速,维护十分简单

缺点:

局限性容易发生单点故障,服务端宕机了所有客户端都不能访问
在高并发下NFS效率/性能有限
客户端没用用户认证机制,且数据是通过明文传送,安全性一般(一般建议在局域网内使用)
NFS的数据是明文的,对数据完整性不做验证
多台机器挂载NFS服务器时,连接管理维护麻烦

四--inotify

1.inotify用于数据安全备份的目的和意义

生产环境中是通过定时任务,打包每台服务器重要的数据,然后定时推送到备份服务器。
定时任务最小单位是分钟也就是说最短只能一分钟备份一次。
需要通过秒级别的安全备份,才能够保障类似NFS存储服务器里静态数据的安全。
因此,我们需要到inotify事件监控工具

2.rsync+inotify专门用于什么情况下的备份

数据需要秒级时时同步

3.生产环境中rsync+inotify的数据同步,可以实现每秒多少文件的并发数据同步,而几乎无延迟?

经过测试,每秒200文件并发,数据同步几乎无延迟(小于1秒

五--MySQL

1.mysql数据库中的常用命令

  1. 查看所有数据库:show databases;
  2. 创建数据库:create database 库名;
  3. 进入数据库:use 库名;
  4. 删除数据库:drop 库名;
  5. 查看表:show tables;
  6. 创建表:create tbale 表名(列名 类型,列名 类型......);
  7. 查看表的结构:desc 表名;
  8. 删除表:delete from 表名;
  9. 完整插入数据:insert into 表名 values (值1,值2.....);
  10. 部分插入数据:insert into 表名(列名,列名....)values (值1,值2.....);
  11. 更新数据:update 表名 set 列名 where 选项;
  12. 删除数据:delete from 表名 where 选项;
  13. 查询所有数据: select 列名 from 表名;
  14. 创建用户:create user 创建的用户名@'localhost/ip' identified by '密码';
  15. 删除用户:drop user 用户名@'localhost/ip';
  16. 修改用户密码
  17. 第一种: mysqladmin -u用户名 -p'旧密码' password '新密码'
  18. 第二种在数据库内:set password=password('新密码');
  19. 然后刷新权限:flush privileges;
  20. 给用户对所有的库授权:grant all on *.* to 用户名@'localhost/ip' identified by '密码';
  21. 回收用户的权限:revoke all on *.* from 用户名@'loaclhost/ip';
  22. 查看权限:show grants for 用户@'localhost/ip';
  23. #查看二进制日志
  24. mysql> show master status;
  25. +------------------+----------+--------------+------------------+
  26. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  27. +------------------+----------+--------------+------------------+
  28. | mysql-bin.000001 | 107 | | |
  29. +------------------+----------+--------------+------------------+

2.解释数据库的冷备,热备,温备的原理及备份方式

冷备:数据库在关闭情况下,直接针对数据库的数据目录/usr/local/mysql/data 直接进行打包。
热备:数据库处于启动状态的备份,例如利用第三方备份工具:xtrabackup
温备:数据库虽然也启动着,但是处于锁表状态,只能读不能写的备份模式。例如:MySQL自带备份工具mysqldump

3.什么是完全备份,什么是增量备份?

完全备份
每次对数据进行完整的备份,对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异各份与增量备份的基础。
优点:备份与恢复操作简单方便
缺点:数据存在大量的重复;占用大量的空间;备份与恢复时间长

增量备份
只有那些在上次完全备份或者增量备份后被修改的文件才会被备份以上次完整备份或上次的增量备份的时间为时间点,仅备份这之间的数据变化,因而备份的数据量小,占用空间小,备份速度快。但恢复时,需要从上一次的完整备份起到最后一次增量备份依次恢复,如中间某次的备份数据损坏,将导致数据的丢失。

4.MySQL数据库针对mysqldump工具的两种数据恢复方式?

  1. source 路径+备份的文件.sql
  2. 非交互式:mysql -u用户名 -p'密码' 库名 < 备份文件的路径

5.MySQL数据库的mysqldump工具的完全备份的备份参数是什么?

--all -databases
--opt

6.如果要备份MySQL数据库的某个表的表结构,用什么参数?

-d

7.小公司如何做MySQL的数据安全?中大型公司如果做MySQL的数据安全?

第一部分:非数据库和存储的服务器。我们通过定时任务,定时打包推送到备份服务器。并进行数据完整性校验。

第二部分:存储服务器。我们通过rsync+inotify进行秒级的时时同步。我在线下进行测试时候,最大可以支撑每秒200个文件以上的变化数据无延迟。

第三部分小公司,服务器数量小于60台,我们采取每天凌晨3点进行一次全量备份的方式来保障数据库的数据安全,数据包也推送到备份服务器。因为小公司无增量备份

8.二进制日志的作用,以及开启二进制日志的参数?

除了查询操作,其余操作都会被记录
log-bin=mysql-bin

9.二进制日志恢复数据的三种方式?

按照二进制文件
按照位置
按照时间

10.假如不考虑成本的情况下,由你设计一个保障企业服务器环境数据安全的方案(三步)

第一部分:非数据库和存储的服务器,我们通过定时任务,定时打包推送到备份服务器,并进行数据完整性校验。
第二部分:存储服务器,我们通过rsync+inotify进行秒级的时时同步。我在线下进行测试时候,最大可以支撑每秒200个文件的变化,数据无延迟。
第三部分:我们采取每周一次全量备份,备份的时候需要停数据库。每天一次增量备份,来保障数据库服务器的数据安全。

11.什么是数据库的主从复制,主从复制的目的是什么?

对mysql进行架构调整
目的:通过数据库的主从复制功能,实现用户的读写分离,数据备份,灾备

12.什么是数据库的读写分离,读写分离的目的是什么?

读写分离就是将数据库分为主数据库和从数据库,主数据库是用来进行数据库的写操作,多个从数据库用来进行数据库的读操作。

目的:降低数据主库的访问压力

13.请详细说明MySQL主从复制技术的原理过程?

从库生成两个线程,一个I/O线程,一个SQL线程;I/O线程去请求主库 的binlog,并将得到的binlog日志写到relaylog(中继日志) 文件中;主库会生成一个 log dump 线程,用来给从库 I/O线程传binlog;SQL线程,会读取relaylog文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
此处输入图片的描述

14.一台数据库最多可以有多少个从库?简要说明从库不能太多的原因?

最多有五个从库
从库太多会影响主库复制数据的时效性,影响主库性能

15.数据库的临时手动锁表只读命令?解开数据库锁表只读命令?

  1. #锁表
  2. mysql> flush table with read lock;
  3. #解锁
  4. mysql> unlock tables;
  5. #查看锁表时间
  6. mysql> show variables like '%timeout%';

六--Nginx

1.什么是Nginx,它的作用是什么?Nginx的三大功能是什么?

  • Nginx(engine x)是一个高性能的HTTP(解决C10k的问题)和反向代理服务器,也是一个IMAP/POP3/SMTP服务器(收发邮件)。可以做到动静分离,非常强大
    c10k:connection连接 10k=10000 也就是万级并发
    反向代理服务器:nginx可以做负载均衡和缓存服务器

  • 作用:反向代理,负载均衡,动静分离

  • 功能: Web服务器 缓存服务器 反向服务代理

2.Apache如何接待用户?什么模型(中英都写)

Apache的开发模型select(同步阻塞I/O模型),这种开发模型代码编写起来,比较简单它是利用进程来接待每一个用户,一个用户占用apache的一个进程,所以select也叫做多进程模式。
apache通过在内存中,生成多个子进程的方式,来等待用户连接过来。

3.Nginx如何接待用户?什么模型(中英都写)

Nginx的开发模型epoll(异步非阻塞I/O模型),Nginx是利用线程接待用户,一个线程接待一个用户,又因为异步非阻塞I/O模型,所以一个线程就可以帮助用户同时做多件事情。

4.Apache和Nginx的差别在哪?

Apache是select模型,它是利用进程来接待用户,每个进程只能接待用一个用户。要想让一个用户同时做多件事情,apache就需要调用进程里的多个线程,每个线程由于是阻塞的,每个线程同一时间只能做一件事情,所以Apache每个进程才能接待一个用户。Nginx每个线程就能接待一个用户。
一个进程里,可以产生多个线程最大65535,真正占内存空间的是进程==>资源池,多进程接待用户。就意味着内存要开辟多个空间给进程。线程接待用户,由于多个线程利用的是一个进程空间,因此内存占用很低。
所以Apache比Nginx要占用更多的内存空间,但是承接的用户的并发量却远低于Nginx,nginx性能极高,但是在高并发场景下,有可能出现宕机问题或者线程死锁。


(1)Apache优于Nginx的地方?

线程接待用户。就意味着多个用户都需要使用同一个进程的空间,
也就意味着多个用户在访问的时候,资源其实是共享的,同一个进程里的线程接待的。apache进程接待用户,进程和进程之间资源池是独立的,用户之间资源是不共享的。不共享就不会有冲突,同一个文件,如果资源共享的情况下,多个线程是不能同时操作的。
因此Apache性能低但胜在稳定。

(2)Nginx优于APache的地方?

性能上,当然Nginx要远高于apache
Nginx的线程,虽然资源共享,但由于接待的用户的请求都是读请求,用户同时读一个文件,不会改变目标文件内容。正因为如此,Nginx才能利用线程接待用户

5.什么是线程死锁?请简单举例说明

线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。

如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状态。
此处输入图片的描述

6.既然Nginx处于高并发访问下不稳定,为何还要用Nginx作为Web服务器?

Nginx的线程,虽然资源共享,但是接待的用户都是读请求。不会改变文件内容。因此nhinx才可以利用线程接待用户,线程接待用户,由于多个线程利用的是一个进程的空间,因此内存占用率低

7.Nginx的配置文件的最基础的参数。(一共18行)
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;

    location / { 
        root   html;
        index  index.html index.htm;
    }   

}
}
8.请解释什么是连接保持?这个东西的作用或者好处是什么?

TCP三次握手和四次挥手之间叫连接保持
好处是高效性能更高,节省耗时和带宽

9.如果黑客利用IP直接访问我们的网站,我们有什么办法来防护?

当用户使用ip访问时,不知道访问哪个网页会默认访问 default_server 默认server 直接返回403报错。

10.请解释以下参数的含义?

  1. Active connections: 1 #目前连接了一个用户
  2. server accepts handled requests
  3. 42 42 107
  4. #nginx启动到现在进行了42次连接
  5. #一共进行了42次tcp三次握手
  6. #总共个处理的请求数91个
  7. Reading: 0 Writing: 1 Waiting: 0
  8. #Reading :读取客户端Header的信息数 请求头
  9. #Writing:返回给客户端的header的信息数 响应头
  10. #Waiting:等待的请求数,开启了keepalive

11.关于Nginx的Location匹配规则,五种匹配规则

默认匹配,默认的匹配规则,只要uri部分含有“/”就符合条件,因为uri的起始位置必须是“/”

  1. location / {
  2. root 目录路径;
  3. index index.html index.htm;
  4. }

正则匹配,~表示正则(区分大小写),*表示不区分大小写

  1. location ~* \.(gif|jpg|jepg)$ {
  2. root 目录路径;
  3. index index.html index.htm;
  4. }

字符串匹配

  1. location /documents/ {
  2. root 目录路径;
  3. index index.html index.htm;
  4. }

特殊的正则匹配,(临时让字符串匹配优先级高于正则匹配),^~ 开头对uri路径进行前缀匹配,并且在正则之前。

  1. location ^~ /images/ {
  2. root 目录路径;
  3. index index.html index.htm;

精确匹配

  1. location = / { #精确匹配,uri部分只能是一个“/”,不能有别的
  2. root 目录路径;
  3. index index.html index.htm;
  4. }
  5. location = /images/ { #精确匹配
  6. root 目录路径;
  7. index index.html index.htm;
  8. }

五种匹配之间的优先级关系
精确匹配>特殊的正则匹配>正则匹配>字符串匹配 > 默认匹配

12.LNMP分别是什么?运行原理是什么?

七--负载均衡

1.请简要描述LVS四层负载均衡原理

2.请简要描述nginx七层负载均衡原理

3.LVS四层负载均衡和nginx七层负载均衡本质的区别是什么?

LVS和Nginx负载均衡的本质区别:LVS是通过转发数据包实现的负载均衡
Nginx是通过反向代理实现的负载均衡。(Nginx新版本也支持转发数据包--with-stream模块

4.请简要描述什么是正向代理,什么是反向代理,什么是透明代理

5.LVS的后方的Web节点的内容是否必须是完全一样?

6.NginxLB后方的Web节点的内容是否必须是完全一样的?

不是

7.同一个负载均衡池下的NginxLB里的Web节点内容是否必须是完全一样的?

8.NginxLB后方的某个web节点宕机,是否会影响整体业务的运行?

不会影响

9.当我们以www.yun.com或者org.yun.com访问NginxLB时,
我们发现返回给我们的网页都是同一个网页。NginxLB没有很好的
传递用户访问的域名给后方Web节点。请问这个问题,我们该如何处理?

  1. proxy_set_header host $host; #在代理向后端服务器发送的http请求头中加入host字段信息,用于当后端服务器配置有多个虚拟主机时,可以识别代理的是哪个虚拟主机。这是节点服务器多虚拟主机时的关键配置。

10.我们发现当我们部署完NginxLB后,后方的Web节点的日志里,记录的都是LB的IP,而没有用户的真实来源IP,请问这个问题,我们如何解决?

  1. proxy_set_header X-Forwarded-For $remote_addr;
  2. #在代理向后端服务器发送的http请求头中加入X-Forwarded-For字段信息,用于后端服务器程序,日志等接收记录真实用户的IP,而不是代理服务器的IP

11.网站访问图片视频资源的流程原理?

12.什么是盗链?我们如何来防止外部恶意盗链?

13.什么是集群的单点问题?什么叫集群的高可用?

高可用:集群中任意一个节点失效的情况下,该节点上的所有业务会自动转移到其他正
常节点上,不影响整个集群的运行,即保持了企业业务的7*24小时运行;
单点故障:就是集群中一个节点服务器出现故障,导致整个集群不能正常工作。

14.VRRP协议的中文名字叫什么?具体的原理是什么?

15.Keepalived故障转移原理是什么?

  • Keepalived高可用服务之间的故障切换转移,是通过VRRP协议实现的;
  • 在Keepalived服务正常工作时,首先根据优先级选举出Master节点,Master 节点拥有VIP。Master节点通过发送ARP报文(多播),将自己的虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务;(用户的请求会来到Master节点上)
  • 期间Master节点周期性发送多播,用以告诉备节点自己还活着;
  • 如果备节点在一段时间内收不到Master节点发出的广播包,就判定Master节点死亡,
    将根据优先级竞争重新选举新的Master节点,继承VIP;
  • 选举的新的Master节点代替原有Master节点发送广播给其他备节点,承担报文转发任务;
  • 优先级高的Master节点恢复时,VIP又自动漂移回来,用户继续访问VIP去到原来的Master节点。

16.为何keepalived对之间要采取独立的网段发送心跳包?

17.两个keepalived高可用对之间,一般要建立几条心跳线?(三条)

18.NginxLB服务器上,至少要有几块网卡?(两块,一个业务网卡,一个心跳包的网卡)

19.部署了keepalived高可用的服务器上,需要写些什么脚本?主上的是什么?备上的是什么?
Keepalived检测漂移脚本(主上)

作用:实现Nginx服务不正常时候也正常漂移接管VIP的功能。
设计思路:
当检测不出Nginx服务的端口(80)的时候,关闭Keepalived服务,使VIP漂移。


检测高可用裂脑脚本(备上)
作用:实现检测裂脑的功能。
设计思路:

  • 如果备服务器可以ping通主服务器心跳线网卡,同时nmap或者telnet检测对方nginx正常工作,但是备Keepalived服务器有vip就报警------防火墙挡住了心跳包;
  • 如果备服务器ping不通主服务器心跳线网卡,就ping主Keepalived服务器另外一块网
    卡。如果ping另外一个块网卡成功了,同时nmap或者telnet检测对方nginx正常工作,但是备Keepalived服务器有vip就报警------心跳线断了

20.由于keepalived只能解决物理服务器的故障切换转移,无法解决软件故障的转移,因此我们需要设置强制故障切换转移脚本。请简单描述一下,脚本的核心实现思路?

21.什么是高可用对的脑裂现象?我们如何防止或者避免脑裂现象的发生?请描述一下脚本的思路。

八--iptables

1.iptables一共有四表五链,请分别写出四表五链的英文名字。

2.iptables的SNAT和DNAT分别是在哪个链做规则?

3.iptables -F 和service iptables stop都可以清楚防火墙规则,但是他们之间有什么不同?

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注