选择题
1、数据库事务的特性(ABCD)
A、原子性
B、一致性
C、隔离性
D、持久性
A:原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响
B:一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
拿转账来说,假设用户甲和用户乙两者的钱加起来一共是5000,那么不管甲和乙之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
C:隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
D:持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
2、以下关于Mysql的事务隔离级别说法正确的是(AB)
A 未提交读:容许脏读,其他事务只要修改了数据,即使未提交,本事务也能看到修改后的数据值。
B未提交读:可能读取到其他会话中未提交事务修改的数据。
C提交读:容许脏读,其他事务只要修改了数据,即使未提交,本事务也能看到修改后的数据值。
D.提交读:可能读取到其他会话中未提交事务修改的数据。
脏读:指在一个事务处理过程里读取了另一个未提交的事务中的数据。
未提交读:一个事务能够读取到别的事务中没有提交的更新数据。事务可以读取到未提交的数据,这也被称为脏读(dirty read)。
提交读:一个事务只能读取到别的事务提交的更新数据。
一般我们提交读就可以了。只能读取到已经提交的数据。即解决了脏读,但未解决不可重复读。(oracle默认的)
可重复读(Repeated Read):保证同一事务中先后执行的多次查询将返回同意结果,不受其他事务的影响。这种隔离级别可能出现幻读。(mysql默认的)
幻读:是指事务非独立执行时发生的一种现象。
例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。
序列化:不允许事务并发执行,强制事务串行执行,就是在读取的每一行数据上都加上了锁,读写相互都会阻塞。这种隔离级别最高,是最安全的,性能最低,不会出现脏读,不可重复读,幻读,丢失更新。
3、以下关于数据库索引的说法正确的是(ABD)
A、数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库中数据。
B、B_TREE索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据。
C、B_TREE从子节点开始,子节点保存了根节点的指针,存储引擎会根据指针快速寻找数据。
D、MyISAM和InnoDB都使用B_TREE作为引擎结构。
数据库索引:是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。
B_TREE索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据;相反,它从根节点开始,根节点保存了子节点的指针,存储引擎会根据指针快速寻找数据。
作为索引中最为常见的一种类型,B-Tree索引大都采用的是 B+Tree数据结构来存储数据。B-Tree通常也意味着所有的值都是按顺序存储的。大多数的 MySQL引擎都支持这种索引,而不同的存储引擎以不同的方式来实现 B-Tree索引,性能方面各有优劣。
4、关于数据库存储引擎MyISAM和InnoDB的区别说法正确的是(BCD)。
A、InnoDB和MyISAM都支持事务。
B、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁频繁修改以及设计到安全性较高的应用。
C、MyISAM支持全文类型索引,而InnoDB不支持全文索引。
D、select count(*) from table where id=101时,InnoDB需要扫描整个表计算行数,MyISAM只需要读出保存好的总行数。
A、MyISAM不支持事务,而InnoDB支持事务
B、MyISAM:默认的MySQL插件式存储引擎。如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常适合的。MyISAM是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。
InnoDB:用于事务处理应用程序,支持外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包括很多的更新、删除操作,那么InnoDB存储引擎应该是比较合适的选择。InnoDB存储引擎除了有效地降低由于删除和更新导致的锁定,还可以确保事务的完整提交( Commit) 和回滚( Rollback),对于类似计费系统或者财务系统等对数据准确性要求比较高的系统, InnoDB 都是合适的选择。采用事务日志,系统崩溃后易于数据的恢复。
C、MyISAM支持全文类型索引,而InnoDB不支持全文索引。
D、MyISAM中存入有表中的具体的行数,InnoDB中没有存储表的具体的行数,查询的时候要对整个表进行遍历,消耗巨大。没有where的count()使用MyISAM要比InnoDB快得多。因为MyISAM内置了一个计数器,count()时它直接从计数器中读,而InnoDB必须扫描全表。
5、关于delete、drop、truncate的区别,以下描述正确的是(ABCD)
A、truncate和delete只删除数据,不删除表结构,drop删除表结构,并且释放所占空间。
B、数据删除的速度,drop>truncate>delete。
C、delete属于DML语言,需要事务管理,commit之后才能生效。drop和truncate数据DDL语言,操作立刻生效,不可回滚。
D、对于有外键关系的表,不能使用truncate而应该使用不带where子句的delete语句。
A、DROP删除整个表,DROP语句将表占用的空间全部释放掉;DELETE删除表中数据和可以删除视图(view),DELETE操作不会减少表或索引占用的空间;TRUNCATE只删除表数据,表和索引占用的空间会恢复到初始大小。
B、效率一般来说:drop> truncate > delete
C、DELETE为DML操作,有数据库事物控制,可回滚;事物提交后delete操作生效;DROP和TRUNCATE为DDL操作,无事物控制,操作立即生效
D、对于外键(foreignkey )约束引用的表,不能使用 truncate table,而应使用不带 where 子句的 delete 语句。
6、关于char(4)和varchar(4)的差别描述正确的是(AC)
A、char(4)定义的是固定长度4,存储时,如果字符数不够4位,会在后面用空格补全存入数据库。
B、varchar(4)定义的是固定长度4,存储时,如果字符数不够4位,会在后面用空格补全存入数据库。
C、varchar(4)定义的是边长长度,存储时,如果字符没有达到定义的位数4时,也不会在后面补空格。
D、char(4) 定义的是边长长度,存储时,如果字符没有达到定义的位数4时,也不会在后面补空格。
char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),varchar(4)定义的是边长长度,存储时,如果字符没有达到定义的位数4时,也不会在后面补空格。
7、以下检查mysql端口是否运行正常的方法正确的是(ABC)
A lsof -i 3306
B netstat -tunlp|grep 3306
C ss -tulnp|grep 3306
D ps –ef |grep mysql
A、lsof -i 端口号:查看指定端口的运行进程
B、netstat -tuanlp | grep P/p:查看指定端口或进程的运行状态
C、ss -tuanlp | grep P/p:ss与netstat作用类似
D、ps -ef | grep P/p:查看指定进程运行状态,常用参数ps -ef,ps -aux,作用相似
8、一下属于nginx的特点的是(ABD)
A.处理高并发请求
B.本身是反向代理服务器
C.可实现分布式架构及高可用集群
D.是邮件代理服务器
E.架构采用epoll模型,内在处理机制是线性轮询
nignx本身是反向代理服务器,可以处理高并发请求,也可以当作web,邮件等服务器
在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。Apache使用的select()函数,采用线性轮询机制。
9、nginx的location的优先级规则是(C)
A、= ^~ > ~|~*|!~|!~* > /
B、= ^~ > ~|~*| > !~|!~*> /
C、= > ^~ > ~|~*|!~|!~*> /
D、/ > = ^~ > ~|~*|!~|!~*
location规则优先级:= > ^~ > ~|~*|!~|!~*> /
10、对于以下location的地址重写,当输入http://www.xingyun.com/2015/ccc/bbb/2.html时,将地址重写成(B)
location /2015 {
rewrite ^/2015/(.*)$ /2014/$1 permanent;
}
A、http://www.xingyun.com/2015/ccc/2.html
B、http://www.xingyun.com/2014/ccc/bbb/2.html
C、http://www.xingyun.com/2015/2.html
D、http://www.xingyun.com/2015/bbb/2.html
11、以下哪些是memcache的的特点(ABC)
A.自由开源
B.高性能
C.分布式内存对象缓存系统
D.实例间可通信,提高性能
E.本身可实现数据持久化
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。本身不能实现数据持久化,但将数据文件重定向到指定文件时,可以实现数据持久化。
Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。
Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。
本质上,它是一个简洁的key-value存储系统。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
12、以下哪些是redis的的特点(ABCD)
A.支持数据持久化
B.支持的数据类型丰富
C.支持数据备份
D.读写性能高
E.是一个开源的,R语言编写的,支持网络的非关系型数据库
Redis是一个开源的使用C语言编写、开源、支持网络、可基于内存亦可持久化的日志型、高性能的Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String)、哈希(Map)、 列(list)、集合(sets) 和 有序集合(sorted sets)等类型。
13、以下那些软件能实现负载均衡(ACEF)
A.LVS
B.Keepalived
C.Haproxy
D.kafka
E.F5
F.nginx
LVS有三种模式实现负载均衡:NAT模式,DR模式,TUN模式
keepalived只是实现了健康检查,故障切换。
Nginx,F5,Haproxy均实现了负载均衡
F5负载均衡原理:
- 客户发出服务请求到VIP
- BIGIP接收到请求,将数据包中目的IP地址改为选中的后台服务器IP地址,然后将数据包发出到后台选定的服务器
- 后台服务器收到后,将应答包按照其路由发回到BIGIP
- BIGIP收到应答包后将其中的源地址改回成VIP的地址,发回客户端,由此就完成了一个标准的服务器负载平衡的流程。
Kafka 是分布式发布-订阅消息系统,即,kafka是一种分布式的消息队列工具。
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这
14、下列关于nginx控制型号解释正确的是(ABCD)
A. HUP: 这个是重新加载nginx配置文件
B. QUIT:杀死nginx进程
C. USR1:切换日志文件
D. USR2:平滑升级发送信号
信号及解释:
TERM,INT :立即退出
QUIT :等待工作进程结束后在退出
KILL :强制终止进程
HUP :重新加载配置文件,使用新的配置启动进程,并逐步关闭旧进程
USR1 :重新打开日志文件
USR2 :启动新的主进程,实现热升级
WINCH :逐步关闭工作进程
15、关于Nginx中worker_processes、worker_cpu_affinity、worker_rlimit_nofile、worker_connections配置项含义解释正确的是(ABCD)?
A. worker_processes:nginx工作进程数量
B. worker_cpu_affinity:cpu个数
C.worker_rlimit_nofile:一个nginx工作进程数量打开文件数量限制
D.worker_connections:每个进程连接最大数量
nginx基本配置文件中:
worker_processes:nginx工作进程数量
worker_cpu_affinity:cpu个数
worker_rlimit_nofile:一个nginx工作进程数量打开文件数量限制
worker_connections:每个进程连接最大数量
简答题
1.mysql8如何授权anliu用户从172.16.1.0/24访问数据库?
update user set host=’172.16.1.0/24’ where user='anliu02';
2.误操作执行了一个drop库SQL语句,如何完整恢复?
方式一:
关闭mysql服务,
删除mysql的data目录,
将备份的数据库数据拷贝到mysql的data目录
启动mysql服务
方式二:二进制日志恢复
将二进制日志文件用mysqlbinlog工具还原成sql语句的日志文件,
vim打开文件,找到相应的误操作语句,删除,保存并退出,
将文件导入数据库
3.如果发现mysql服务器CPU,或者IO压力很大,怎么定位问题?
首先我会用top命令和iostat命令,定位是什么进程在占用cpu和磁盘io;
如果是mysql的问题,我会登录到数据库,通过show full processlist命令,看现在数据库在执行什么sql语句,是否有语句长时间执行使数据库卡住;
执行show engine innodb status\G命令,查看数据库是否有锁资源争用;
查看mysql慢查询日志,看是否有慢sql;
(开启慢查询日志方法:
log_output=file
slow_query_log=on
long_query_time = 1
slow_query_log_file=/var/log/mysql-slow.log
log_queries_not_using_indexes=on
在mysql中执行 set global slow_query_log=1; 修改全局变量
)找到引起数据库占用资源高的语句,进行优化,该建索引的建索引,索引不合适的删索引,或者根据情况kill掉耗费资源的sql语句等。
4、如何实现nginx的平滑升级?
第一步:编译新的Nginx源码,安装路径需要与旧版本一致
第二步:向主进程发送USR2信号,Nginx会启动一个新版本的Master进程和工作进程,和旧版本一起处理请求。
第三步:向原Nginx主进程发送WINCH信号,它会逐步关闭其下的工作进程(主进程不退出),这时所有请求都会由新版本处理。
第四步:如果需要回退,可向原Nginx主进程发送HUP信号,它会重新启动工作进程,任使用旧版本配置文件。然后可以将新版本Nginx进程杀死(使用QUIT,TERM,或者KIll)
如果不需要回滚,可以将原nginx进程杀死,至此完成热升级。
5.请解释 Nginx 如何处理 HTTP 请求?
首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,
然后在nginx的master进程里面先初始化好这个监控的socket,再进行listen,然后再fork出多个子进程出来, 子进程会竞争accept新的连接。
此时,客户端就可以向nginx发起连接了。当客户端与nginx进行三次握手,与nginx建立好一个连接后,此时,某一个子进程会accept成功,然后创建nginx对连接的封装,即ngx_connection_t结构体,
接着,根据事件调用相应的事件处理模块,如http模块与客户端进行数据的交换。
最后,nginx或客户端来主动关掉连接,到此,一个连接就寿终正寝了。
6、什么是动态资源,什么是静态资源,什么是伪静态?
- 静态资源:一般客户端发送请求到web服务器,web服务器从内存取到相应的文件,返回给客户端,客户端解析并渲染显示出来。
- 动态资源:一般客户端请求的动态资源,先将请求交于web容器,web容器连接数据库,数据库处理数据之后,将内容交给web服务器,web服务器返回给客户端解析渲染处理。
- 伪静态即是网站本身是动态网页如.php、.asp、.aspx等格式动态网页有时这类动态网页还跟“?”加参数来读取数据库内不同资料。
7、描述Nginx中$remote_addr、$status、$http_referer、$http_user_agent等变量的含义?
$http_user_agent:判断客户端手机什么型号或者浏览器什么类型,可以给指定的型号给定不同的页面。
$http_referer:访问控制返回状态码
$status:查看网站的访问状态等信息,比如连接多少,多少次握手,响应多少请求,
$remote_addr:可以在后面指定ip,如果匹配到这个ip可以通过port_pass代理到自定义的机器组
8、常见的Mysql客户端工具有哪些?简述其用途?
Mysql:交互
Mysqladmin:管理
Mysqldump: 备份
Mysqlbinlog:还原数据库操作语句
9、简述mysql的复制原理及过程?
涉及三个线程:
在主库上把数据更改记录到二进制日志(Binary Log)中。
备库将主库上的日志复制到自己的中继日志(Relay Log)中。
备库读取中继日志中的事件,将其重放到备库数据库之上。
10、解释MySQL外连接、内连接的区别?
内连接:是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行。
外连接:其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。左链接以左表为主,右链接以右表为主。
11、如何为MySQL8设置或更新密码?
mysql> alter user 'root'@'localhost' identified with mysql_native_password by "Ripe@123";
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec
12、请解释全备、增备、冷备、热备概念?
全备:将数据库的全部数据及库中表的机构都备份
增备:相比前一次的备份,之备份增加的数据的备份
热备:在数据库备份过程中,不影响数据库的正常读写操作
冷备:在数据库备份过程中,不能只从读写操作
13、MySQL高可用方案有哪些,各自特点,企业如何选择?
低读低写并发、低数据量方案
(1)方案一:双机高可用:
技术:主从复制
特点:从库只是一个备份,在主库正常工作是,存库不承载业务。(存库资源没有充分利用)
(2)主从结构方案
技术:主从复制,读写分离(mycat(点单故障)),故障转移(keepalived)
特点:主库承载写的操作,从库承载读的操作,只有主库故障时,存库承载读写业务。
高读低写并发、低数据量方案
(3)一主多从+读写分离
技术:主从技术,读写分离(mycat(点单故障)),故障转移(keepalived),MHA
特点:当主节点故障时候,从从节点中选举一个主节点。
高读高写并发、低数据量方案
(4)MariaDB Galera Cluster方案
技术:,主从复制,Galera,负载均衡技术(Haproxy,nginx,LVS),高可靠技术(keepalived)
特点:通过Galera 的集群技术来将多个数据库节点组成一个集群,集群中的每个节点
都可接受读写请求,节点之间通过同步的方式保证数据完整可靠;结合(负载均衡和
高可靠技术保证集群节点的正常运行。)剔除异常节点。
高读高写并发、高数据量方案
(5)数据库中间件
技术:主从复制;读写分离(mycat(点单故障)),故障转移(keepalived);MHA;数据分片(mycat)
特点:通过mycat可将数据在不同的集群中分片存取,读写分技术实现读和写的请求分离,需要多个读
写分离集群,然后MHA保证每个集群的主从健壮。
14、如何查看CPU的型号、核心数、线程数?
#查看cup型号
cat /proc/cpuinfo | grep 'model name' |uniq
#查看cpu核心数
cat /proc/cpuinfo | grep "cpu cores" | uniq
#cpu线程数
grep 'processor' /proc/cpuinfo | sort -u | wc -l
15、解释如何在Nginx服务器上添加模块?
第一步:查看已安装模块以及安装路径。
第二步:编译需添加的模块。(千万不能make install,否则会覆盖之前编译安装文件)
第三步:拷贝新生成的nginx二进制主程序文件。
16、nginx的地址重写功能如何实现,有那些用途?
配置相应的Location规则:
(1)实现伪静态
(2)有效保护网页文件被攻击或截取
(3)可实现地址跳转
17、nginx的全局变量$request_uri和$request_filename有何区别?
$request_uri :当前请求的文件路径名(不带root指定的路径 /images/a.jpg)
$request_filename :当前请求的文件路径名(带root指定的路径
18、例举你知道的nginx模块有哪些,其作用是什么?
19、memcached是如何实现分布式缓存的?
Memcached所使用的解决方法就是Consistent Hashing(一致性Hash),即将要存储的数据经过哈希计算,将数据存储在某台缓存服务器上。在该算法的帮助下,Memcached实例数量的变化将只可能导致其中的一小部分键的哈希值发生改变
20、简述memcached的内存管理机制?
通常情况下,一个内存管理算法所最需要考虑的问题就是内存的碎片化(Fragmentation):在长时间地分配及回收之后,
被系统所使用的内存将趋向于散落在不连续的空间中。这使得系统很难找到连续内存空间,一方面增大了内存分配失败的概率,
另一方面也使得内存分配工作变得更为复杂,降低了运行效率。为了解决这个问题,Memcached使用了一种叫Slab的结构。
在该分配算法中,内存将按照1MB的大小划分为页,而该页内存则会继续被分割为一系列具有相同大小的内存块。
内存清理机制:
Memcached所使用的过期算法比较特殊,又被称为延迟过期(Lazy expiration)。若数据在存储时,没有是定过期时间,
则会应用LRU算法清除数据。LRU算法:基于计算机操作系统基础理论“最近使用的页面数据会在未来一段时期内仍然被使用,
已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用”得来。每次从内存中找到最久未使用的数据然后置换出来,
从而存入新的数据。它的主要衡量指标是使用的时间,附加指标是使用的次数。
21、简述redis的数据持久化原理?
snapshotting : RDB模式:
(1)间歇的持久化,在系统故障时,最近一次快照之后的数据就会丢失。
(2)快照持久化操作是有子线程完成的,主线程任然在处理客户端的请求。
(3)客户端可以出发持久化---"save": 主线程发起,此时会影响其他客户端的链接,此外该过程不是增量的。
append-only file: AOF模式:
(1)实时的数据持久化,当主线程处理一个客户端请求时,回调一个writer()将命令写入到.aof的文件中。
(2)受OS的影响,writer写入数据到文件时可能数据被操作系统缓存而没有立即存入到文件中;
appendfsync always #接受一次,同步一次
appendfsync everysec #每一秒同步一次数据
appendfsync no #完全取决于操作系统
(3)如何保证持久化的文件中的命令是 有效的,没有冗余的?
主线程产生的子线程快照内存数据,并将其翻译成含命令的临时文件,当临时文件产生后,发送信号给主线程,
下次写时写入到临时文件中,最后用临时文件替换旧的aof文件。
22、简述redis的复制过程和集群原理?
1:当一个从数据库启动时,会向主数据库发送sync命令。
2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
23、简述LVS的三种工作模式的工作过程与原理?
NAT: 网络地址转化:IPVS(VIP-->RIP RIP-->VIP)
特点: (1)数据的请求和返回都经过了DS,若在大并发场景下,DS就称为性能瓶颈。
(2)RIP和DIP在统一私网网段
DR: 通过mac的封装实现DS和RS的通信: IPVS(CIP,VIP)(CIP-mac --->DIP-mac ;VIP-mac --->RIP-mac);
RS(VIP,CIP)(拆封 CIP-mac,VIP-mac) ;此时RS可以通过公网发送数据。
特点: (1)DS和RS在同一个冲突域.
(2)RS可将请求直接发送到Client.
TUN: 通过IP的封装实现DS和RS的通信:IPVS((DIP)CIP,(RIP)VIP)
RS (VIP,CIP) ---->
特点: (1)DS和RS可跨地域。
(2)RS可将请求直接发送到Client.不经过DS,提高系统吞吐量
NAT模式:
DR模式:
TUN模式:
24、简述Keepalived故障切换与健康检查原理?
(1)健康检查
通过TCP/IP模型,在网络层,传输层,应用层探测数据传输的状态判断节点状态是否正常。
(2)故障切换
Keepalived dirctors之间的故障切换转移,是通过VRRP协议来实现的。
25、描述LAMP及LNMP的对比?
LAMP:apache和php的结合,lamp结合的更加紧密,而lnmp需要fpm来连接nginx和php。
LAMP相比于LNMP更加稳定。
LNMP占用内存较少,高并发配置比较方便。
材料分析
1、以下访问结果分别是什么?
location / {
echo "/";
}
location =/ {
echo "=/";
}
location =/nginx {
echo "nginx";
}
location ~ \.(gif|jpg|png|css|js)$ {
echo "small: gif/jpg/png/js";
}
location ~* \.png$ {
echo "all:png";
}
location ^~ /static/ {
echo "static";
}
}
1.curl http://www.anttech.com
2.curl http://www.anttech.com/jpg
3.curl http://www.anttech.com/nginx
4.curl http://www.anttech.com/nginx/111
5.curl http://www.anttech.com/static
6.curl http://www.anttech.com/static/
7.curl http://www.anttech.com/static/222
8.curl http://www.anttech.com/11.jpg
9.curl http://www.anttech.com/11.JPG
10.curl http://www.anttech.com/11.png
11.curl http://www.anttech.com/11.PNG
1、=/
2、/
3、nginx
4、/
5、/
6、static
7、static
8、small: gif/jpg/png/js
9、/
10、small: gif/jpg/png/js
11、all:png
2、以下拓扑是某生产环境的web数据链路,Web中传输内容可能包括:文本、图像、文件、音频、等等,在应用效能优化上,不同传输内容将直接影响到客户终端的使用感受。
请从图中的三个位置分析导致web访问慢的问题,并给出解决方案?
(缓存)
位置1:DNS缓存,路由规则
位置2:CDN,边缘节点
位置3:redis,memcache
3、某企业环境接入权限管控主机因为要承载web的访问请求,同时也承载客户的ssh链接请求的转发。随着公司业务的壮大,使用客户剧增,该控制主机服务性能不够导致web请求包502,偶发会发生ssh中断或延时。
请分析出现以上问题的原因,同时利用所学知识给出解决方案?
思维拓展
1、数据库备份恢复失败应如何处理?
第一步:锁表
第二步:找故障原因,(看日志,drop,恢复数据的线程是不是正常,负载)恢复备份。
第三步:数据补全
第四步:解表
2、如何加强MySQL安全,请给出可行的具体措施?
A.添加访问权限。(避免直接从互联网访问mysql数据库,确保特定主机才拥有访问权限。)
B.定期备份数据库
C.绑定访问IP,在my.cnf文件里设置bind-address指定ip
D.移除test数据库(默认匿名用户可以访问test数据库)。用mysql_secure_installation命令初始化数据库,删除test库
E. 禁用local infile
mysql> select load_file("/etc/passwd");
在my.cnf里[mysqld]下添加local-infile=0
F. 移除和禁用.mysql_history文件
cat ~/.mysql_history
export MYSQL_HISTFILE=/dev/null
3、假如给你一千台服务器你如何管理,请给出管理思路?
(1) 资源统计,上架—>资产—>机房.机柜.机位(1,2,3,4,…),服务器的型号,资产编号,。。,CMDB
(2) 组raid,装机,(批量装机)
(3) 系统初始化:安全,网络,系统(调整参数)
(4) 业务初始化
(5) 添加监控、日志平台
(6) 交付