1 ansibler

ansible用了多少个节点

100+

ansible 常用模块

copy,yum file cron,service ping,shell,command

ansible playbook结构组成(核心组件)

Hosts:运行指定任务的目标主机

tasks: 任务

variables: 变量

templates: 模板

handlers: 处理器

roles: 角色

hosts 定义单个主机或组,vars定义变量,remote_user定义执行命令的远程用户,tasks定义执行哪些命令,handlers定义调用哪些

处理器  Ansible为了层次化、结构化地组织 Playbook,使用了角色( roles),可以根据层次结构自动装载变量文件、 tasks以及 handlers等。只需要在 Playbook中使用 include指令即可使用 roles.

ansibler playbook 编写过什么

批量部署nginx

ansible结合playbook批量部署war包项目上线

2 日常工作描述

问题处理:设计并开发高效的问题处理平台和工具,在系统出现异常的时候可以快速/自动决策并触发相关止损预案,快速恢复服务。

问题跟踪:通过分析问题发生时系统的各种表现(日志、变更、监控)确定问题发生的根本原因,制定并开发预案工具。

配置管理:通过配置管理平台(自研、开源)管理服务涉及到的多个模块、多个版本的关系以及配置的准确性。

发布管理:通过构建自动化的平台确保每一次版本变更可以安全可控地发布到生产环境。

容量评估:通过技术手段模拟实际的用户请求,测试整个系统所能承担的最大吞吐;通过建立容量评估模型分析压力测试过程中的数据以评估整个服务的容量。

容量优化:基于容量评估数据,判断系统的瓶颈并提供容量优化的解决方案。比如通过调整系统参数、优化服务部署架构等方法来高效的提升系统容量。

架构优化:为了支持产品的不断迭代,需要不断的进行架构优化调整。以确保整个产品能够在功能不断丰富和复杂的条件下,同时保持高可用性。

3 你们公司you多少台服务器,是怎么规划的

4 zabbix 监控项

官网有好多模板:https://www.zabbix.com/

网络监控

云产品监控:openstack

服务/应用监控:nginx,kafka,zookeeper,mysql,redis,memcached,tomcat...

zabbix 监控mysql那些指标?

zabbix 如何监控mysql 主从延迟?(监控参数:Seconds_Behind_Master 返回值大于0表示有延迟

添加key
[root@yh ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=ck_mysqlyanchii,mysql -e "show slave status\G" 2>/dev/null|egrep 'Seconds_Behind_Master'|awk '{print $2}'

详情查看:https://blog.csdn.net/natmazz/article/details/90581490

 

5 python 常用模块

os,sys,timer,log,radom,re, subprocess ,json,requests

6 都写过那些shell脚本

日常巡检项目都有那些?

日常巡检,日志切割,数据库备份脚本防爆力破解,上线部署脚本 回滚脚本

7 docker

Docker私有镜像仓库?

Harbor 端口:5000

docker 常用命令

Docker环境信息 — docker [info|version]

容器生命周期管理 — docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]

容器操作运维 — docker [ps|inspect|top|attach|wait|export|port|rename|stat]

容器rootfs命令 — docker [commit|cp|diff]

镜像仓库 — docker [login|pull|push|search]

本地镜像管理 — docker [build|images|rmi|tag|save|import|load]

容器资源管理 — docker [volume|network]

系统日志信息 — docker [events|history|logs]

你使用dockerfile 构建过那些镜像?

nginx,tomcat,redis,zookeeper,kafka

docker 关于日志收集,Docker 内置了很多日志驱动,可以通过类似于 fluentd, syslog 这类服务收集日志。都可以使用日志驱动。如果打算用 fluentd 收集某个容器日志,可以这样启动容器:

$ docker run -d \
--log-driver=fluentd \
--log-opt fluentd-address=10.2.3.4:24224 \
--log-opt tag="docker.{{.Name}}" \
nginx

其中 10.2.3.4:24224 是 fluentd 服务地址,实际环境中应该换成真实的地址。

dockerfile vs docker-compose 区别?

docker-compose是编排容器的。例如,你有一个php镜像,一个mysql镜像,一个nginx镜像。如果没有docker-compose,那么每次启动的时候,你需要敲各个容器的启动参数,环境变量,容器命名,指定不同容器的链接参数等等一系列的操作,相当繁琐。而用了docker-composer之后,你就可以把这些命令一次性写在docker-composer.yml文件中,以后每次启动这一整个环境(含3个容器)的时候,你只要敲一个docker-composer up命令就ok了。

dockerfile的作用是从无到有的构建镜像。

dockerfile 编写优化方案?

 

dockerfile常用指令:

FROM:指定基础镜像,必须为第一个命令

 MAINTAINER: 维护者信息

 RUN:构建镜像时执行的命令

 ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget

 COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源

CMD:构建容器后调用,也就是在容器启动时才进行调用。

 ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。

 LABEL:用于为镜像添加元数据

 ENV:设置环境变量

 EXPOSE:指定于外界交互的端口

 VOLUME:用于指定持久化目录

 WORKDIR:工作目录,类似于cd命令

 USER:指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户

 ARG:用于指定传递给构建运行时的变量

ONBUILD:用于设置镜像触发器

docker 私有仓库都有那些

Harbor 监听端口:5000

docker 镜像分层技术,为什么要搞分层技术(是为了实现节约资源,达到资源共享)

最为典型的就是镜像的分层技术——aufs Another Union File System的缩写,支持将多个目录挂载到同一个虚拟目录下。 

详情查看:https://www.cnblogs.com/richiewlq/p/8933725.html

docker run vs cmd 的区别?

如何为docker容器自定义网段?

docker log收集方案?

 

8 ELK

elasticsearch.yml

http.port: 9200                             可以为Http传输监听定制端口
http.max_content_length: 100mb              设置内容的最大长度

主结点选取的配置

discovery.zen.minimum_master_nodes 属性:默认值是1,该属性定义的是为了组成一个集群,相互连接的候选主结点的最小数目,强烈推荐该属性的设置使用多数原则:(master_eligible_nodes / 2) + 1,既能避免出现脑裂(split-brain),又能在故障发生后,快速选举出新的主结点,例如,有5个候选主结点,推荐把该属性设置为3

索引配置

1,配置索引的分片(shard)和副本(replica)数量

默认的配置是把索引分为5个分片,每个分片1个副本,共10个结点:

index.number_of_shards: 5
index.number_of_replicas: 1

禁用索引的分布式特性,使索引只创建在本地主机上:

index.number_of_shards: 1

index.number_of_replicas: 0

更多配置参考:https://www.cnblogs.com/ljhdo/p/4959412.html

logstash logstash.conf

input 配置参考:https://www.elastic.co/guide/en/logstash/current/input-plugins.html
output 配置参考:https://www.elastic.co/guide/en/logstash/current/output-plugins.html
filter 配置参考:https://www.elastic.co/guide/en/logstash/6.4/filter-plugins.html

ELK 有多少索引?(这里的索引相当于mysql里的db)

按日期自动生成索引;按项目名自定义索引

9  什么是内存溢出,什么是内存泄露

内存溢出out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请 了一个integer,但给它存了long才能存下的数,那就是内存溢出

内存泄露memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光

10 lvs vsnginx 负载均衡原理

11 k8s

Master Node:作为控制节点,对集群进行调度管理;Master Node由API Server、Scheduler、Cluster State Store和Controller-Manger Server所组成;

Worker Node:作为真正的工作节点,运行业务应用的容器;Worker Node包含kubelet、kube proxy和Container Runtime;

12 mysql

mysql 主从原理?

mysql 主从如何保证数据一致性?

mysql主从不同步的原因有哪些?,采取那些处理措施?

详情查看:https://blog.csdn.net/hao_yunfeng/article/details/82392261

mysql 主从延迟过高需要关注那个参数?seconds_behind_master

show slave status会显示双Yes状态,表示同步正常。seconds_behind_master,一般意义上说代表着从库和主库的延迟时间,数值越高意味着延迟越大,但是当SBM为0的时候,并不真正意味着从库已经追上主库了。相信大家都遇到过,从监控图上看,SBM一直都是0,在某一个时间点之后突然就变得非常高。这是由于在主库上执行了一个非常大的event,在这个event在主库上没执行完毕的时候,从库的SBM会显示为0,而当主库执行完毕传到从库上开始执行的时候,就会显示SBM非常巨大了

mysql 性能优化手段?

如何修改 mysql 的root用户名?

mysql> update user set user='bw1611A' where user='root';

mysqldump 备份 如何避免锁表?

一、MyISAM引擎备份
   1. 由于MyISAM引擎为表级锁,因此,在备份时需要防止在备份期间数据写入而导致不一致,

   2. 所以,在备份时使用--lock-all-tables加上读锁
mysqldump -A -F -B --lock-all-tables |gzip >/data/backup/$(date +%F).tar.gz
     3.  特别提示:有关MyISAM和InnoDB引擎的差别和在工作中如何选择,在前面已经详细讲解过了,这里就不在讲了。
二、 InnoDB引擎备份
1. InnoDB引擎为行锁,因此,备份时可以不对数据库加锁的操作,可以加选项--single-transaction进行备份:
mysqldump -A -F -B --single-transaction |gzip >/data/backup/$(date +%F).tar.gz
2. 特别注意:
--single-transaction仅适用于InnoDB引擎。
详情查看:http://www.mamicode.com/info-detail-2340948.html

13  Apache select和Nginx epoll模型区别

select的特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。但是如果连接很少的情况下, select和epoll的LT触发模式相比, 性能上差别不大。
这里要多说一句,select支持的句柄数是有限制的, 同时只支持1024个,这个是句柄集合限制的,如果超过这个限制,很可能导致溢出,而且非常不容易发现问题, 当然可以通过修改linux的socket内核调整这个参数。
epoll的特点:epoll对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高,内核将句柄用红黑树保存的。
对于epoll而言还有ET和LT的区别,LT表示水平触发,ET表示边缘触发,两者在性能以及代码实现上差别也是非常大的。

详情参考:https://blog.51cto.com/oldboy/1855201

14 修改linux的最大文件句柄数限制

修改linux的最大文件句柄数限制的方法:

1)ulimit -n 65535 

在当前session有效,用户退出或者系统重新后恢复默认值

2)修改profile文件:在profile文件中添加:ulimit -n 65535

只对当个用户有效

3)修改文件:/etc/security/limits.conf,在文件中添加:(立即生效-当前session中运行ulimit -a命令无法显示)

注意!添加到最后两行

* soft nofile 32768 #限制单个进程最大文件句柄数(到达此限制时系统报警) 

* hard nofile 65536 #限制单个进程最大文件句柄数(到达此限制时系统报错) 

4)修改文件:/etc/sysctl.conf。在文件中添加:

fs.file-max=655350 #限制整个系统最大文件句柄数 

运行命令:/sbin/sysctl -p 使配置生效

 15 nginx

nginx 常用模块?

nginx 如何保持session 会话保持(数据一致性)?

使用ip_hash算法可以把一个ip映射到一台服务器上,这样可以解决session同步的问题

nginx模块之间的关系?

nginx功能模块基本上分为如下几种类型:

   (1) event module:搭建了独立于操作系统的事件处理机制的框架,以及提供了各具体事件的处理,包括ngx_event_module、ngx_event_core_module和ngx_epoll_module等,Nginx具体使用何种事件处理模块,这依赖于具体的操作系统和编译选项。

    (2) phase handler:此类型的模块也被直接称为handler模块,主要负责处理客户端请求并产生待响应内容,比如ngx_http_module模块,负责客户端的静态页面请求处理并将对应的磁盘文件准备为响应内容输出。

     (3) output filter:也称为filter模块,主要是负责对输出的内容进行处理,可以对输出进行修改,比如可以实现对输出的所有html页面增加预定义的footbar一类的工作,或者对输出的图片的URL进行替换之类的工作。

     (4) upstream:实现反向代理功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端,upstream模块是一种特殊的handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。

     (5) load-balancer:负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。

      (6) extend module:根据特定业务需要编写的第三方模块。

详情查看:https://blog.csdn.net/zhangge3663/article/details/82913170

16 linux 常用命令

参考:https://man.linuxde.net/

20个性能监控命令;https://blog.csdn.net/qq_37242520/article/details/90259671

linux strace 工具 进程诊断,排错 跟踪系统调用和信号量:https://blog.csdn.net/seandba/article/details/73740464

kill -9  pid   进程杀不掉如何处理?

cat /proc/进程ID/status 找到该子进程对应的父进程,将其父进程杀死!