1.首先用户执行命令或者执行playbook
2.INI解析配置文件(从主机清单中解析出IP)
3.主机建立ssh连接
4.在被控主机创建临时目录
5.给创建的目录加权限
6.执行python脚本
7.删除脚本
域名解析URL转发分为显性和隐性,
显性URL:将域名重定向到另一个地址
隐性URL:与显性URL类似,但是会隐藏真实的目标地址
假设将域名A跳转到域名B来说下隐形URL和显性URL的区别:
域名转发:显性URL跳转和隐性URL跳转都属于域名转发,只是从一个域名跳转到另外一个域名而已,不须要在服务器端作域名解析便可生效。cname解析和隐性URL跳转后,在浏览器的地址栏中输入域名A(域名A被cname解析到域名B),则地址栏中的地址仍是域名A,而显性URL跳转后,浏览器地址栏中的域名会变成作了URL跳转后的域名。
1.某个进程正在使用资源还没有被释放,所以内存空间也没有被释放,可以杀掉进程
2.也可能是僵尸进程
目录
问题一:ansible执行过程:
问题二:显性URL和隐形URL区别:
问题三:有时候删除文件但是内存还没有被释放还在占用
问题四:redis的持久化方式:(为了减少数据库的压力)
RDB与AOF区别:
AOF重写适合在AOF运行了很久的写命令之后执行
1.缓存穿透,缓存击穿,缓存雪崩的原理
5.redis事务:
6.Watch监控(很重要)
问题五:nginx的负载均衡策略:
问题六:DOS攻击,CC攻击,DDOS攻击的介绍和解决办法
问题七:MySQL数据库事务的特性:
原子性【Atomicity】
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)
RDB:(全量)
(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),
AOF:(增量) Append Only File 追加写入同步三个步骤完成命令
(原理是将Reids的操作日志以追加的方式写入文件)
2.缓存穿透的解决办法
1.采用布隆过滤器进行数据拦截
2.如果数据为空也可以进行缓存,就不会发生穿透情况
3.缓存击穿解决办法
使用互斥锁(mutex key),就是一个key过期时,多个请求过来允许其中一个请求去操作数据库,其他请求等待第一个请求成功返回结果后再请求。
4.缓存雪崩的解决办法
redis事务可以一次性执行多个命令:
一个事务从开始到执行会经历以下三个阶段:
1.)表锁与行锁:表锁是锁住整张表,使用这张表的这一瞬间只能一个人在使用
特点:并发性差但数据一致性高。
行锁:锁住一行记录
特点:并发性好,一致性差。
2. )乐观锁、悲观锁: 悲观锁就类似与表锁,它保证了数据一致性但牺牲了效率。而乐观锁虽与行锁有相似之处,但是它在行锁的基础之上做了提升。
3. Watch:监控
监控某一个或多个key,在执行事务之前如果被其他命令所打断那么事务终止。
!!!注意:只要执行了EXEC,之前加的监控锁都会被取消!Redis的事务不保证原子性,一条命令执行失败了,其他的仍然会执行,且不会回滚
目前Nginx服务器的upstream模块支持6种方式的分配:
轮询 |
默认方式 |
weight |
权重方式 |
ip_hash |
依据ip分配方式 |
least_conn |
最少连接方式 |
fair(第三方) |
响应时间方式 |
url_hash(第三方) |
依据URL分配方式 |
一、DDoS攻击介绍
DDoS攻击(Distributed Denial of Service)是分布式拒绝服务。
DOS攻击想办法让目标机器停止服务或资源访问,这些资源包括磁盘空间、内存、进程甚至网络
带宽,从而阻止正常用户的访问。
1.将大量流量像洪水一样涌向服务器(FLOOD),阻止合法的网络通讯
2.破坏两个机器间的连接,阻止访问服务
3.阻止特殊用户访问服务
4.破坏服务器的访问或者导致服务器死机
不过DOS攻击单独使用的较少,通常是将DOS攻击作为一次入侵的一部分,比如用大量的攻击攻击服务器,导致防入侵检测系统的日志过多,反应迟钝,这样就可以绕过检测系统
二、DDos攻击原理
TCP是提供可靠的、端到端的字节流通讯协议。
在TCP/IP协议中,IP层不保证将数据报正确传送到目的地,TCP从本地机器接受用户的数据流,将其分成不超过64K字节的数据片段,将每个数据片段作为单独的IP数据包发送出去,最后在目的地
机器中再组合成完整的字节流,TCP协议必须保证可靠性。
1.SYN Flood:利用TCP协议的原理,这种攻击方法是非常经典的DDOS方法。主要是通过受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的缓存组员被耗尽或忙于发送回应包而造成拒绝服务。
TCP三次握手:
1.客户端发送一个包含SYN标志的TCP报文,同步报文指明客户端所需要的端口号和TCP连接的初始化序列号
2.服务器收到SYN报文之后,返回一个SYN+ACK报文 表示客户端被接受 TCP初始序列号+1
3.客户端也返回一个确认报文ACK给服务器,同样TCP序列号+1
4.如果服务器端没有收到客户端的确认报文ACK,则处于等待状态,将客户IP加入等待队列,然后轮询发送SYN+ACK报文
所以攻击者可以通过伪造大量的TCP握手请求,耗尽服务器端的资源
2.慢速攻击:Http协议中规定,HTTPRequest以\r\n\r\n结尾表示客户端发送成功。攻击者打开一个Http1.1的连接,将Connection设置为keep-Alive,然后保持与服务器的TCP长连接。始终不打送\r\n\r\b,每隔几分钟写入一些无意义的数据流,拖死机器。
三、DDoS攻击防御方法
1.过滤不必要的服务和端口
2.异常流量的清洗过滤:通过DDoS硬件防火墙对异常流量的清洗过滤,通过数据包的规则过滤、数据流指纹检测过滤、数据包内容定制过滤等技术能准确判断外来访问流量是否正常,进一步将异常流量禁止过滤。
四、CC攻击
CC攻击(Challenge Collapsar)是DDOS的一种,也是一种常见的网站攻击方法。攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。相比其它的DDOS攻击CC似乎更有技术含量一些。这种攻击你见不到真实源IP,见不到特别大的异常流量,但造成服务器无法进行正常连接。
五、CC攻击防御
1.把网站做成静态页面:把网站尽可能做成静态页面,能大大提高抗攻击能力。
2.存在多站的服务器上,严格限制每一个站允许的IP连接数和CPU的使用时间。
原子性指的指的就是这个操作,要么全部成功,要么全部失败回滚。不存在其他的情况。
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。