负载均衡(107个问题)
负载均衡方面
1. LVS 与nginx 的区别
LVS: 是基于四层的转发 只能做端口的转发
- 抗负载能力强,工作方式的逻辑简单,工作在七层模型第四层,只做请求分发用,没有流量产生,所以效率高,保住了均衡器的IO性能不会受到大流量的影响
- 工作稳定,也就是稳定性高,有完整的双机热备方案:LVS+keepalive
- LVS基本上能支持所有应用,可以对几乎所有应用作负载均衡,比如http、数据库等。
Nginx: Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器,可以做七层的转发 URL和目录的转发都可以做。
- nginx工作在网络的第7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等
- nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通
- nginx安装和配置比较简单,测试起来也很方便
- nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。
2. LVS的算法
- 轮询调度(简称'RR')算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器。
- 加权轮询调度(简称'WRR')算法主要是对轮询算法的一种优化与补充,LVS会考虑每台服务器的性能,并给每台服务器添加一个权值,如果服务器A的权值为1,服务器B的权值为2,则调度器调度到服务器B的请求会是服务器A的两倍。权值越高的服务器,处理的请求越多。
- 最小连接调度(简称'LC')算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态的调度算法,它通过服务器当前活跃的连接数来估计服务器的情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中断或者超时,其连接数减1。(集群系统的真实服务器具有相近的系统性能,采用最小连接调度算法可以比较好地均衡负载。)
- 加权最小连接调度(简称'WLC')算法是最小连接调度的超集,各个服务器相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
除此之外我还知道一些:基于局部的最少连接、目标地址散列调度、源地址散列调度、最少队列调度 等等这些。
3. Nginx负载的算法
nginx常见的负载均衡算法有五种
1. 轮询
轮询是默认的方式,轮询的方法是通过按照时间顺序将请求往不同的后端服务器发送,来缓解服务器的压力。如果后台服务器上某一台宕机了,它可以自动剔除。
缺点:可靠性低和负载分配不均衡。适用于图片服务器和静态页面服务器集群。
2. 加权轮询(wight)
指定轮询的几率,wight和访问比率成正比,用于后台服务器性能不均匀的情况。
3. ip_hash
根据每个请求的ip的hash结果分配,因此每个固定ip能访问到同一个后端服务器,可以解决session问题。
4. fair(第三方)
按照后端服务器的相应时间来分配请求,时间短的优先分配。
5.url_hash(第三方)
按照访问url的hash结果来分配请求,每个固定的url访问同一个后端服务器。如果后端服务器是缓存时效率高。
4. lvs用过哪些模式
我们公司使用的是DR模式 Nat和TUN我也了解
5. 你们常用的DR模式他的原理是啥
DR模式是通过改写请求报文的目标MAC地址,将请求发送给真实的服务器的,而真实的服务器将响应后的处理结果直接返回给客户端用户
6. nginx 有什么使用场景
我们公司使用nginx做负载均衡,反向代理,也做web服务器来使用;比如负载均衡,主要是用upstream模块,nginx的代理功能是使用http proxy模块做的。
7. LVS脑裂问题是如何产生的
心跳链路故障,导致无法通信
开启防火墙阻挡心跳信息传输
心跳网卡地址配置不正确
其他: 心跳方式不同,心跳广播冲突,软件bug等防止
8. LVS 裂脑问题有什么解决方案
采用串行或以太网电缆连接,同时用两条心跳线路
做好裂脑的监控报警,在问题发生时人为第一时间介入仲裁
启用磁盘锁,即正在服务的一方只在发现心跳线全部断开时,才开启磁盘锁
fence设备(智能电源管理设备)
增加仲裁盘
加冗余线路
9. nginx 用过哪些模块
核心模块:core module
标准模块:
HTTP modules:
Standard HTTP modules 标准HTTP模块
Optional HTTP modules 可选HTTP模块
Mail modules 邮件模块
Stream modules 流模块
第三方模块
10. Nginx 与Apache的区别
Nginx配置简单、占用内存小,是轻量级Web服务器,抗并发比Apache好
Nginx处理请求的方式是异步非阻塞的 而Apache是阻塞型的
Nginx处理静态文件好,静态处理性能比Apache高三倍以上
Apache处理动态请求有优势,一般动态请求要Apache去做,Nginx适合静态和反向。
Apache更为成熟,少bug,Nginx的bug相对较多
Apache的rewrite比nginx强大,在rewrite频繁的情况下,用Apache
Apache是同步多进程,一个连接对应一个进程,一个进程死掉时不会影响其他用户
Nginx是异步的,多个连接对应一个进程,一个进程死掉会影响多个用户,稳定性差
一般来说,需要性能的web服务,用Nginx。如果不需要性能只求稳定,更考虑Apache,Apache的各种功能模块实现比Nginx好,例如SSL的模块就比Nginx好,可配置项多
11. nginx的优化怎么做的
隐藏版本号和服务器类型
设置nginx运行用户
修改运行进程个数
设置CUP运行亲和力
限制最大打开文件数
开启高效传输
设置链接超时时间
限制上传文件大小
12. nginx 500 304 是什么问题导致的
500:
1.web脚本错误,如php语法错误,lua语法错误等。
2.访问量大的时候,由于系统资源限制,而不能打开过多的文件
硬盘空间满了:
使用 df -k 查看硬盘空间是否满了。清理硬盘空间就可以解决500错误。Nginx 如果开启了access log,在不需要的情况下,最好关闭access log。access log 会占用大量硬盘空间。
分析思路:
查看nginx error log ,查看php error log
如果是脚本的问题,则需要修复脚本错误,并优化代码
各种优化都做好,还是出现too many open files,那就要考虑做负载均衡, 把 流量分散到不同服务器上去了。
304:
304:未修改(表示客户机缓存的版本是最新的,客户机应该继续使用它。)
13. nginx 有哪几种虚拟主机
基于IP 基于端口 基于域名
基于IP的虚拟主机:每个网站都需要一个IP。缺点是:需要多个IP,如果是公网IP每个IP都需要收费
基于端口的虚拟主机:只需要一个IP。缺点:端口号没有办法告诉公网用户,无法适用于公网用户,适合内部用户使用。
基于域名的虚拟主机:最常用的就是基于域名的虚拟主机
14. 动静分离如何做的
我们公司使用的是tomcat+nginx实现动静分离 tomcat处理动态数据 nginx处理静态数据
15. 什么样的数据是动态,什么是静态
静态数据和动态数据都是指系统运行过程中的数据,其区别在于二者一个可变化一个不可变化。
静态数据是指在运行过程中主要作为控制或参考用的数据,它们在很长的一段时间内不会变化,一般不随运行而变。
动态数据包括所有在运行中发生变化的数据以及在运行中需要输入、输出的数据及在连机操作中要改变的数据。
16. tomcat的根目录是哪个
webapps/ROOT
17. 如何重启nginx
/usr/local/nginx/nginx.conf/nginx -s reload
18. 如何检查nginx的配置文件的准确性
/usr/local/nginx/nginx.conf/nginx -t
19. nginx日志分析怎么做的
我们公司使用ELK做nginx的日志分析 主要分析nginx的access.log日志
20. tomcat调优做过哪些
内存优化
Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。
并发优化
调整连接器connector的并发处理能力;在Tomcat 配置文件 server.xml 中
缓存压缩优化
打开tomcat的压缩功能;tomcat的压缩优化就是将返回的html页面等内容经过压缩,压缩成gzip格式之后,发送给浏览器,浏览器在本地解压缩的过程。
安全优化
降权启动
以普通用户启动tomcat,降权启动,防止不法分子通过tomcat获得root权限。
#修改端口号
修改tomcat配置文件server.xml中的全球人都知道的http连接器端口号,防止黑客攻击。
21. nginx如何设置防ddos攻击
限制每秒请求数
限制IP连接数
白名单设置
ngx_http_limit_req_module模块通过漏桶原理来限制单位时间内的请求数,一旦单位时间内请求数超过限制,就会返回503错误。
22. nginx日志分析你是分析的哪个日志
access_log 和 error.log
23. nginx日志分析的时候你们关注什么参数。
$remote_addr #与$http_x_forwarded_for 客户端的ip地址
$remote_user #客户端用户名称,一般默认为空
$time_local #访问时间
$status #请求状态
$http_user_agent #客户端浏览器相关信息
$request_body #POST数据
$request_length #客户端请求的长度
$upstream_status #upstream状态,成功是200
$upstream_response_time #请求过程中,upstream响应时间
数据库方面
24. mysql用的哪个版本
5. 7版本
25. mysql的存储引擎你知道哪几个,有啥区别
(1) MyISAM用一个变量保存了整个表的行数,InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。MylSAM执行上述语句时只需要读出该变量即可,速度很快。
(2) MyISAM支持全文索引,Innodb不支持全文索引,查询效率上MyISAM要高。
(3) innodb支持事务,MyISAM不支持事务,
(4) 如果表中绝大多数都只是读查询,可以考虑MyISAM,如果既有读写也挺频繁,请使用InnoDB。系统奔溃后,MyISAM恢复起来更困难。
26. mysql主从原理是啥
(1) 从库生成两个线程,一个I/O线程,一个SQL线程, i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
(2) 主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
(3) SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
27. mysql主从延迟是如何产生的
master可以并发,Slave_SQL_Running线程却不可以。
当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,那么延时就产生了,当然还有就是可能与slave的大型query语句产生了锁等待。
TPS : 是一台数据库服务器每秒处理的事务的个数。
DDL:数据库定义语句,用来创建数据库中的表、索引、视图、存储过程、触发器等,常用的语句关键字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。
因素:
- 从库的配置往往没有主库的配置高
- 主库支持并发写入,而5.7之前的版本上从库只有单线程SQL来完成任务。
- MySQL主从之间的同步,并不是完全的实时同步,而是主库提交事务之后,从库才再来执行一遍
- 主库上的表的某个列没有索引,然后对这个列进行delete或update操作
- 网络问题,往返时延RTT较大。
28. mysql主从延迟如何解决
(1) 最简单的解决方案就是在架构上做优化,尽量让主的DDL快速执行。
(2) 或者直接关闭slave的binlog,因为slave不需要很高的数据安全性
(3) 另外就是使用比主库更好的硬件设备作为slave
29. mysql读写分离用的什么工具
Mycat
mycat的三大功能:分表、读写分离、主从切换
Mycat 是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有存储引擎,所以并不是完全意义的分布式数据库系统。可以将它理解为是一个数据库中间件,也可以理解为是数据库代理。在架构体系中是位于数据库和应用层之间的一个组件。
30. 你们用的几主几从
双主四从
31. mysql主从同步中主服务器宕机了如何处理,从服务器宕机如何处理
主库宕机:
(1) 确保所有的relay log全部更新完毕,在每个从库上执行show processlist
(2) 更新完毕后,登录所有从库查看master.info文件,对比选择pos最大的作为新的主库,
(3) 然后登录这个新的主库,执行stop slave;进入主目录,删除master.Info和relay-log.info配置my.cnf文件开启log-bin文件
(4) 创建用于同步的用户并授权slave
(5) 登录另外一台从库,执行stop slave停止同步
(6) 执行start slave
(7) 修改新的master数据,测试slave是否同步更新
从库宕机:
(1) 查看从库上mysql的错误日志,里面有记录主从挂掉时的binlog信息。
(2) 有了binlog和postion信息后,只需要重新在从库上进行change master to配置即可。配置后开启slave状态,没有报错
(3) 查看slave状态,发现slave已经正常了,开始进行延时数据恢复。
32. mysql有哪些日志文件
重做日志(redo log)
回滚日志(undo log)
二进制日志(binlog)
错误日志(errorlog)
慢查询日志(slow query log)
一般查询日志(general log)
中继日志(relay log)
Mysql自带的 服务日志
33. 慢查询日志如何设置
配置慢查询功能的方式有两种,一种是使用mysql的配置文件配置,另外一种是使用mysql命令配置。
配置文件配置:
// 找到[mysqld],在其下面添加如下代码即可.
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/var/localhost-slow.log
long_query_time=0 log-queries-not-using-indexes = 1
// 配置好后,重启mysql服务
使用命令配置:
// 这里就简单些一个配置项就行了,其他的配置项均按照此方法配置
mysql> set slow_query_log=ON;
34. mysql授权命令是啥
grant
35. mysql日常的数据 如何备份
我们公司有两种备份方式 一种是全量备份 一种是增量备份
全量备份我们公司使用Mysqldump备份 每周备份一次
增量备份我们公司使用binlog+xtrabackup备份 脚本运行每天备份
36. 每天的数据量有多大
我们公司的数据量每天在10-20G左右
37. mysql调优如何做的
内核优化:根据硬件配置来进行优化 比如内存使用、TCP处理这方面的优化
配置参数的优化:我做过IO处理的常用参数、最大连接数设置、缓存使用参数的设置、慢日志的参数的设置
38. delete 和truncate的区别
- delete是数据操作语言(DML)命令;而truncate是数据定义语言(DDL)命令。
- delete命令采用行级锁定,表中的每一行都被锁定以进行删除;truncate命令采用表级锁定,锁定了整个表以删除所有记录。
- delete命令不会影响表结构,而truncate命令会从数据库中删除表结构
- 由于delete命令维护日志,因此速度很慢。但是,由于truncate命令在事务日志中维护最少的日志记录,因此执行速度更快。
39. 如何监控mysql,以及监控mysql的哪些参数
我们公司使用zabbix监控mysql数据库
监控数据库开启状态、缓存空间使用率、内存使用率、IO读写、网络流量、DB端口流量、数据库客户端的连接数、还有数据库的主从状态
40. mysql高可用有哪些方案
Mysql数据库的话 可以使用keepalive或者heartbeat做高可用架构 我们公司使用的是keepalive做的mysql双主方案
- 主从或主主半同步复制
- 半同步复制优化
- 高可用架构优化
- 共享存储
- 分布式协议
41. 数据库连接不上,可能是哪些原因导致的
- 可能是网络的问题,网速不佳
- Mysql访问权限是否开启
- 防火墙是否允许用户访问
- 端口被占用
42. Redis的架构是什么样子的
我们公司使用的是redis的哨兵模式
Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器以及这些主服务器下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。
43. Redis持久化怎么做的
我们公司使用的是redis的默认持久化方式RDB
RDB有以下优点:1.性能很好,2.在数据量大的情况下恢复速度比AOF快
但是RDB也有缺点:就是比较容易造成数据的丢失,这也恰恰是AFO的优点
AOF的优点就是1.可以保持很高的数据完整性,2.日志不完整支持redis-check-aof来进行日志修复,3.可读性也比较强
AOF的缺点就是恢复速度慢
44. Redis你们用来存储什么样的数据
String(字符串类型)
hash(哈希 散列类型)
list(列表类型)
set(集合类型)
sorted set(有序集合类型)
主要是缓存一些 电商的页面 客户信息 文章信息之类的
45. Redis和memcache的区别
(1) Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。
(2) redis在数据支持上要比memecache多的多。
(3) memecache 把数据全部存在内存之中,redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化比如RDB和AOF两种持久化存储方式
(4) redis目前官方只支持LINUX 上去运行
(5) Redis支持数据的备份,即master-slave模式的数据备份
个人总结一下,有持久化需求或者对数据结构和处理有高级要求的应用,选择redis,其他简单的key/value存储,选择memcache
监控方面
46. Zabbix都监控服务器的哪些参数
磁盘空间
磁盘IO
CPU负载
内存使用
开机时间
Web服务
数据库状态
47. Zabbix监控nginx的哪些指标
开启状态
客户端请求数
客户连接数
丢弃的连接数
单位时间内访问总数
网络流量
48. 你们微信报警怎么做
申请一个企业公众号
在微信企业号上新建应用
接口调用测试
配置脚本
Web页面新增报警媒介类型
配置用户的报警媒介信息
最后测试是否成功
49. 报警风暴如何避免
什么是告警风暴:
在大规模网络发生异常的时候,报警量激增,运维伙伴手机在1个多小时中不断的接受报警通知,这样有可能会造成“狼来了”等一系列的问题,不但对运维人员造成了困扰,给排查问题带了不小的难度
如何避免:
我们可以做告警收敛,可以收敛架构图
①所有产生告警均由zabbix调用脚本推入缓存redis当中
②分析系统将在规定时间(1分钟)内去redis中拉取数据,根据定义好的一系列规则 进行,合并、分析或直接丢弃,并存入分析平台数据库,以便供历史查询。
③根据预先定义好的规则将报警通过定义好的方式发送给相关人员。
对zabbix 进行设置
对Actions进行特殊设置,Default subject极为重要,是识别收敛的标示。
50. Zabbix有哪些监控方式,你们用的主动还是被动
Agent监控方式 Trapper监控方式
SNMP监控方式 JMX监控方式 IPMI监控方式
zabbix客户端分数据给服务端分为主被动两种模式,主动模式是zabbix客户端主动向服务端发送数据,被动模式是被动等待客户端来取数据。
主动模式的流程:
客户端每隔一段时间主动向服务端发起连接请求–>服务端收到请求,查询客户端需要取的item信息,发送给客户端–>客户端收集数据发送服务端–>结束。
被动模式的流程:
客户端开一个端口默认10050,等待服务端来取数据,然后客户端收集数据发送到服务端,然后结束。
51. Zabbix自动发现怎么做
网络发现(Discovery)
一、Zabbix 创建发现规则创建发现规则Configuration ---- discovery ---- Create discovery rule
二、主机自动加入主机组并关联模板
(一)为discovery(发现)创建action(动作)
(1) 输入 Action 名字
(2) 添加触发Action的条件 这里添加了三个条件 分别是 "ip地址范围"、"服务类型" 和 "Discovery 状态"
(二)创建操作 2.2.1、"Add host "添加主机
52. 你还了解过哪些监控软件
Nagios Cacti
Cacti:
cacti是一款使用PHP语言开发的性能与流量检测软件,检测对象可以是Linux、Windows服务器,也可以是路由交换机等网络设备,主要基于SNMP(simple、Network、Management、Protocol,简单网络管理协议)来搜集CPU占用、内存使用、运行进程、网卡流量等数据
Nagios:
Nagios是一款开源的计算机系统和网络监视工具,能有效地监控Windows,Linux和UNIX的主机服务状态,在系统服务发生异常时会发出电子邮件和短信通知报警第一时间通知网站维护人员
53. 用过哪些zabbix的模板
nginx监控模板
ping监控模板
mysql监控模板
php-fpm监控模板
Clone:克隆模板
full clone:完全克隆
delete:删除模板
delete and clear:删除模板
54. Zabbix的版本号
3.2的版本
55. 一些不常见的模板,你们是下载别人写好的,还是自己写的
这些模板是公司前辈留下的 我也不清楚
56. Ansible用过哪些模块
Yum模块
Service模块
copy模块
ping模块
shell模块
command模块
user/group模块
57. Ansible你们在公司都用来做啥
用来做批量管理 批量部署 批量运行命令 代码上线 管理服务 比如多台服务器修改配置文件就可以使用ansible来做 节省时间和精力很方便
58. Ansible与salt的区别
Saltstack的优点
1.SaltStack的响应速度要比Ansible快很多。
2.在大规模并发的情况下saltstack是占优势的,不过对于几十台-200台左右的服务器规模来说,ansible也是可以的
Ansible的优点
3.SaltStack使用ZeroMQ进行数据传输,ZeroMQ本身数据传输不支持加密Ansible使用标准SSH连接传输数据,不需要在远程主机上启动守护进程,并且标准SSH数据传输本身就是加密传输,这样远程主机不容易被攻击
4.从工具本身的运维角度来说,Ansible要比SaltStack简单很多
5.Ansible的Playbook语法要比SaltStack的State语法具有更好的可读性
59. 你们公司有多少服务器
我们公司有150台服务器
60. Playbook都写过什么
批量部署redis集群 源码安装mysql这些应用 LNMP+电商
61. Redis有哪些数据类型
String(字符串类型)
hash(哈希 散列类型)
list(列表类型)
set(集合类型)
sorted set(有序集合类型)
62. DNS原理
DNS主要是用来做将主机名和域名转换为IP地址的工作
第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器.
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回.
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址.
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址.
第五步:重复第四步,直到找到正确的纪录.
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机.
63. 你遇到过哪些棘手的问题,怎么解决的
Mysql从库宕机:
查看从库上mysql的错误日志,里面有记录主从挂掉时的binlog信息。
有了binlog和postion信息后,只需要重新在从库上进行change master to配置即可。配置后开启slave状态,没有报错
查看slave状态,发现slave已经正常了,开始进行延时数据恢复。
64. 访问网站的流程
首先访问本地缓存,缓存里有就直接返回,没有的话就直接访问DNS服务器 找相应的IP地址,找到后进入服务器主机里面找配置文件在配置文件里面有相关的目录之类,找到相关的目录后根据目录访问到web页面,将结果展示给用户,并缓存一份供下次访问
65. Shell脚本写过哪些
日志切割脚本 监控mysql主从脚本 检测IP存活脚本
66. 说一下shell脚本监控mysql主从的思路
设置参数:数据库的用户和密码
使用截取命令截取SQL和IO线程的状态
判断状态是否是双yes
67. 说一下shell脚本监控公司网段IP是否存活的思路
设置for循环 将所有IP纳入for循环
使用ping命令测试IP
$?判断上条命令是否为0
为0则通
68. CDN有哪些厂家,你们公司用的哪家
目前国内的cdn厂商品牌非常多,总体分为几大类。
1.“云”厂商
以阿里云、腾讯云、UPYUN(又拍云)为代表的云cdn提供商,多为新兴服务,基于大数据趋势有资本投入到细分市场领域,可以为客户提供整体的CDN服务。
2.创新型厂商
以云帆为代表的创新型cdn提供商,通过众包带宽和P2P技术的模式来拓展节点,实现无限节点的CDN服务模式。
3.传统厂商
传统的专业cdn提供商主要包括蓝汛通讯、网宿科技和帝联科技等,通过企业自身建设的服务器,提供专业的CDN服务。不过近年来,传统厂商因为技术和价格等因素,受到了来自新型厂商的重创。
4.其他厂商
这里包括以 UCloud、七牛为代表的代理CDN厂商,和一些为互联网企业自建的CDN平台等。
69. 你最熟悉的一个项目是哪个,在里面主要负责什么
我最熟悉的是我们公司的云端日志分析系统的项目 是一个EFK日志分析项目
我在这里面主要负责配置filebeat做数据收集
70. Hadoop有三种运行方式,是哪三种
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
1.独立(本地)运行模式:无需任何守护进程,所有的程序都运行在同一个JVM上执行。在独立模式下调试MR程序非常高效方便。所以一般该模式主要是在学习或者开发阶段调试使用 。
2.伪分布式模式: Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。
3.完全分布式模式:Hadoop守护进程运行在一个集群上。
71. 登录docker容器的方式有哪些
使用docker attach
使用SSH
使用nsenter
使用exec
72. Mysql和你nosql的区别
mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,结构稳定、便于查询,可以保证数据的一致性,但缺乏灵活性,读取速度较慢。
NOSQL,即非关系型数据库,比如redis它是缓存数据库,是将数据存储在内存中,缓存的读取速度快,能够很大的提高运行效率,不用局限于固定的结构,减少了时间和空间上的开销,但是很难保证数据一致性
73. 你们公司上线的流程是什么
使用jenkins+gitlab实现自动上线
74. 你们公司上线周期是多长
一周一次 周四上线
75. 你们要备份的数据有哪些
用户信息 用户访问数据
76. 怎么查看域名过期时间
看域名过期时间,有多种方式,如果是自己的域名,可以直接在域名管理中,查看域名过期时间,如果是他人域名,则可以通过whois等工具来检测。
1、查询自己的域名过期时间
首先进入云服务商会员中心,在会员中心,点击域名管理。在域名管理界面,可以看到名下的域名列表,其中到期日期,可以计算出域名过期时间。
2、查询所有域名过期时间
如果想查询任意一个域名过期时间,则可以采用whois工具来实现。
在whois页面,输入需要查询的域名。点击查询后,可以得到whois信息,其中有一项是域名到期日期。不过whois查询到的信息,仅供参考,无法作为明确信息使用。
77. 如何防范ddos攻击
ddos deflate
1.过滤不必要的服务和端口
可以使用Inexpress、Express、Forwarding等工具来过滤不必要的服务和端口,即在路由器上过滤假IP。
2.异常流量的清洗过滤
通过DDoS硬件防火墙对异常流量的清洗过滤,通过数据包的规则过滤、数据流指纹检测过滤、及数据包内容定制过滤等顶尖技术能准确判断外来访问流量是否正常,进一步将异常流量禁止过滤。
3.分布式集群防御
这是目前网络安全界防御大规模DDoS攻击的最有效办法。如一个节点受攻击无法提供服务,系统将会根据优先级设置自动切换另一个节点,并将攻击者的数据包全部返回发送点,使攻击源成为瘫痪状态,从更为深度的安全防护角度去影响企业的安全执行决策。
4.高防智能DNS解析
高智能DNS解析系统与DDoS防御系统的完美结合,为企业提供对抗新兴安全威胁的超级检测功能。同时还有宕机检测功能,随时可将瘫痪的服务器IP智能更换成正常服务器IP,为企业的网络保持一个永不宕机的服务状态。
78. 你们公司用过哪些阿里云服务器
云服务器ECS、云数据库RDS、负载均衡SLB和对象存储OSS。还有CDN
79. ELK日志分析主要分析哪些参数
系统日志和服务日志 比如nginx的access.log日志和error.log日志
分析比如502、503这些错误
80. ELK用过哪些插件
input插件:file,http,kafka,rabbitmq等
filter插件:
grok(号称将非标准化的日志数据转换成标准化并且可搜索数据最好的方式,常用于处理Niginx,sysLog等日志)
drop(跳过某些日志,不进入output)
geoip(获取地理信息)
81. Jenkins用过哪些插件
Ssh Build
Git:
支持使用Github、GitLab、Gerrit等系统管理代码仓库
配置Gitlab的相关认证,同时也支持GitLab的Webhook触发。
这个插件支持在Jenkins的构建过程中执行Python脚本。
HR
82. 做一下自我介绍
面试官您好,我叫陈振霄,来自河北,今天来我们公司是应聘自动化运维工程师的职位,2016年毕业于武昌理工学院,本科学历,所学专业是计算机科学与技术,目前有三年的工作经验,毕业后就职于北京联华信科技有限公司,工作至今,我在公司做的工作主要是服务器应用的维护调优等,监控服务器应用的状态,协助开发人员做代码的上下线,分析系统日志和应用日志等等这些工作,我还参与过公司DevOps体系建设,提出并主导公司自动化运维的设计,参与公司系统应用架构的体系建设与维护,以及持续集成与部署的架构设计,我本人性格沉稳内敛,遇事冷静,对待工作认真负责,私下也喜欢学习新知识;近段时间对我们公司做了一些了解,我们公司属于发展中企业,在IT行业里是很具有发展前途的,我们公司所做的产品是目前市场上比较先进的,所以我来贵公司面试自动化运维工程师的职位,希望可以跟着公司一起发展,尽我的微薄之力为公司创造利益,在为公司做贡献的同时,也可以提升自己的能力,希望贵公司可以给我这样一个机会。我的讲述完毕,您有什么想问的吗?
83. 你对加班怎么看
加班很正常,我在上家公司也经常加班,我认为加班不一定就是一件苦事,加班也是一种提升自己、锻炼自己的过程,我现在也是一个人,下班也没什么事,加加班也没什么
84. 你对出差怎么看
出差可以增长自己的见识,接触形形色色的人,锻炼自己的沟通和随机应变的能力,我也出差过,感觉每次都很有收获
85. 你的上家公司有几个运维
我们上家公司有四个运维
86. 你的汇报对象是谁
运维经理
87. 你平时有什么业余爱好
看看书学习些新知识 爬山 看电影
88. 你的职业规划是啥
我要在一年内彻底融入公司 了解公司的流程 尽自己的努力为公司创造更多的利益,两年后向运维开发发展,了解运维开发,自学一门语言,争取可以在三年内可以成为运维开发
89. 如果让你入职了你打算怎么开展你的工作
我会先了解公司架构 熟悉我的上级和同事,然后通过他们再熟悉公司的日常工作,从领导那里了解自己该做的工作,对自己的工作制定一个计划,开展工作。
90. 你还有什么想问我的
咱公司有多少台服务器 运维有几个人 咱公司的上线流程是怎么样的 周期是多长
91. 你上家公司的薪资是多少
11K
92. 你的薪资构成是咋样的
岗位工资+绩效 岗位工资8k 绩效3k
93. 你们公司在哪,平时怎么上班
海淀区中关村东路18号1号楼c-302室
94. 你现在住在哪里
海淀区马连洼
95. 如果你跟领导意见不一样的时候,你怎么处理
先表明态度服从领导安排 然后私下找领导商议,提出自己的方案 讲出领导方案的欠缺,说出自己方案的优点 希望领导采纳。不管领导采不采纳,不管是用哪个方案,自己都会尽最大的努力好好去做。
96. 你最近再看或者学习什么新技术
我最近在看devops开发运维训练营 分布式服务架构这几本书 学习OpenStack和K8S这些技术
97. 你离职的原因是什么
上家公司想派我去南方出差至少半年,相当于长期发展,我觉得很不方便离家太远 就离职了
98. 你在上家公司有什么让你感到自豪的事情
公司有个新人将数据删除了 公司其他人不敢上手去做 我主动请示去解决这件事
我了解一个叫做extundelete的工具,所以我是使用这个工具将数据恢复的
99. 用三个词表达自己
沉稳 内敛 认真
100. 你最大的优点是什么
敢想敢做 勇于尝试 喜欢钻研
101. 你觉得你的缺点是什么
肚子里墨水不多 还有很多需要学习的地方 性格不是很外向
补充
102. 常用协议的端口号
POP3 TCP 110
IMAP 143
SMTP 25 简单邮件传输协议
SSH 22 (LINUX远程管理)
Telnet 23 远程登录
HTTP 80 超文本传输协议
HTTPS 443 安全文本传输协议 应用了安全套接字层可以加密压缩
FTP(控制) 21 文件传输协议
FTP(数据) 20
NTP UDP 123
DHCP 67
DNS 53
SNMP 161 简单网络管理协议
TFTP 69 简单文件传输协议
103. 常用服务的端口
Apache 80
Nginx 80
SQLServer:1433
Oracle:1521
MySQL:3306
Tomcat:8080
Redis 6379
Elasticsearch 9200
Logstash 9600
Kibana 5601
Zabbix-server 10051
Zabbix-agent 10050
Nagios 5666
104. 常见http代码含义
200 - 服务器成功返回网页
404 - 请求的网页不存在
503 - 服务不可用
301 (永久移动) 请求的网页已永久移动到新位置。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
304 (未修改) 自从上次请求后,请求的网页未修改过。
400 (错误请求) 服务器不理解请求的语法。
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页
408 (请求超时) 服务器等候请求时发生超时。
409 (冲突) 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
501 (尚未实施) 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
105. 关于数据库的操作
进入mysql 命令行: mysql -uroot –p
查看所有数据库: show databases;
创建数据库: create database wg charset utf8;
删除数据库: drop database wg;
选择数据库: use databases;
查看所有表: show tables;
查看创建数据库的语句:show create database databasename;
查看创建表的语句:show create table tablename;
查看表结构:desc tablename;
Create databases 库名;
Create table 表名(ID int(10) null,name varchar(10));
Insert into 表名 values(1,’名字’);
Delete from 表名 where ID=1;
update 表名 set age=18 where name=‘wg’;只修改名字是网工的
select name from 表名 where age=18;
106. Nginx的五种调度算法
1 rr轮询算法:
依次将用户的访问请求,平均的分配到后端的web集群中每个节点,此种算法不会考虑每个节点的性能,所以比较适用于所有节点的性能一致的情况
2 wrr权重算法:
根据设定的权重值,权重值越大,被配到的请求次数也就越多,有效的解决了rr算法的缺点
3 ip_hash算法:
根据用户访问的真实ip生成一个hash表,此后,同一个ip地址的访问请求都将会分配到这个节点上,可以解决session会话共享的问题
4 url_hash:
根据用户访问的url的hash结果,使每个url定向到同一个后端服务器上
5 fair:
fair是更加智能的负载均衡算法,此种算法可以根据页面大小的和加载时间长短智能的进行负载均衡,也就是根据后端节点的响应时间来分配请求,响应时间短的则优先分配,Nginx本身不支持fair,如果需要则必须下载nginx的upstream_fair模块
107. LVS的10种调度算法
1 静态算法:
1 rr(round robin):轮询调度算法:
轮询调度算法的原理就是依次将用户的访问请求,平均的分配到每一台web服务节点上,从1开始,到最后一台服务器节点结束,然后在开始新一轮的循环,这种算法简单,但是没有考虑到每台节点服务器的具体性能
2 wrr(weight):权重调度算法
由于每台服务器的性能会高低不同,wrr将会根据管理员设定的权重值来分配访问请求,权重值越大的,被分到的请求数也就越多,此种算法有效的解决了rr轮询算法的缺点
3 sh(source hashing)源地址散列:
主要实现会话绑定,解决session会话共享问题,源地址散列会根据请求的源ip地址,作为关键字,在静态分配的hash表中找出对应的服务器,若该服务器没有超过负荷,就将请求分配到该服务器
4 dh(destination hashing)目标地址散列,把同一个ip地址的请求,发送给同一个server
目标地址散列调度算法是针对目标ip地址的负载均衡,是一种静态映射算法,把目标ip地址作为关键字,在静态分配的hash表中找到对应的服务器,若该服务器可用并没有超过负荷,则将请求发送到该服务器
2 动态调度算法:
1 LC(least connection)最少连接:
当有用户发起访问请求时,lc算法将会把请求分配到集群中连接数最少的服务器上
2 wlc(weight least connection scheduling)加权最少连接:
加权最少连接算法是最少连接的升级版,各个服务器用想应的权重值表示其处理连接的性能,默认权重值为1,加权最少连接调度在调度访问请求时,会尽量使服务器的已建立连接和权重值成比例
也就是活动的连接数除以权重,谁小,挑谁
3 sed(shortest expected)最短延迟调度:
在wlc基础上进行改进,不在考虑非活动状态,把当前处于活动状态的数目+1,数目最小的,则接受下次访问请求,+1的目的是为了考虑加权的时候,非活动链接过多,当权限过大,会导致非空闲的节点一直处于无连接状态
4 nq(nerver queue)永不排队,改进的sed
无需队列,如果有rs节点的连接数为0,那么直接将访问请求分配过去,不需要进行sed运算
5 LBLC(locality based leastconnection)基于局部性的最少连接
此算法是根据请求报文的目标ip地址的负载均衡调度,目前主要用于cache集群系统,因为cache集群中的客户请求报文的目标ip地址是变化的,这里假设任何后端服务器都可以处理任何请求,算法的设计目标在服务器的负载剧本平衡的请求下,将相同的目标ip地址的请求调度到同一个服务器,来提高整个web服务的访问局部性和主存cache的命中率,从而调整整个集群系统的处理能力
基于局部性的最少连接调度算法根据请求的目标ip地址找出该目标地址最近使用的rs,若该rs可用,将发送请求,若该服务器不可用,则用最少连接的原则选出一台可用服务器来进行匹配
6 LBLCR(Locality-Based Least Connections withReplication)带复制的基于局部性最少连接
此种算法是针对目标ip地址的负载均衡,该算法根据请求的目标地址ip找出该地址对应的服务组,按最少连接的原则从服务组中选出一台服务器,若服务器没有超载,则发送请求到该服务器,若该服务器超载或者不可用,则按照最小连接的原则从这个集群中选出一台服务器,将该服务器添加到服务组中,在将请求发送到该服务器,同时当该服务器组中有一段时间没有被修改,将最忙的服务器从组中剔除,以降低复制的程度

浙公网安备 33010602011771号