面试题
Nginx模块
你以前用过哪些Nginx模块? upstream 是Nginx负载均衡模块
image geoip stream 这三个模块一定要记住
lvs四层负载均衡(面试题)
Net Address Translator
nat模式
后端服务器支持数量10-20台
使用最少两个网段
可以说是3层负载均衡
流量回流时会路过负载均衡器
direct route
dr模式
后端服务器支持数量100+台
使用一个网段
可以说是2层负载均衡
流量回流时不会路过负载均衡器
tunnel隧道模式
后端服务器支持数量100左右
异地负载均衡 realserver必须使用公网Ip,还得需要服务器支持ip隧道协议
full-nat
版本号
hostnamectl set-hostname http1 修改linux主机名,可永久生效(centos7可用)
Nginx 1.12 用稳定版
apache
MySQL 版本 5.6 5.5 与 5.7 版本差别也很大
zabbix 3.2 版本
/etc/fstab里面只能执行脚本
/etc/rc.local里面能执行命令行的语句
clock -w 将时间修改保存到 BIOS
rpm -qc [服务名] 查看服务的日志地址
服务平稳运行怎么让它出毛病….负载大,并发量大,内存就高了,或者硬盘问题,dd if 命令把硬盘填满
集群的分类
-
四七层负载均衡的区别
lvs是转发客户的请求给真实服务器,而Nginx七层是发送一个新的请求给真实服务器,区别在于如果真实服务器宕机了,Nginx会直接把请求发给没有宕机的服务器,而lvs不会。 lvs是内核上的功能,Nginx是应用上的功能,理论是lvs更灵活速度更快,但很容易坏。
(keepalived的工作原理)
将N台提供相同功能的服务器组成一个服务器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该服务器所在局域网内其他机器的默认路由为该vip),master会发组播(当心跳),当backup收不到vrrp(心跳)包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master(优先级是可以自定义的)
工作拍错步骤:
如果没有zabbix监控一般我会先检查常出事故的单故障节点,如果找不到问题所在会依次排查
网络—>硬件—>操作系统—>进程—>端口—>服务本身
svn、Git的区别:svn是一种集中式的代码管理,,,,,,,,,,,
RabbitMQ :消息队列服务器,大型网站架构特性(敏捷性:有了新的服务,能够快速把服务器部署上去,让服务器上架);电商等秒杀活动,,它还可以做集群的
服务器用的redis、memcache到底部署哪个,是开发架构师说了算,git、svn(小乌龟)也是同样的道理;
ansible:puppet 12年特别火,saltstack 同类的产品要知道几个
kickstart:配置pxe所需要的工具,cobbler就没啥必要去研究它了
马云:去IOC运动
单机架构:
初创的公司先招
开发架构师,开发(php)因为便宜比java开发便宜
产品离上线接近一个月,开始招运维工程师
(面试的人很可能是开发架构师,不是清楚的了解运维,一定要抓住这种机会)
(虽然招的是运维人员,但是实际上干的是架构师的活)
(服务器的选型等等一两天搞不定,要一周才行)
(你能力越强干的活可能越多,在公司里要少出错)
(/root/www/网站根目录在这里,太正常了,开发遗留的原因)
lnmp 架构:
httpd (真实WEB)服务器最好2台
需要Nginx+php 一台
mysql 一台
vip (虚拟IP浮动资源)在这两个机器上做出第三IP来
A A 双主 这个就是高可用做出来的第三个ip叫做VIP
数据备份 一台
什么时候该上高可用,什么时候该上负载均衡,对现实情况的把握很关键
mycat 的主要功能是读写分离,它有高可用的功能,但这只是它的副业
Nginx 的 静态页面 并发理论值为5万,实际工作中8K到10K
- pv 并发 最多500QPS
- 架构
- 你们公司网站平时的峰值并发是多少 50左右吧CDN加速/异地缓存搞定的,如果还是不行,短期内可以上云服务,之后搭建分布式集群
- 从运维的角度如何看待Nginx的优化:其实就是架构上的优化,有没有做负载均衡,高可用等。
- 画一下你们上家公司的网站架构
- 如何升级架构
- 应用分离
- 加缓存 消息队列服务器(活动秒杀时最常用)
- 应用分离
lvm logical volume manager 逻辑卷管理器
lvs linux virtualization server 4层负载均衡 是tcp协议
Nginx 7层负载均衡是http协议
Nginx 做负载均衡:方便、简单、灵活。
原则:驱离单故障节点
日志切割分析
-
常用字段
1 远程客户端真实IP
4 服务器时间
7 记录请求的URL和HTTP协议
9 200、403等请求状态
10 发送给客户端的字节数
-
统计2017年9月5日 一天内访问最多的10个IP(ip top10)
grep '05/Sep/2017' cd.mobiletrain.org.log | awk '{ ips[$1]++ } END{for(i in ips){print i,ips[i]} } '| sort -k2 -rn | head -n10
-
统计2017年9月5日 每个URL访问内容总大小($body_bytes_sent)
grep '05/Sep/2017' sz.mobiletrain.org.log | awk '{ urls[$7]++; size[$7]+=$10} END{for(i in urls){print urls[i],size[i],i}}'| sort -k1 -rn | head -n10
-
统计2017年9月5日 IP访问状态码为404及出现次数($status)
grep '05/Sep/2017' sz.mobiletrain.org.log | awk '{if($9="404"){ip_code[$1" "$9]++}} END{for(i in ip_code){print i,ip_code[i]}}'
-
统计前一分钟的PV量
date=$(date -d '-1 minute' +%Y:%H:%M);awk -v date=$date '$0 ~ date {i++} END{print i}' /var/log/nginx/access.log
apached的工作模式?
介绍下特点,说明什么情况下采取不同的工作模式?
-
apache 3种工作模式
prefork worker event
- prefork 是一种进程,进程去请求处理,容易消耗内存但是稳定。某个进程出现问题不会影响其他请求,要求稳定时候使用
- worker使用多个子进程,每个子进程有多个线程,使用线程去处理请求,消耗内存小,稳定不好,在访问量多的时候使用
- evnent 为了解决keep--alive 保持长连接工作模式,不支持用在https
DNS采取了TCP和UDP协议,什么使用采取TCP
-
什么时候用UDP? 为什么要这么设计?
DNS有2种情况,一种是区域传输,一种域名解析
-
区域传输时,
一个区主DNS从自己本机数据文件中读取该区DNS信息,而辅助服务器则从主DNS服务器中读取该DNS数据信息,传输协议TCP
-
域名解析时,
首选通信协议是UDP,使用UDP传输,不经过三次握手,这样DNS服务器负载更低,响应更快
但是当域名解析反馈长度报文长度超过512字节时
则不能使用UDP协议进行解析,必须使用TCP
-
NFS 是什么技术?遇到了什么问题
- 用NFS做存储访问比较多时候会很卡,
提升交换机上连带宽,提升千兆或者万兆
VMware里有几种网络模式:
有两种模式,一种接口,NAT和hostonly(个人主机模式),桥接接口。
nginx 和apche的区别
为什么用Nginx,不用apache
Nginx工作模型,和apache的工作模型
eppoll模型,select模型