为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
- 174 道运维工程师面试题
- 128道k8s面试题
- 108道shell脚本面试题
- 200道Linux面试题
- 51道docker面试题
- 35道Jenkis面试题
- 78道MongoDB面试题
- 17道ansible面试题
- 60道dubbo面试题
- 53道kafka面试
- 18道mysql面试题
- 40道nginx面试题
- 77道redis面试题
- 28道zookeeper
总计 1000+ 道面试题, 内容 又全含金量又高
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
networks:
mynet:
[root@server1 compose]# mkdir haproxy
[root@server1 compose]# mkdir web1
[root@server1 compose]# mkdir web2
[root@server1 compose]# echo web1 >web1/index.html
[root@server1 compose]# echo web2 >web2/index.html
[root@server1 compose]# cd haproxy/
[root@server1 haproxy]# ls
[root@server1 haproxy]# vim haproxy.cfg
global
maxconn 65535
stats socket /var/run/haproxy.stat mode 600 level admin
log 127.0.0.1 local0
uid 200
gid 200
#chroot /var/empty
daemon
defaults
mode http
log global
option httplog
option dontlognull
monitor-uri /monitoruri
maxconn 8000
timeout client 30s
retries 2
option redispatch
timeout connect 5s
timeout server 5s
stats uri /status
The public ‘www’ address in the DMZ
frontend public
bind *:80 name clear
#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
#use_backend static if { hdr_beg(host) -i img }
#use_backend static if { path_beg /img /css }
default_backend dynamic
The static backend backend for ‘Host: img’, /img and /css.
backend dynamic
balance roundrobin
server app1 web1:80 check inter 1000
server app2 web2:80 check inter 1000
[root@server1 compose]# docker-compose up
[root@server1 compose]# docker-compose start
[root@server1 compose]# docker-compose ps
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128173446551.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128173206120.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
在真机上测试负载均衡情况
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128173636416.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
查看健康检查
[root@server1 compose]# docker-compose stop web1
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128173807228.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
Docker Compose 常用命令
| | |
| --- | --- |
| Build: | 构建或重新构建服务。 |
| kill: | 强制停止服务容器。 |
| logs: | 查看服务的输出。 |
| port: | 打印绑定的公共端口。 |
| ps: | 列出所有容器。 |
| pull: | 拉取服务所需镜像。 |
| rm: | 删除停止的服务容器。 |
| up: | 构建并启动容器。 |
## 2.docker swam
初始化
[root@server1 harbor]# docker swarm init
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130102255851.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
根据提示在其他docker节点上执行命令:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021013010240530.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130102417186.png)
查看swarm集群节点
[root@server1 ~]# docker node ls
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130102449113.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
[root@server1 ~]# docker load -i myapp.tar
[root@server1 ~]# docker load -i visualizer.tar
[root@server1 ~]# docker tag ikubernetes/myapp:v1 myapp:v1
实现负载均衡
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130101913385.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130102121591.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
### 节点升降级
[root@server1 ~]# docker node promote server2
[root@server1 ~]# docker node demote server1
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130110840171.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
[root@server1 ~]# docker swarm leave
[root@server2 ~]# docker node rm server1
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021013011194141.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
加入一个新的节点
重新配置一台server4
加入集群,注意现在的managerserver2,要写server2的ip
[root@server4 ~]# docker swarm join --token SWMTKN-1-5worodwhvojzfl76gmoi3n68encf8ha3gaze302aus6yw7g382-c2d31ke2j0ncdiijo1efgpffu 172.25.1.2:2377
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130111953832.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
[root@server2 docker]# vim daemon.json
{
“registry-mirrors”: [“https://reg.westos.org”]
}
[root@server2 docker]# scp daemon.json server4:/etc/docker/
[root@server2 docker]# scp daemon.json server3:/etc/docker/
[root@server2 docker]# scp -r certs.d/ server4:/etc/docker/
[root@server2 docker]# vim /etc/hosts
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021013011281640.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
### 2.加入本地私有仓库
[root@server1 harbor]# docker-compose start
[root@server1 ~]# docker tag myapp:v1 reg.westos.org/library/myapp:v1
[root@server1 ~]# docker push reg.westos.org/library/myapp:v1
[root@server2 ~]# docker service rm my_cluster
然后把各个节点上已经拉取的镜像删除掉
[root@server2 ~]# docker service create --name myweb --replicas 3 -p 80:80 myapp:v1
[root@server2 docker]# docker service scale myweb=6
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130133056359.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
### 3. 实现业务滚动更新
[root@server2 ~]# docker service update --image myapp:v2 --update-parallelism 2 --update-delay 5s myweb
[root@server4 ~]# systemctl stop docker.service
当把server4down掉的话,业务会自动跳到其他的server上
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130134817137.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
## 3.docker stack部署集群
基于 Docker Swarm 之上来完成应用的部署,面向大规模场景下的多服务部署和管理。
### 1.docker stack与docker-compose的区别:
* Docker stack不支持“build”指令,它是需要镜像是预先已经构建好的, 所以docker-compose更适合于开发场景;
* Docker Compose是一个Python项目,使用Docker API规范来操作容器。
* Docker Stack功能包含在Docker引擎中,是swarm mode的一部分。
* Docker stack不支持基于第2版写的docker-compose.yml ,也就是version版本至少为3。然而Docker Compose对版本为2和3的 文件仍然可以处理;
* docker stack把docker compose的所有工作都做完了,因此docker stack将占主导地位。
### 2.docker stack相关命令:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130233314940.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
参考官方地址[集群部署]( )
在部署之前需要先清除刚才所做的service
### 3.编写yml文件
[root@server2 ~]# mkdir compose
[root@server2 ~]# cd compose/
[root@server2 compose]# vim docker-compose.yml
version: “3.9”
services:
web:
image: myapp:v1
networks:
- mynet
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
visualizer:
image: visualizer
ports:
- “8080:8080”
stop_grace_period: 1m30s
volumes:
- “/var/run/docker.sock:/var/run/docker.sock”
deploy:
placement:
constraints:
- “node.role==manager”
networks:
mynet:
将监控的镜像也上传至本地私有仓库,方便使用,因为yml编写的时候直接从本地仓库拉取
[root@server1 ~]# docker tag dockersamples/visualizer reg.westos.org/library/visualizer:latest
[root@server1 ~]# docker push reg.westos.org/library/visualizer:latest
### 4.执行
[root@server2 compose]# docker stack deploy -c docker-compose.yml my_cluster
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130232442240.png)
### 5.查看效果
[root@server2 compose]# docker service ls
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130233026343.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
我们在监控页面查看
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130232618465.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
## 4.Portainer可视化
### 1.部署portainer
链接: [portainer 目录]( ) 提取码: zzct
[root@server1 ~]# cd portainer/
[root@server1 portainer]# ls
portainer-agent-stack.yml portainer-agent.tar portainer.tar
[root@server1 portainer]# docker load -i portainer-agent.tar
[root@server1 portainer]# docker load -i portainer.tar
将这些镜像统一放到我们搭建的本地私有仓库中
[root@server1 portainer]# docker tag portainer/agent:latest reg.westos.org/library/agent:latest
[root@server1 portainer]# docker tag portainer/portainer:latest reg.westos.org/library/portainer:latest
[root@server1 portainer]# docker push reg.westos.org/library/agent:latest
[root@server1 portainer]# docker push reg.westos.org/library/portainer:latest
[root@server1 portainer]# scp portainer-agent-stack.yml server2:~/
[root@server2 ~]# vim portainer-agent-stack.yml ##对镜像位置进行修改即可
### 最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
### 资料预览
给大家整理的视频资料:
![](https://img-blog.csdnimg.cn/img_convert/f67ee4503a3d164b8c63c0b34bf18ddf.png)
给大家整理的电子书资料:
![](https://img-blog.csdnimg.cn/img_convert/3f30e2a2d027939140edc28ad8edaf25.png)
**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618635766)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
### 资料预览
给大家整理的视频资料:
[外链图片转存中...(img-JIHRF2Sn-1715715987079)]
给大家整理的电子书资料:
[外链图片转存中...(img-1Sy9Gn1n-1715715987079)]
**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618635766)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**