【干货】Linux运维跳槽必备的30道面试精华题(上)( 五 )


2、如果是网站应用比较庞大的话 , LVS/DR+Keepalived实施起来就比较复杂了特别后面有WindowsServer的机器的话 , 如果实施及配置还有维护过程就比较复杂了相对而言 , 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参数’balanceurl_param’requiresanURLparametername;
⑦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
keepalived的工作原理和如何做到健康检查
keepalived是以VRRP协议为实现基础的 , VRRP全称VirtualRouterRedundancyProtocol , 即虚拟路由冗余协议 。
虚拟路由冗余协议 , 可以认为是实现路由器高可用的协议 , 即将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_code200#HTTP/SSL检查返回的状态码
}
connect_port80#连接端口
bindto<IPADD>
connect_timeout3#连接超时时间
nb_get_retry3#重连次数
delay_before_retry2#连接间隔时间
}
如果想了解另外30道面试题 , 请关注公众号【Linux架构师训练营】