1、什么是运维?什么是游戏运维?
1
)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,
在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术
运维又包括很多种,有
DBA
运维、网站运维、虚拟化运维、监控运维、游戏运维等等
2
)游戏运维又有分工,分为开发运维、应用运维(业务运维)和系统运维
开发运维:是给应用运维开发运维工具和运维平台的
应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维护、做故障排查
系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等
总结:开发运维和系统运维给应用运维提供了
“
工具
”
和
“
基础设施
”
上的支撑开发运维、应用运维和系统运维他们的工作是环环相扣的。
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
游戏运营要做的一个事情除了协调工作以外
还需要与各平台沟通,做好开服的时间、开服数、用户导量、活动等计划
3、现在给你三百台服务器,你怎么对他们进行管理?
管理
3
百台服务器的方式:
1
)设定跳板机,使用统一账号登录,便于安全与登录的考量。
2
)使用
salt
、
ansible
、
puppet
进行系统的统一调度与配置的统一管理。
3
)建立简单的服务器的系统、配置、应用的
cmdb
信息管理。便于查阅每台服务器上的各种信息记录。
4、简述raid0 raid1 raid5 三种工作模式的工作原理及特点
RAID
,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据 还有一个大功能,多块盘放在一起可以有冗余(备份)
RAID整合方式有很多,常用的:
0 1 5 10
RAID 0
,可以是一块盘和
N
个盘组合,其优点读写快,是RAID
中最好的
缺点:没有冗余,一块坏了数据就全没有了
RAID 1
,只能
2
块盘,盘的大小可以不一样,以小的为准10G+10G只有
10G
,另一个做备份。它有
100%
的冗余,缺点:浪费资源,成本高
RAID 5
,
3
块盘,容量计算
10*
(
n-1
)
,
损失一块盘 特点,读写性能一般,读还好一点,写不好
冗余从好到坏:
RAID1 RAID10 RAID 5 RAID0
性能从好到坏:
RAID0 RAID10 RAID5 RAID1
成本从低到高:
RAID0 RAID5 RAID1 RAID10
单台服务器:很重要盘不多,系统盘,
RAID1
数据库服务器:主库:
RAID10
从库
RAID5RAID0
(为了维护成本,
RAID10
)
WEB
服务器:如果没有太多的数据的话,
RAID5,RAID0
(单盘)
有多台,监控、应用服务器:
RAID0 RAID5
我们会根据数据的存储和访问的需求,去匹配对应的
RAID
级别
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
LVS
:是基于四层的转发
HAproxy
:是基于四层和七层的转发,是专业的代理服务器
Nginx
:是
WEB
服务器,缓存服务器,又是反向代理服务器,可以做七层的转发
区别:
LVS
由于是基于四层的转发所以只能做端口的转发、而基于
URL
的、基于目录的这种转发
LVS
就做不了
工作选择:HAproxy
和
Nginx
由于可以做七层的转发,所以
URL
和目录的转发都可以做,在很大并发量的时候我们就要选择LVS
,像中小型公司的话并发量没那么大,选择
HAproxy
或者
Nginx
足已,由于HAproxy由是专业的代理服务器,配置简单,所以中小型企业推荐使用
HAproxy
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
Squid
、
Varinsh
和
Nginx
都是代理服务器
什么是代理服务器:
能代替用户去访问公网,并且能把访问到的数据缓存到服务器本地,等用户下次再访问相同的资源的时 候,代理服务器直接从本地回应给用户,当本地没有的时候,我代替你去访问公网,我接收你的请求, 我先在我自已的本地缓存找,如果我本地缓存有,我直接从我本地的缓存里回复你如果我在我本地没有 找到你要访问的缓存的数据,那么代理服务器就会代替你去访问公网
区别:
1
)
Nginx
本来是反向代理
/web
服务器,用了插件可以做做这个副业
但是本身不支持特性挺多,只能缓存静态文件
2
)从这些功能上。
varnish
和
squid
是专业的
cache
服务,而
nginx
这些是第三方模块完成
3
)
varnish
本身的技术上优势要高于
squid
,它采用了可视化页面缓存技术
在内存的利用上,
Varnish
比
Squid
具有优势,性能要比
Squid
高。
还有强大的通过
Varnish
管理端口,可以使用正则表达式快速、批量地清除部分缓存
它是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的
4
)
squid
的优势在于完整的庞大的
cache
技术资料,和很多的应用生产环境
工作中选择:
要做
cache
服务的话,我们肯定是要选择专业的
cache
服务,优先选择
squid
或者
varnish
。
7、Tomcat和Resin有什么区别,工作中你怎么选择?
区别:
Tomcat
用户数多,可参考文档多,
Resin
用户数少,可考虑文档少,最主要区别则是
Tomcat
是标 准的java
容器,不过性能方面比
resin
的要差一些,但稳定性和
java
程序的兼容性,应该是比
resin
的要好
工作中选择:现在大公司都是用
resin
,追求性能;而中小型公司都是用
Tomcat
,追求稳定和程序的兼容。
8、什么是中间件?什么是jdk?
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源中间件位于客户机/
服务器的操作系统之上,管理计算机资源和网络通讯是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递通过中间件,应用程序可以工作于多平台或OS
环境。
jdk
:
jdk
是
Java
的开发工具包,它是一种用于构建在
Java
平台上发布的应用程序、
applet
和组件的开发环境
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
8005==
》 关闭时使用
8009==
》 为
AJP
端口,即容器使用,如
Apache
能通过
AJP
协议访问
Tomcat
的
8009
端口
8080==
》 一般应用使用
10、什么叫CDN?
即内容分发网络,其目的是通过在现有的
Internet
中增加一层新的网络架构,将网站的内容发布到最接 近用户的网络边缘,使用户可就近取得所需的内容,提高用户访问网站的速度。
11、什么叫网站灰度发布?
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式AB test就是一种灰度发布方式,让一部用户继续用
A
,一部分用户开始用
B如果用户对B
没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到
B
上面来灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
12、简述DNS进行域名解析的过程?
用户要访问
http://www.baidu.com
,会先找本机的
host
文件,再找本地设置的
DNS
服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn
,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,
就去找二级域名服务器,二级域服务器只能提供三级域名服务器。
http://baidu.com.cn
,就去找三级域名服务器,三级域名服务器正好有这个网站
http://www.baidu.com
,然后发给请求的服务器,保存一份之后,再发给客户端。
13、RabbitMQ是什么东西?
RabbitMQ
也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器消息中间件再将消息从它的源中到它的目标中标时充当中间人的作用队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用消息队列不会保留消息,直到可以成功地传递为止,当然,消息队列保存消息也是有期限的。
14、讲一下Keepalived的工作原理?
在一个虚拟路由器中,只有作为
MASTER
的
VRRP
路由器会一直发送
VRRP
通告信息
,
BACKUP
不会抢占
MASTER
,除非它的优先级更高。当
MASTER
不可用时
(BACKUP
收不到通告信息
) 多台BACKUP
中优先级最高的这台会被抢占为
MASTER
。这种抢占是非常快速的
(<1s)
,以保证服务的连续性由于安全性考虑,VRRP
包使用了加密协议进行加密。
BACKUP
不会发送通告信息,只会接收通告信息。
15、讲述一下LVS三种模式的工作过程?
LVS
有三种负载均衡的模式,分别是
VS/NAT
(
nat
模式)
VS/DR(
路由模式
) VS/TUN
(隧道模式)
一、
NAT
模式(
VS-NAT
)
原理:就是把客户端发来的数据包的
IP
头的目的地址,在负载均衡器上换成其中一台
RS
的
IP
地址,并发至此RS
来处理
,RS
处理完后把数据交给负载均衡器
,
负载均衡器再把数据包原
IP
地址改为自己的
IP
,将目的地址改为客户端IP
地址即可期间
,
无论是进来的流量
,
还是出去的流量
,
都必须经过负载均衡器
优点:集群中的物理服务器可以使用任何支持
TCP/IP
操作系统,只有负载均衡器需要一个合法的
IP
地址
缺点:扩展性有限。当服务器节点(普通
PC
服务器)增长过多时
,
负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!
二、
IP
隧道模式(
VS-TUN
)
原理:首先要知道,互联网上的大多
Internet
服务的请求包很短小,而应答包通常很大,那么隧道模式就是,把客户端发来的数据包,封装一个新的IP
头标记
(
仅目的
IP)
发给
RS
,
RS
收到后
,
先把数据包的头解开,
还原数据包
,
处理后
,
直接返回给客户端
,
不需要再经过负载均衡器。注意
,
由于
RS
需要对负载均衡器发过来的数据包进行还原,
所以说必须支持
IPTUNNEL
协议,所以
,
在
RS
的内核中
,
必须编译支持
IPTUNNEL
这个选项。
优点:负载均衡器只负责将请求包分发给后端节点服务器,而
RS
将应答包直接发给用户,所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS
进行分发。而且跑在公网上就能进行不同地域的分发。
缺点:隧道模式的
RS
节点需要合法
IP
,这种方式需要所有的服务器支持
”IP Tunneling”(IP
Encapsulation)
协议,服务器可能只局限在部分
Linux
系统上
三、直接路由模式(
VS-DR
)
原理:负载均衡器和
RS
都使用同一个
IP
对外服务但只有
DR
对
ARP
请求进行响应,所有
RS
对本身这个
IP
的ARP请求保持静默也就是说
,
网关会把对这个服务
IP
的请求全部定向给
DR
,而
DR
收到数据包后根据调度算法,
找出对应的
RS,
把目的
MAC
地址改为
RS
的
MAC
(因为
IP
一致),并将请求分发给这台
RS
这时
RS
收到这个数据包,
处理完成之后,由于
IP
一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,
处理后直接返回给客户端,由于负载均衡器要对二层包头进行改换
,
所以负载均衡器和
RS
之间必须在一个广播域,也可以简单的理解为在同一台交换机上。
优点:和
TUN
(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端,与VS-TUN
相比,
VS-DR
这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。
缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
mysql
的
innodb
如何定位锁问题
:
在使用
show engine innodb status
检查引擎状态时,发现了死锁问题
在
5.5
中,
information_schema
库中增加了三个关于锁的表(
MEMORY
引擎)
innodb_trx ## 当前运行的所有事务
innodb_locks ## 当前出现的锁
innodb_lock_waits ## 锁等待的对应关系
mysql如何减少主从复制延迟:
如果延迟比较大,就先确认以下几个因素:
1.从库硬件比主库差,导致复制延迟
2.主从复制单线程,如果主库写并发太大,来不及传送到从库就会导致延迟。更高版本的mysql可以支持多线程复制
3.慢SQL语句过多
4.网络延迟
5.master负载:主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层
6.slave负载:一般的做法是,使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器只作为备份用,不进行其他任何操作.另外, 2个可以减少延迟的参数:
–slave-net-timeout=seconds 单位为秒 默认设置为 3600秒
#参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据
–master-connect-retry=seconds 单位为秒 默认设置为 60秒
#参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试
通常配置以上
2
个参数可以减少网络问题导致的主从数据同步延迟
MySQL
数据库主从同步延迟解决方案
最简单的减少
slave
同步延时的方案就是在架构上做优化,尽量让主库的
DDL
快速执行
还有就是主库是写,对数据安全性较高,比如
sync_binlog=1
,
innodb_flush_log_at_trx_commit
= 1
之类的设置,而
slave
则不需要这么高的数据安全,完全可以讲
sync_binlog
设置为
0
或者关闭
binlog
innodb_flushlog
也可以设置为
0
来提高
sql
的执行效率。另外就是使用比主库更好的硬件设备作为
slave
17、如何重置mysql root密码?
一、 在已知
MYSQL
数据库的
ROOT
用户密码的情况下,修改密码的方法:
在
SHELL
环境下,使用
mysqladmin
命令设置:
mysqladmin –u root –p password “新密码” 回车后要求输入旧密码
在
mysql>
环境中
,
使用
update
命令,直接更新
mysql
库
user
表的数据:
Update mysql.user set password=password(‘新密码’) where user=’root’;
flush privileges;
注意:
mysql
语句要以分号
”
;
”
结束在
mysql>
环境中,使用
grant
命令,修改
root
用户的授权权限。
grant all on *.* to root@’localhost’ identified by ‘新密码’;
二、 如忘记了
mysql
数据库的
ROOT
用户的密码,又如何做呢?方法如下:
关闭当前运行的
mysqld
服务程序:
service mysqld stop
(要先将
mysqld
添加为系统服务)
使用
mysqld_safe
脚本以安全模式(不加载授权表)启动
mysqld
服务
/usr/local/mysql/bin/mysqld_safe --skip-grant-table &
使用空密码的
root
用户登录数据库,重新设置
ROOT
用户的密码
#mysql -u root
Mysql> Update mysql.user set password=password(‘新密码’) where user=’root’;
Mysql> flush privileges;
18、lvs/nginx/haproxy优缺点
Nginx
的优点是:
1
、工作在网络的
7
层之上,可以针对
http
应用做一些分流的策略,比如针对域名、目录结构它的正则规则比HAProxy
更为强大和灵活,这也是它目前广泛流行的主要原因之一Nginx单凭这点可利用的场合就远多于
LVS
了。
2
、
Nginx
对网络稳定性的依赖非常小,理论上能
ping
通就就能进行负载功能,这个也是它的优势之一相反LVS
对网络稳定性依赖比较大,这点本人深有体会;
3
、
Nginx
安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来LVS的配置、测试就要花比较长的时间了,
LVS
对网络依赖比较大。
4
、可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负载度比
LVS
相对小些。
5
、
Nginx
可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url
来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx
会把上传切到另一台服务器重新处理,而LVS
就直接断掉了。如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。
6
、
Nginx
不仅仅是一款优秀的负载均衡器
/
反向代理软件,它同时也是功能强大的
Web
应用服务器
LNMP
也是近几年非常流行的
web
架构,在高流量的环境中稳定性也很好。
7
、
Nginx
现在作为
Web
反向加速缓存越来越成熟了,速度比传统的
Squid
服务器更快,可考虑用其作为反向代理加速器。
8
、
Nginx
可作为中层反向代理使用,这一层面
Nginx
基本上无对手,唯一可以对比
Nginx
的就只有
lighttpd
了。不过lighttpd
目前还没有做到
Nginx
完全的功能,配置也不那么清晰易读,社区资料也远远没
Nginx
活跃。
9
、
Nginx
也可作为静态网页和图片服务器,这方面的性能也无对手。还有
Nginx
社区非常活跃,第三方模块也很多。
Nginx
的缺点是:
1
、
Nginx
仅能支持
http
、
https
和
Email
协议,这样就在适用范围上面小些,这个是它的缺点
2
、对后端服务器的健康检查,只支持通过端口来检测,不支持通过
url
来检测 ;不支持Session
的直接保持,但能通过
ip_hash
来解决
LVS
:使用
Linux
内核集群实现一个高性能、高可用的负载均衡服务器。它具有很好的可伸缩性(Scalability)
、可靠性(
Reliability)
和可管理性(
Manageability)
LVS
的优点是:
1
、抗负载能力强、是工作在网络
4
层之上仅作分发之用,没有流量的产生;这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu
资源消耗比较低
2
、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
3
、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案。如LVS+Keepalived
,不过我们在项目实施中用得最多的还是
LVS/DR+Keepalived。
4
、无流量,
LVS
只分发请求,而流量并不从它本身出去,这点保证了均衡器
IO
的性能不会收到大流量的影响。
5
、应用范围较广,因为
LVS
工作在
4
层,所以它几乎可对所有应用做负载均衡,包括
http
、数据库、在线聊天室等
LVS
的缺点是:
1
、软件本身不支持正则表达式处理,不能做动静分离。而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived
的优势所在
2
、如果是网站应用比较庞大的话,
LVS/DR+Keepalived
实施起来就比较复杂了。特别后面有Windows Server
的机器的话,如果实施及配置还有维护过程就比较复杂了。相对而言,Nginx/HAProxy+Keepalived
就简单多了。
HAProxy
的特点是:
1
、
HAProxy
也是支持虚拟主机的。
2
、
HAProxy
的优点能够补充
Nginx
的一些缺点,比如支持
Session
的保持,
Cookie
的引导。同时支持通过获取指定的url
来检测后端服务器的状态
3
、
HAProxy
跟
LVS
类似,本身就只是一款负载均衡软件。单纯从效率上来讲HAProxy
会比
Nginx
有更出色的负载均衡速度,在并发处理上也是优于
Nginx
的
4
、
HAProxy
支持
TCP
协议的负载均衡转发,可以对
MySQL
读进行负载均衡。对后端的MySQL
节点进行检测和负载均衡,大家可以用
LVS+Keepalived
对
MySQL
主从做负载均衡
5
、
HAProxy
负载均衡策略非常多,
HAProxy
的负载均衡算法现在具体有如下
8
种:
①roundrobin
,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
②static-rr
,表示根据权重,建议已关注;
③leastconn,表示最少连接者先处理,建议已关注;
④source,表示根据请求源
IP
,这个跟
Nginx
的
IP_hash
机制类似
,
我们用其作为解决
session
问题的一种方法,建议已关注;
⑤ri
,表示根据请求的
URI
;
⑥rl_param
,表示根据请求的
URl
参数
’balance url_param’ requires an URL parameter name
;
⑦hdr(name)
,表示根据
HTTP
请求头来锁定每一次
HTTP
请求;
⑧rdp-cookie(name)
,表示根据据
cookie(name)
来锁定并哈希每一次
TCP
请求。
19、mysql数据备份工具
mysqldump
工具
mysqldump
是
mysql
自带的备份工具,目录在
bin
目录下面:
/usr/local/mysql/bin/mysqldump
。支持
基于
innodb
的热备份,但是由于是逻辑备份,所以速度不是很快,适合备份数据比较小的场景,
Mysqldump
完全备份
+
二进制日志可以实现基于时间点的恢复。
基于
LVM
快照备份
在物理备份中,有基于文件系统的物理备份(
LVM
的快照),也可以直接用
tar
之类的命令对整个数据库
目录,进行打包备份,但是这些只能进行冷备份,不同的存储引擎备份的也不一样,
myisam
自动备份
到表级别,而
innodb
不开启独立表空间的话只能备份整个数据库。
tar
包备份
percona
提供的
xtrabackup
工具,支持
innodb
的物理热备份,支持完全备份,增量备份,而且速度非常
快,支持
innodb
存储引起的数据在不同,数据库之间迁移,支持复制模式下的从机备份恢复备份恢复,
为了让
xtrabackup
支持更多的功能扩展,可以设立独立表空间,打开
innodb_file_per_table
功能,启用
之后可以支持单独的表备份
20、keepalive的工作原理和如何做到健康检查
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
协议的
Keepalived
健康检查方式配置
HTTP_GET|SSL_GET
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 # 连接间隔时间
}
21、统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip
cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -1
22、使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log
tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log
23、如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-todestination 192.168.2.1:8080
24、简述raid0 raid1 raid5 三种工作模式的工作原理及特点
RAID 0
:带区卷,连续以位或字节为单位分割数据,并行读
/
写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,RAID 0
只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0
不能应用于数据安全性要求高的场合
RAID 1
:镜像卷,它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据,不能提升写数据效率。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID1
可以提高读取性能,RAID 1
是磁盘阵列中单位成本最高的,镜像卷可用容量为总容量的
1/2
,但提供了很高的数据安全性和可用性,当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据
RAID5:
至少由
3
块硬盘组成,分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据(最多允许1
块硬盘损坏),所以raid5可以实现数据冗余,确保数据的安全性,同时
raid5
也可以提升数据的读写性能
25、你对现在运维工程师的理解和以及对其工作的认识
运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供最高、最快、最稳定、最安全的服务运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失因此运维工程师的工作需要严谨及富有创新精神
26、实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令
tcpdump -nn tcp port 80
27、服务器开不了机怎么解决一步步的排查
1.先看服务器的电源指示灯是否亮,如果电源灯不亮,先检查并确认电源没问题时,试着拔开机键是否能点亮服务器,如果不能点亮,和数据确认后先更换备用服务器以便快速恢复业务。
2.如果服务器电源灯亮,接上显示器和键盘,如果服务器系统有异常(比如蓝屏…)不能正常登录系统,先和数据确认,是否执行能重启服务器或是更换备用服务器,以便快速恢复业务。
3.如果正确输入用户名和密码情况下能登录系统,查看网卡指示灯是否正常,并用ifconfig命令查看网卡接口状态。用ping 对端ip测试网络是否连通。
4.如果ping不通,先和数据人员确认并检查网卡配置文件参数是否配置正确,是否正确配置网关(不正确则修正后)用“ifdown ; ifup 网卡名“命令重启单个网卡,网卡接口(灯)状态正常后,再用ping命令测试。
5.还ping不通,及时排查并确保本地尾纤,模块等物理设备接入正常,收发光在规定范围内,和数据人员确认是否可以重启服务器,并确认数据方面没有网络配置和数据方面的变化。
6.能ping通则告知数据人员,并让数据人员帮忙确认链路是否正常,有没有丢包现象等,没有丢包就OK,有丢包就继续排查尾纤,模块等,直到链路正常没有丢包,数据人员能及时的从远程登录服务器做数据配置能快速恢复业务为OK。
7.如果不能接入服务器,与数据确认是否可以重启,重启后登陆正常,继续3.4.5.6步骤,如果还是不行,权衡利弊,有没有必要更换新的服务器上去,恢复业务要紧。
28、Linux系统中病毒怎么解决
1
)最简单有效的方法就是重装系统
2
)要查的话就是找到病毒文件然后删除,中毒之后一般机器
cpu
、内存使用率会比较高,机器向外发包等异常情况,排查方法简单介绍下:
①top 命令找到
cpu
使用率最高的进程
②一般病毒文件命名都比较乱,可以用 ps aux 找到病毒文件位置
③
rm -f
命令删除病毒文件
④检查计划任务、开机启动项和病毒文件目录有无其他可以文件等
3
)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下
29、发现一个病毒文件你删了他又自动创建怎么解决
公司的内网某台
linux
服务器流量莫名其妙的剧增
,
用
iftop
查看有连接外网的情况,针对这种情况一般重点查看netstat
连接的外网
ip
和端口。
用
lsof -p pid
可以查看到具体是那些进程,哪些文件经查勘发现
/root
下有相关的配置
conf.n hhe
两个可疑文件,rm -rf
后不到一分钟就自动生成了,由此推断是某个母进程产生的这些文件。所以找到母进程就是找到罪魁祸首
查杀病毒最好断掉外网访问,还好是内网服务器,可以通过内网访问,断了内网,病毒就失去外联的能力,杀掉它就容易的多,怎么找到呢,找了半天也没有看到蛛丝马迹,没办法只有ps axu
一个个排查, 方法是查看可以的用户和和系统相似而又不是的冒牌货,果然,看到了如下进程可疑看不到图片就是/usr/bin/.sshd
,于是我杀掉所有
.sshd
相关的进程,然后直接删掉
.sshd
这个可执行文
件,然后才删掉了文章开头提到的自动复活的文件
总结一下,遇到这种问题,如果不是太严重,尽量不要重装系统
一般就是先断外网,然后利用
iftop,ps,netstat,chattr,lsof,pstree
这些工具顺藤摸瓜
一般都能找到元凶。但是如果遇到诸如此类的问题 /boot/efi/EFI/redhat/grub.efi:Heuristics.Broken.Executable FOUND,个人觉得就要重装系统了
30、说说TCP/IP的七层模型
应用层 (Application)
:网络服务与最终用户的一个接口。 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示层(Presentation Layer
):数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层) 格式有,JPEG、
ASCll
、
DECOIC
、加密格式等
会话层(
Session Layer):
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话
传输层 (Transport)
:定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP
,数据包一旦离开网卡即进入网络传输层。
网络层 (Network)
:进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP IGMP IP
(
IPV4 IPV6
)
ARP RARP
数据链路层 (Link)
:建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议) 将比特组合成字节进而组合成帧,用MAC
地址访问介质,错误发现但不能纠正
物理层(Physical Layer
):是计算机网络OSI
模型中最低的一层 物理层规定:
为传输数据所需要的物理链路创建、维持、拆除而提供具有机械的,电子的,功能的和规范 的特性简单的说,物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第
1
、
2
层物理层是OSI
的第一层,它虽然处于最底层,却是整个开放系统的基础
物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境如果您想要用尽量少的词来记住这个第一层,那就是“
信号和介质
”
31、你常用的Nginx模块,用来做什么
rewrite
模块,实现重写功能
access
模块:来源控制
ssl
模块:安全加密
ngx_http_gzip_module
网络传输压缩模块
ngx_http_proxy_module
模块实现代理
ngx_http_upstream_module
模块实现定义后端服务器列表
ngx_cache_purge
实现缓存清除功能
32、请列出你了解的web服务器负载架构
Nginx
Haproxy
Keepalived
LVS
33、查看http的并发请求数与其TCP连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
还有ulimit -n 查看linux系统打开最大的文件描述符,这里默认1024
不修改这里web服务器修改再大也没用,若要用就修改很几个办法,这里说其中一个:
修改/etc/security/limits.conf
* soft nofile 10240
* hard nofile 10240
重启后生效
34、用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'|
sort | uniq -c | sort -nr |head -20
35、写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线
#!/bin/bash
# 并行ping扫描局域网内所有IP
for ip in $(seq 1 255); do
{
ping -c 1 "192.168.1.$ip" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "192.168.1.$ip UP"
else
echo "192.168.1.$ip DOWN"
fi
} &
done
wait
36.已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近 7 天的访问日志!请问如何解决?请给出解决办法或配置或处理命令
#!/bin/bash
# 创建日期循环创建日志文件
for n in $(seq 1 14); do
date -s "11/0$n/14"
touch "access_www_$(date +%F).log"
done
# 查看日志文件列表
# pwd/application/logs
# ll
-rw-r--r--. 1 root root 0 Jan 1 00:00 access_www_2015-01-01.log
-rw-r--r--. 1 root root 0 Jan 2 00:00 access_www_2015-01-02.log
-rw-r--r--. 1 root root 0 Jan 3 00:00 access_www_2015-01-03.log
-rw-r--r--. 1 root root 0 Jan 4 00:00 access_www_2015-01-04.log
-rw-r--r--. 1 root root 0 Jan 5 00:00 access_www_2015-01-05.log
-rw-r--r--. 1 root root 0 Jan 6 00:00 access_www_2015-01-06.log
-rw-r--r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log
-rw-r--r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log
-rw-r--r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log
-rw-r--r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log
-rw-r--r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log
-rw-r--r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log
-rw-r--r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log
-rw-r--r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log
# 删除7天前的日志文件(两种等效方式)
find /application/logs/ -type f -mtime +7 -name "*.log" | xargs rm -f
# 或者使用-exec选项
find /application/logs/ -type f -mtime +7 -name "*.log" -exec rm -f {} ;
# 删除后的文件列表
# ll
-rw-r--r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log
-rw-r--r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log
-rw-r--r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log
-rw-r--r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log
-rw-r--r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log
-rw-r--r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log
-rw-r--r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log
-rw-r--r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log
37、如何优化 Linux系统(可以不说太具体)?
不用
root
,添加普通用户,通过
sudo
授权管理
更改默认的远程连接
SSH
服务端口及禁止
root
用户远程连接
定时自动更新服务器时间
配置国内
yum
源
关闭
selinux
及
iptables
(
iptables
工作场景如果有外网
IP
一定要打开,高并发除外)
调整文件描述符的数量
精简开机启动服务(
crond rsyslog network sshd
)
内核参数优化(
/etc/sysctl.conf
)
更改字符集,支持中文,但建议还是用英文字符集,防止乱码
锁定关键系统文件
清空
/etc/issue
,去除系统及内核版本登录前的屏幕显示
38、请执行命令取出 linux 中 eth0 的 IP 地址(请用 cut,有能力者也可分别用 awk,sed 命令答)
cut方法1:
# ifconfig eth0|sed -n '2p'|cut -d ":" -f2|cut -d " " -f1
192.168.20.130
awk方法2:
# ifconfig eth0|awk 'NR==2'|awk -F ":" '{print $2}'|awk '{print $1}'
192.168.20.130
awk多分隔符方法3:
# ifconfig eth0|awk 'NR==2'|awk -F "[: ]+" '{print $4}'
192.168.20.130
sed方法4:
# ifconfig eth0|sed -n '/inet addr/p'|sed -r 's#^.*ddr:(.*)Bc.*$#1#g'
192.168.20.130
39、请写出下面 linux SecureCRT 命令行快捷键命令的功能?
Ctrl + a
:光标移动到行首
Ctrl + c
:终止当前程序
Ctrl + d
:如果光标前有字符则删除,没有则退出当前中断
Ctrl + e
:光标移动到行尾
Ctrl + l
:清屏
Ctrl + u
:剪切光标以前的字符
Ctrl + k
:剪切光标以后的字符
Ctrl + y
:复制
u/k
的内容
Ctrl + r
:查找最近用过的命令
tab
:命令或路径补全
Ctrl+shift+c
:复制
Ctrl+shift+v
:粘贴
40、每天晚上 12 点,打包站点目录/var/www/html 备份到/data目录下(最好每次备份按时间生成不同的备份包)
# cat a.sh
#/bin/bash
cd /var/www/ && /bin/tar zcf /data/html-`date +%m-%d%H`.tar.gz html/
# crontab –e
00 00 * * * /bin/sh /root/a.sh
41.linux如何挂在windows下的共享目录
mount.cifs //192.168.1.3/server /mnt/server -o user=administrator,pass=123456
linux
下的
server
需要自己手动建一个 后面的
user
与
pass
是
windows
主机的账号和密码 注意空格
和逗号
42.查看http的并发请求数与其TCP连接状态
netstat -n | awk '/^tcp/ {++b[$NF]} END {for(a in b) print a, b[a]}'
还有
ulimit -n
查看
linux
系统打开最大的文件描述符,这里默认
1024
,不修改这里
web
服务器修改
再大也没用。
修改
/etc/security/limits.conf
* soft nofile 10240
* hard nofile 10240
重启后生效
43.用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'
| sort | uniq -c | sort -nr |head -5
44.查看/var/log目录下文件数
ls /var/log/ -lR| grep "^-" |wc -l
45.查看当前系统每个IP的连接数
netstat -n | awk '/^tcp/ {print $5}'| awk -F: '{print $1}' | sort | uniq -c |
sort -rn
46.shell下32位随机密码生成
cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass
将生成的
32
位随机数 保存到
/pass
文件里了
47.统计出apache的access.log中访问量最多的5个IP
cat access_log | awk '{print $1}' | sort | uniq -c | sort -n -r | head -5
48.如何查看二进制文件的内容
我们一般通过
hexdump
命令 来查看二进制文件的内容。
hexdump -C XXX(
文件名
) -C
是参数 不同的参数有不同的意义
-C
是比较规范的 十六进制和
ASCII
码显示
-c
是单字节字符显示
-b
单字节八进制显示
-o
是双字节八进制显示
-d
是双字节十进制显示
-x
是双字节十六进制显示
49.ps aux 中的VSZ代表什么意思,RSS代表什么意思
VSZ:
虚拟内存集
,
进程占用的虚拟内存空间
RSS:
物理内存集
,
进程占用实际物理内存空间
50.检测并修复/dev/hda5
fsck
用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用
fsck
命令对文件系统
进行检查
用法
51.Linux系统的开机启动顺序
加载
BIOS–>
读取
MBR–>Boot Loader–>
加载内核
–>
用户层
init
一句
inittab
文件来设定系统运行的等
级
(
一般
3
或者
5
,
3
是多用户命令行,
5
是界面
)–>init
进程执行
rc.syninit–>
启动内核模块
–>
执行不同
级别运行的脚本程序
–>
执行
/etc/rc.d/rc.local(
本地运行服务
)–>
执行
/bin/login,
就可以登录了。
52.符号链接与硬链接的区别
我们可以把符号链接,也就是软连接 当做是
windows
系统里的 快捷方式。
硬链接 就好像是 又复制了一份
.
ln 3.txt 4.txt
这是硬链接,相当于复制,不可以跨分区,但修改
3,4
会跟着变,若删除
3,4
不受任何
影响。
ln -s 3.txt 4.txt
这是软连接,相当于快捷方式。修改
4,3
也会跟着变,若删除
3,4
就坏掉了。不可以
用了。
53.保存当前磁盘分区的分区表
dd
命令是一个强大的命令,在复制的同时进行转换
dd if=/dev/sda of=./mbr.txt bs=1 count=512
54.如何在文本里面进行复制、粘贴,删除行,删除全部,按行查找和按字母查找。
以下操作全部在
vi/vim
命令行状态操作,不要在编辑状态操作。
在文本里 移动到想要复制的行按
yy
想复制到哪就移动到哪,然后按
P
就黏贴了
删除行
移动到改行按
dd
删除全部
dG
这里注意
G
一定要大写
按行查找
:90
这样就是找到第
90
行
按字母查找
/path
这样就是找到
path
这个单词所在的位置,文本里可能存在多个
,
多次查找会显
示在不同的位置。
55.手动安装grub
grub-install /dev/sda
56.取出文件aaa.txt的第4到7行
[root@localhost ~]# cat aaa.txt
1.aaa
2.bbbbbbb
3.ccccccccccccc
4.dddddddddddddddddddddd
5.eeeeeeeeeeeeeeeeee
6.ffffffffffffffffffffffffffffffffff
7.gggggggggggggggggggggg
8.hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
9.iiiiiiiiiiiiiiiiiiii
10.jjjjjjjjjjjjjjjjjjjjjjjjjj
[root@localhost ~]# sed -n '4,7p' aaa.txt
4.dddddddddddddddddddddd
5.eeeeeeeeeeeeeeeeee
6.ffffffffffffffffffffffffffffffffff
7.gggggggggggggggggggggg
57.当前目录下txt结尾的文件
find ./ -name "*.txt"
58.查找/usr目录下超过1M的文件
find /usr -type f -size +10240k
59.写一个定时任务5点到8点执行
* 5-8 * * * /usr/bin/backup
60.mysql主从复制原理
主库
db
的更新事件
(update
、
insert
、
delete)
被写到
binlog
。
主库创建一个
binlog dump thread
,把
binlog
的内容发送到从库。
从库启动并发起连接,连接到主库。
从库启动之后,创建一个
I/O
线程,读取主库传过来的
binlog
内容并写入到
relay log
。
从库启动之后,创建一个
SQL
线程,从
relay log
里面读取内容,从
Exec_Master_Log_Pos
位置开始执行。
读取到的更新事件,将更新内容写入到
slave
的
db
。
61.vim有几种工作模式
命令模式。行末模式,编辑模式
62.简述dns解析流程?访问www.baidu.com的解析流程
优先查找本地
dns
缓存
,
查找本地
/etc/hosts
文件,是否有强制解析
,
如果没有去
/etc/resolv.conf
指定的
dns
服务器中查找记录
(
需联网
,
在
dns
服务器中找到解析记录后,在本地
dns
中添加缓存
,
完成一次
dns
解析
63.讲解一下DNS查询的两种模式
递归查询
递归查询是一种
DNS
服务器的查询模式,在该模式下
DNS
服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS
服务器本地没有存储查询
DNS
信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
迭代查询
DNS
服务器另外一种查询方式为迭代查询,
DNS
服务器会向客户机提供其他能够解析查询请求的
DNS服务器地址,当客户机发送查询请求时,DNS
服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台
DNS
服务器提交请求,依次循环直到返回查询的结果为止。
64.描述一下正向代理和反向代理
正向代理
比如我们国内访问国外网站,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服务器,代理服务器能够访问国外网站,这样由代理去国外网站取到返回数据,再返回给我们,这样我们就能访问了。
反向代理
反向代理实际运行方式是指以代理服务器来接受
internet
上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet
上请求连接的客户端,此时客户只是访问代理服务器却不知道后面有多少服务器。
65.简述 ETCD 及其特点?
etcd
是
CoreOS
团队发起的开源项目,是一个管理配置信息和服务发现(
service discovery
)的项目, 它的目标是构建一个高可用的分布式键值(key-value
)数据库,基于
Go
语言实现。
特点:
简单:支持
REST
风格的
HTTP+JSON API
安全:支持
HTTPS
方式的访问
快速:支持并发
1k/s
的写操作
可靠:支持分布式结构,基于
Raft
的一致性算法,
Raft
是一套通过选举主节点来实现分布式系统一致性的算法。
66.简述 ETCD 适应的场景?
etcd
基于其优秀的特点,可广泛的应用于以下场景:
服务发现
(Service Discovery)
:服务发现主要解决在同一个分布式集群中的进程或服务,要如何才能找到对方并建立连接。本质上来说,服务发现就是想要了解集群中是否有进程在监听 udp
或
tcp
端口,并且通过名字就可以查找和连接。 消息发布与订阅
:在分布式系统中,最适用的一种组件间通信方式就是消息发布与订阅。即构建一个配置共享中心,数据提供者在这个配置中心发布消息,而消息使用者则订阅他们关心的主题,一旦主题有消息发布,就会实时通知订阅者。通过这种方式可以做到分布式系统配置的集中式管理与动态更新。应用中用到的一些配置信息放到 etcd
上进行集中管理。
负载均衡
: 在分布式系统中,为了保证服务的高可用以及数据的一致性,通常都会把数据和服务部署多份,以此达到对等服务,即使其中的某一个服务失效了,也不影响使用。etcd
本身分布式架构存储的信息访问支持负载均衡。etcd
集群化以后,每个
etcd
的核心节点都可以处理用户的请求。所以,把数据量小但是访问频繁的消息数据直接存储到 etcd
中也可以实现负载均衡的效果。
分布式通知与协调
:与消息发布和订阅类似,都用到了 etcd
中的
Watcher
机制,通过注册与异步通知机制,实现分布式环境下不同系统之间的通知与协调,从而对数据变更做到实时处理。 分布式锁
:因为
etcd
使用
Raft
算法保持了数据的强一致性,某次操作存储到集群中的值必然是全局一致的,所以很容易实现分布式锁。锁服务有两种使用方式,一是保持独占,二是控制时序。集群监控与 Leader
竞选:通过
etcd
来进行监控实现起来非常简单并且实时性强。
67.简述 HAProxy 及其特性?
HAProxy
是可提供高可用性、负载均衡以及基于
TCP
和
HTTP
应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy
非常适用于并发大(并发达
1w
以上)
web
站点,这些站点通常又需要会话保持或七层处理。HAProxy
的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护
web服务器不被暴露到网络上。
HAProxy 的主要特性有:
可靠性和稳定性非常好,可以与硬件级的
F5
负载均衡设备相媲美;
最高可以同时维护
40000-50000
个并发连接,单位时间内处理的最大请求数为
20000
个,最大处
理能力可达
10Git/s
;
支持多达
8
种负载均衡算法,同时也支持会话保持;
支持虚机主机功能,从而实现
web
负载均衡更加灵活;
支持连接拒绝、全透明代理等独特的功能;
拥有强大的
ACL
支持,用于访问控制;
其独特的弹性二叉树数据结构,使数据结构的复杂性上升到了
0(1)
,即数据的查寻速度不会随着数
据条目的增加而速度有所下降;
支持客户端的
keepalive
功能,减少客户端与
haproxy
的多次三次握手导致资源浪费,让多个请求
在一个
tcp
连接中完成;
支持
TCP
加速,零复制功能,类似于
mmap
机制;
支持响应池(
response buffering
);
支持
RDP
协议;
基于源的粘性,类似
nginx
的
ip_hash
功能,把来自同一客户端的请求在一定时间内始终调度到上
游的同一服务器;
更好统计数据接口,其
web
接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的
统计信息;
详细的健康状态检测,
web
接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功
能;
基于流量的健康评估机制;
基于
http
认证;
基于命令行的管理接口;
日志分析器,可对日志进行分析。
68.简述 HAProxy 常见的负载均衡策略?
HAProxy 负载均衡策略非常多,常见的有如下 8 种:
roundrobin
:表示简单的轮询。
static-rr
:表示根据权重。
leastconn
:表示最少连接者先处理。
source
:表示根据请求的源
IP
,类似
Nginx
的
IP_hash
机制。
ri
:表示根据请求的
URI
。
rl_param
:表示根据
HTTP
请求头来锁定每一次
HTTP
请求。
rdp-cookie(name)
:表示根据据
cookie(name)
来锁定并哈希每一次
TCP
请求。
69.简述负载均衡四层和七层的区别?
四层负载均衡器
也称为
4
层交换机,主要通过分析
IP
层及
TCP/UDP
层的流量实现基于
IP
加端口的负载均衡,如常见的 LVS
、
F5
等;
七层负载均衡器
也称为
7
层交换机,位于
OSI
的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、
FTP
、
SMTP
等。
7
层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“
内容交换器
”
。如常见的
HAProxy
、
Nginx
。
70.简述 LVS、Nginx、HAproxy 的什么异同?
相同:三者都是软件负载均衡产品。
区别:
LVS
基于
Linux
操作系统实现软负载均衡,而
HAProxy
和
Nginx
是基于第三方应用实现的软负载
均衡;
LVS
是可实现
4
层的
IP
负载均衡技术,无法实现基于目录、
URL
的转发。而
HAProxy
和
Nginx
都可以实现 4
层和
7
层技术,
HAProxy
可提供
TCP
和
HTTP
应用的负载均衡综合解决方案;
LVS
因为工作在
ISO
模型的第四层,其状态监测功能单一,而
HAProxy
在状监测方面功能更丰
富、强大,可支持端口、
URL
、脚本等多种状态检测方式;
HAProxy
功能强大,但整体性能低于
4
层模式的
LVS
负载均衡。
Nginx
主要用于
Web
服务器或缓存服务器。
71.简述 Heartbeat?
Heartbeat
是
Linux-HA
项目中的一个组件,它提供了心跳检测和资源接管、集群中服务的监测、失效切换等功能。heartbeat
最核心的功能包括两个部分,心跳监测和资源接管。心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。


















暂无评论内容