先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
正文
- [6. 企业级OpenStack需要些什么呢?](#6_OpenStack_116)
- [7. OpenStack社区与文档的链接](#7_OpenStack_180)
+ [二、OpenStack的部署](#OpenStack_195)
+ - [1. 环境准备](#1__197)
- [2. 部署OpenStack R版](#2_OpenStack_R_255)
- * [2.1 安装 NTP 时间同步服务](#21__NTP__257)
* [2.2 启用 OpenStack 存储库](#22__OpenStack__301)
* [2.3 安装 SQL数据库-controller](#23__SQLcontroller_333)
* [2.4 安装消息队列服务-controller](#24_controller_379)
* [2.5 安装Memcached缓存-controller](#25_Memcachedcontroller_434)
* [2.6 安装 etcd 分布式存储-controller](#26__etcd_controller_462)
- [3. 安装 keystone 认证服务-控制节点](#3__keystone__502)
- [4. 安装 Glance 镜像服务-控制节点](#4___Glance__716)
- * [4.1 安装与配置](#41__748)
* [4.2 对镜像服务进行验证](#42___900)
- [5. 安装 Nova 计算服务-控制节点](#5___Nova__943)
- * [5.1 配置MySQL数据库及授权](#51__MySQL_1015)
* [5.2 创建`nova`用户](#52_nova_1046)
* [5.3 创建`placement`用户](#53_placement_1084)
* [5.4 安装软件并配置 Nova](#54___Nova_1125)
* [5.5 启用placement API访问](#55_placement_API_1192)
* [5.6 同步数据库的设置](#56__1217)
- [6. 安装 Nova 计算服务-计算节点](#6___Nova__1269)
- [7. 添加 计算节点 到 controller的数据库中-控制节点](#7____controller_1366)
- [8. 安装 Neutron 网络虚拟化服务](#8__Neutron__1440)
- * [8.1 控制节点安装](#81__1455)
* [8.2 计算节点安装](#82__1748)
* [8.3 Neutron网络虚拟化验证-控制节点](#83_Neutron_1849)
- [9. 安装 Horizon服务-控制节点](#9__Horizon_1873)
- [10. 访问验证Web页面](#10_Web_1945)
- [11. 创建虚拟网络并启动实例](#11__1965)
- [12. Web界面操作示范](#12_Web_2179)
- * [12.1 \*\*创建实例\*\*](#121__2181)
* [12.2 \*\*创建项目\*\*](#122__2209)
* [12.3 创建用户](#123__2222)
* [12.4 配置安全组](#124__2229)
* [12.5 手动添加镜像](#125__2239)
* [12.6 ※网络配置※](#126__2247)
- [13. 安装Cinder 块存储服务](#13_Cinder__2291)
- * [13.1 安装cinder块存储服务—控制节点](#131_cinder_2326)
* [13.2 安装cinder块存储节点](#132_cinder_2435)
- [14. 维护openstack平台的考虑因素](#14__openstack_2572)
- [15. Shell脚本创建用户](#15_Shell_2586)
一、先说说云计算的前世今生
IT系统架构的发展到目前为止大致可以分为3个阶段:
- 1、 物理机架构阶段:
应用部署和运行在物理机上。 比如企业要上一个ERP系统,如果规模不大,可以找3台物理机,分别部署Web服务器、应用服务器和数据库服务器。 如果规模大一点,各种服务器可以采用集群架构,但每个集群成员也还是直接部署在物理机上。 早期都是这种架构,一套应用一套服务器,通常系统的资源使用率都很低,达到20%的都是好的。
- 2、虚拟化架构阶段:
决定了物理服务器的计算能力越来越强,虚拟化技术的发展大大提高了物理服务器的资源使用率。 这个阶段,物理机上运行若干虚拟机,应用系统直接部署到虚拟机上。 虚拟化的好处还体现在减少了需要管理的物理机数量,同时节省了维护成本。
- 3、云计算架构阶段:
虚拟化提高了单台物理机的资源使用率,随着虚拟化技术的应用,IT环境中有越来越多的虚拟机,这时新的需求产生了,“如何对IT环境中的虚拟机进行统一和高效的管理”。有需求就有供给,云计算登上了历史舞台。
什么是云计算?
云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 通过互联网进入可配置的计算资源共享池(资源包括网络,计算,存储,应用软件,服务)
云计算的服务类型
二、OpenStack介绍
1. 项目起源
- OpenStack是一个开源的 IaaS 云计算平台,是一系列软件开源项目的组合。由NASA(美国国家航空航天局)和Rackspace(一家美国的云计算厂商)合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权的开源代码项目。
- 2010年 Openstack项目成立,虽然诞生时间不长,但其发展之迅速,在云计算领域的影响力扩展迅速成为业内所有人都不得不关注的焦点。
- OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。它是一个正在开发中的云计算平台项目,根据成熟及重要程度的不同,被分解成核心项目、孵化项目,以及支持项目和相关项目。每个项目都有自己的委员会和项目技术主管,而且每个项目都不是一成不变的,孵化项目可以根据发展的成熟度和重要性,转变为核心项目。
2. 选择OpenStack的原因
- OpenStack 提供了一个非常好的有关如何来打造类似于主要公有云比如亚马逊( AWS )和 Google Cloud Platform ( GCP )的弹性私有云的样板。OpenStack 将 AWS/GCP 式样的的基础架构即服务( IaaS )推向了每个用户。它就是能实现企业内部 DevOps 的终极平台。
- OpenStack 能在企业内部提供类似的平台。私有云可以基于公有云模型来构造,使得开发者同时拥有集中式 IT 控制和支配。本质上,它是两者融合的最佳平台,这也是 OpenStack 驱动的私有云的真正价值。
- 社区活跃,学习资料较多,有问题很容易能找到帮助。
- 使用python开发,遵循apache 2.0开源协议,只需修改一个Logo,都能拿来商业化。
- 架构非常的灵活,可扩展性强。
3. OpenStack和其他虚拟化技术的区别?
OpenStack云管理平台框架,有很多功能组件,比如说包含计算虚拟化、存储虚拟化、网络虚拟化、Image管理、身份认证管理、计费管理、前端展示模块等等。
KVM、XenServer、VMware只是计算虚拟化模块调用的后台实现技术而已。
4. OpenStack主要的组件服务
项目名称 | 核心服务 | 描述 |
---|---|---|
仪表盘 | Horizon | 提供了一个基于web的操作界面门户,通过web界面与OpenStack底层服务交互,就可以实现 建云主机,分配网络,配安全组,加云盘等功能。 |
计算服务 | Nova | 是OpenStack云计算架构控制器,管理 OpenStack 云里的计算资源、网络、授权、和扩展需求。是OpenStack中最核心的服务。 |
对象存储服务=========== | Swift | 为OpenStack提供分布式的、最终一致的虚拟对象存储服务;适用于一次写入,多次使用。例如百度网盘, 这个服务不是必须的,是可选服务。Swift 有能力存储数十亿计的对象, Swift 具有内置冗余、容错管理、存档、流媒体的功能。并且高度扩展,不论大小(多个 PB 级别)和能力(对象的数量)。 |
镜像服务 | Glance | 存储和检索虚拟机磁盘镜像系统,OpenStack计算会在实例部署时使用此服务。管理镜像模板的仓库,为虚机提供镜像模板。 |
网络服务 | Neutron | 确保为其它OpenStack服务提供网络服务,为虚拟机提供网络连接服务,就像物理的交换机和路由器。 |
块存储服务 | Cinder | 为OpenStack运行实例而提供的持久性块存储服务。它的可插拔驱动架构的功能有助于创建和管理块存储设备。为虚拟机提供额外的硬盘。 |
认证服务 | Keystone | 为OpenStack各服务组件提供认证和授权服务,为所有的OpenStack服务提供一个端点目录。 |
监控计费服务 | Ceilometer | 为OpenStack的监控计费服务、基准、扩展性以及统计等目的提供监测和计量。为公有云准备的,私有云不需要。属于高级服务。 |
编排服务 | Heat | 为OpenStack编排服务,基于模板自动化部署服务,属于高级服务。类似于ansible的playbook剧本。 |
数据库服务 | Trove | 为用户在OpenStack的环境提供可扩展和可靠的关系和非关系数据库引擎服务。 |
项目名称 | 共享服务 |
---|---|
数据库服务 | MariaDB ; MongoDB |
消息传输 | RabbitMQ |
缓存 | Memcached ; NTP |
存储 | CEPH、GFS、LVM、ISICI |
高可用和负载均衡 | Haproxy、Keepalive、LVS |
5. OpenStack的版本
OpenStack是按照A B C D E F G …的顺序发布版本的,截止到目前19年12月份最新的发行版是 Train
6. 企业级OpenStack需要些什么呢?
- 99.999%的API可用性以及可扩展的控制平面
有高可靠性要求的应用需要高可靠的云API向全新的云和 DevOps 模型转型的一个关键能力是提供云原生应用在弹性云中的容错能力。要使一个应用能实时地适应不同组件的出错,云 API 需要有更高的可用性。
- 健壮的管理和安全模型
安装只是管理 OpenStack 的开端。一个真正的云操作系统将提供一个从设计上就能保证基础设施团队能成功交付服务的以运维为核心的云管理工具套件。
+ 可重用的架构模型,通常使用参考网络架构将小集群或者组连接在在一起
+ 初始云安装和部署
+ 典型的日常云运维工具,包括日志、系统测量值和相关度分析
+ 供运维人员使用的用来做整合和自动化的 CLI(命令行界面)和 API(应用程序编程接口)
+ 用于可视化和分析的运维图形界面
- 开放的架构
OpenStack 的开放架构,能够减少厂商锁定,进而降低风险。
-
混合云兼容性
-
目前环境下,混合云兼具私有云安全性与公有云的弹性扩展能力,混合云必然成为企业云部署的第一选择。根据应用类别和业务特点,将关键应用、性能敏感型、中高密级应用部署在私有云,其他应用部署在公有云;将同一个应用的不同层部署在不同云中,时延敏感业务就近用户部署,提升最终用户体验。
-
混合云的难点在于解决应用的移植性问题。如果你需要一个公有云和私有云组合而成的混合云,不管应用在某个云中被开发,还是要在两个云之间做迁移,或者从一个云到另一个云,应用的可移植性都是必须的。当你选定一个应用以及它的云原生的自动化框架,并将它们从一个云移动到另一个云中,一些关键的东西必须保持一致:
- 性能相对平稳
- 底层的存储、网络和计算架构保持一致或者近似
- 应用的自动化框架必须和两个云中的 API 都兼容
- 每个云中,运行应用的总所有成本( TCO)都应该在1/2-2倍的范围之内
- 还有行为上的兼容性,意味着非 API 功能也需要吻合
- 支持与相关公有云 API 的兼容
-
-
可扩展的弹性架构
- 当在系统中增加资源后,其性能会按照所增加资源的某种比例增加时,我们就可以说其服务是可扩展的。
- 从多方面看, OpenStack 自身就是个高扩展性的系统。它被设计为松耦合、基于消息通信的架构,这些技术已经在各种中级到高级扩展的系统中得到应用和验证,它们也可以适应小规模的部署。问题在于配置和部署OpenStack时所做的设计上的决定。
- 一部分默认的配置,以及许多厂商的插件和方案在设计时并没有考虑扩展性。
- 基础架构从来没有真正的弹性过,可是它的特性能支持弹性的应用在它上面运行。一个弹性云,需要被设计为每个资源,比如虚机、块存储和对象存储,其成本尽可能的低。
-
全面的支持和服务
OpenStack 作为一个可扩展的、打造下一代弹性云的基础架构,尽管它还不是很完美。但作为一个开源项目,它的吸引力确实不容小视。基于平台开放,会有越来越多的力量促使它更完善和强大,采用 OpenStack 意味着企业云平台会更加自主可控,并实现技术沉淀和自动化运维水平的提升。
7. OpenStack社区与文档的链接
社区: | www.openstack.org ; wiki.openstack.org |
---|---|
邮件列表: | http://wiki.openstack.org/MailingLists#General_List |
贡献代码: | http://wiki.openstack.org/HowToContribute |
源代码管理: | http://wiki.openstack.org/GerritWorkflow |
文档: | http://docs.openstack.org |
二、OpenStack的部署
1. 环境准备
准备两台优化好的虚拟机
CPU | 支持 intel64 或 AMD64 CPU扩展,并启用AMD-H或intel VT硬件虚拟化支持的64位x86处理器 |
---|---|
系统版本 | CentOS7.6 版本 |
内存 | 根据实际测试环境选择 >=2G |
硬盘容量 | 根据实际测试环境选择 >=50G |
防火墙 | 需要关闭 |
SELINUX | 需要关闭 |
YUM源 | 阿里云的Yum源 |
虚拟机分配情况
主机 | IP地址 | 主机名 | 注意事项 |
---|---|---|---|
控制节点 | NAT网络 192.168.1.10 | controller | 至少4G,要开虚拟化 |
计算节点 | NAT网络 192.168.1.20 | computel | 至少2G,要开虚拟化 |
配置域名解析
[root@computel ~]# cat /etc/hosts
192.168.1.10 controller
192.168.1.20 compute1
测试各节点连通性
ping -c 4 controller
ping -c 4 compute1
插件密码参考(测试)
密码名称 | 描述 |
---|---|
123456 | 数据库的根密码 |
123456 | admin 用户密码 |
123456 | 块设备存储服务的数据库密码 |
123456 | 块设备存储服务的 cinder 密码 |
123456 | demo 用户的密码 |
123456 | 镜像服务的数据库密码 |
123456 | 镜像服务的 glance 用户密码 |
123456 | 认证服务的数据库密码 |
123456 | 网络服务的数据库密码 |
123456 | 网络服务的 neutron 用户密码 |
123456 | 计算服务的数据库密码 |
123456 | 计算服务中 nova 用户的密码 |
123456 | RabbitMQ的guest用户密码 |
2. 部署OpenStack R版
2.1 安装 NTP 时间同步服务
- 在controller控制节点安装配置chrony
Chrony是一个开源的自由软件,像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步。相对于NTP时间同步软件,占据很大优势。其用法也很简单
yum install chrony -y
vim /etc/chrony.conf
server ntp1.aliyun.com iburst //向外网同步时间
allow 192.168.1.0/24 //设置时间同步网段
systemctl restart chronyd.service
systemctl enable chronyd.service
- 在compute计算节点安装配置chrony
yum install chrony -y
vim /etc/chrony.conf
server 192.168.1.10 iburst //所有计算节点向controller节点同步时间
systemctl restart chronyd.service
systemctl enable chronyd.service
- 进行时间同步服务验证
[root@computel ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
=========================================================================
^* controller 3 6 17 6 -4061ns[ +163us] +/- 34ms
在安装过程中可以发现,OpenStack项目全程都是用Python开发的。
2.2 启用 OpenStack 存储库
在CentOS上,extras
资源库提供 rpm包,以启用OpenStack资源库。CentOS extras
默认包含该存储库,因此只需安装该软件包即可启用OpenStack存储库。
- 所有节点安装最新版openstack-rocky ,安装其他版本修改后缀名即可
yum install centos-release-openstack-rocky -y
- 所有节点修改yum源到国内清华源
cd /etc/yum.repos.d/
#修改openstack-rocky的源
vim CentOS-OpenStack-rocky.repo
[centos-openstack-rocky]
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.7.1908/cloud/x86_64/openstack-rocky/
#修改ceph源
vim CentOS-Ceph-Luminous.repo
[centos-ceph-luminous]
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.7.1908/storage/x86_64/ceph-luminous/
- 所有节点**安装OpenStack客户端
yum install python-openstackclient -y
2.3 安装 SQL数据库-controller
只在控制节点上运行!根据实际要求使用MariaDB或MySQL;也支持其他数据库。
- 安装数据库软件包
yum install mariadb mariadb-server python2-PyMySQL -y
- 创建和编辑
/etc/my.cnf.d/openstack.cnf
文件
#创建一个[mysqld]部分,并将bind-address 密钥设置为控制器节点的管理IP地址,以允许其他节点通过管理网络进行访问。设置其他键以启用有用的选项和UTF-8字符集:
-----------------------------------------------------
[root@controller ~]# vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.1.10 #监听地址
default-storage-engine = innodb #默认存储引擎
innodb_file_per_table = on #独立表空间文件
max_connections = 4096 #最大连接数
collation-server = utf8_general_ci #默认字符集为UTF8
character-set-server = utf8
- 启动数据库,并设置开机自启
systemctl restart mariadb.service
systemctl enable mariadb.service
- 运行
mysql_secure_installation
安全初始化。为数据库root
帐户选择合适的密码
[root@controller ~]# mysql_secure_installation
Enter current password for root (enter for none): <回车>
Set root password? [Y/n] <n> #设数据库密码
Remove anonymous users? [Y/n] <y> #移除匿名用户
Disallow root login remotely? [Y/n] <y> #禁止root用户远程登录
Remove test database and access to it? [Y/n] <y> #移除test数据库和访问权限
Reload privilege tables now? [Y/n] <y> #重新加载权限表
2.4 安装消息队列服务-controller
消息队列服务通常在控制器节点上运行;OpenStack支持多种消息队列服务,包括RabbitM, Qpid和ZeroMQ
- 安装软件包
yum install rabbitmq-server -y
- 启动消息队列,并设置开机自启
systemctl restart rabbitmq-server.service
systemctl enable rabbitmq-server.service
- 添加OpenStack用户
rabbitmqctl add_user openstack 123456
- 授权用户的配置写入和读取权限
#三个 ".\*" 表示可读可写可配置
rabbitmqctl set_permissions openstack ".\*" ".\*" ".\*"
- 扩展:启用 rabbitmq的管理插件,为了方便日后做监控
#启动后的端口是 15672
systemctl enable rabbitmq-server.service
systemctl restart rabbitmq-server.service
rabbitmq-plugins enable rabbitmq_management
#插件启动以后会监控两个端口(5672、25672)
[root@controller ~]# netstat -lntup|egrep '5672|25672'
tcp 0 0 0.0.0.0:25672 0.0.0.0:\* LISTEN 56252/beam.smp
tcp6 0 0 :::5672 :::\* LISTEN 56252/beam.smp
tcp 0 0 0.0.0.0:15672 0.0.0.0:\* LISTEN 56252/beam.smp
- 浏览器访问
2.5 安装Memcached缓存-controller
memcached服务通常在控制器节点上运行。对于生产部署,建议启用防火墙,身份验证和加密的组合以保护其安全。
- 安装软件包
yum install memcached python-memcached -y
- 修改
/etc/sysconfig/memcached
文件为控制节点IP,也可改为 0.0.0.0
sed -i 's#127.0.0.1#0.0.0.0#g' /etc/sysconfig/memcached
#配置服务以使用控制器节点的管理IP地址。这是为了允许其他节点通过管理网络进行访问
OPTIONS="-l 0.0.0.0,::1"
- 启动服务,并设置开机自启
systemctl restart memcached.service
systemctl enable memcached.service
2.6 安装 etcd 分布式存储-controller
在控制器节点上运行。etcd是一个分布式,一致的键值存储,用于共享配置和服务发现,特点是,安全,具有可选客户 端证书身份验证的自动TLS;快速,基准测试10,000次/秒;可靠,使用Raft正确分发。
- 安装软件包
yum install etcd -y
- 编辑
/etc/etcd/etcd.conf
文件
[root@controller ~]# vi /etc/etcd/etcd.conf
#[Member]
ETCD\_DATA\_DIR="/var/lib/etcd/default.etcd"
ETCD\_LISTEN\_PEER\_URLS="http://192.168.1.10:2380"
ETCD\_LISTEN\_CLIENT\_URLS="http://192.168.1.10:2379"
ETCD\_NAME="controller"
#[Clustering]
ETCD\_INITIAL\_ADVERTISE\_PEER\_URLS="http://192.168.1.10:2380"
ETCD\_ADVERTISE\_CLIENT\_URLS="http://192.168.1.10:2379"
ETCD\_INITIAL\_CLUSTER="controller=http://192.168.1.10:2380"
ETCD\_INITIAL\_CLUSTER\_TOKEN="etcd-cluster-01"
ETCD\_INITIAL\_CLUSTER\_STATE="new"
- 启动服务,并设置开机自启
systemctl restart etcd.service
systemctl enable etcd.service
3. 安装 keystone 认证服务-控制节点
keystone是OpenStack的身份服务,暂且可以理解为一个与权限有关’的组件。
Keystone项目的主要目的是为访问openstack的各个组件(nova,cinder,glance…)提供一个统一的验证方式,具体的:
openstack是由众多组件构成的一套系统,该系统的功能是对外提供服务,因而我们可以将其定义为一个庞大的软件,没有软件不考虑安全因素,Keystone对于通常的应用场景所不同的是他要解决分布式环境下的统一认证。
- 功能:认证管理,授权管理,服务目录
- 身份验证服务包括以下组件:服务器、驱动、模块
当安装OpenStack自身服务时,用户必须将之注册到其OpenStack安装环境的每个服务。身份服务才可以追踪到哪些OpenStack服务已经安装,以及在网络中定位它们。
- 创建keystone数据库
每个组件都有自己的数据库,能抗的压力更大
mysql -uroot -p
create database keystone;
- 对keystone数据库授权
grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123456';
grant all privileges on keystone.* to 'keystone'@'%' identified by '123456';
flush privileges;
安装和配置的部件
- 安装keystone相关的软件包
yum install openstack-keystone httpd mod_wsgi -y
#wsgi:python项目, 类似于php的fastcgi
#相关资料链接 https://www.cnblogs.com/xiaoyuanqujing/articles/11838819.html
- 编辑/etc/keystine/keystone.conf文件
- 注意:
controller
在此示例中,主机必须是可解析的。
#备份原配置文件,过滤出模块名覆盖到配置文件中
cp /etc/keystone/keystone.conf{,.bak}
egrep -v '^$|^#' /etc/keystone/keystone.conf.bak >/etc/keystone/keystone.conf
[root@controller ~]# vim /etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:123456@controller/keystone #配置数据库访问
[token]
provider = fernet #配置Fernet令牌提供者
- 填充身份服务数据库
su -s /bin/sh -c "keystone-manage db\_sync" keystone
#查看表
mysql keystone -p123456 -e 'show tables'
- 初始化Fernet密钥存储库
#命令行直接复制执行
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
keystone-manage bootstrap --bootstrap-password 123456 \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
配置Apache HTTP服务器
- 编辑 /etc/httpd/conf/httpd.conf 文件
[root@controller ~]# vim /etc/httpd/conf/httpd.conf
ServerName controller #修改主机名
- 创建/usr/share/keystone/wsgi-keystone.conf文件的软链接
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
- 启动Apache HTTP服务,并设置开机自启动
systemctl restart httpd.service
systemctl enable httpd.service
[root@controller ~]# netstat -lntup|grep httpd
tcp6 0 0 :::5000 :::* LISTEN 17417/httpd
tcp6 0 0 :::80 :::* LISTEN 17417/httpd
- 设置环境变量
[root@controller ~]# vim admin-openrc
export OS\_USERNAME=admin
export OS\_PASSWORD=123456
export OS\_PROJECT\_NAME=admin
export OS\_USER\_DOMAIN\_NAME=Default
export OS\_PROJECT\_DOMAIN\_NAME=Default
export OS\_AUTH\_URL=http://controller:5000/v3
export OS\_IDENTITY\_API\_VERSION=3
export OS\_IMAGE\_API\_VERSION=2
#使变量脚本生效
[root@controller ~]# source ~/admin-openrc
[root@controller ~]# env|grep OS
- 创建域、项目用户和角色
#创建域
openstack domain create --description "An Example Domain" example
#创建项目
openstack project create --domain default --description "Service Project" service
#创建平台demo项目
openstack project create --domain default --description "Demo Project" demo
#创建demo用户
openstack user create --domain default --password 123456 demo
#创建user角色
openstack role create user
#将user角色添加到myproject项目和demo用户
openstack role add --project demo --user demo user //该步骤没有返回值
- 验证keystone
#取消环境变量
unset OS_AUTH_URL OS_PASSWORD
#admin用户返回的认证token
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
#demo用户返回的认证token
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name demo --os-username demo token issue
- 创建变量环境脚本并认证
#再创建一个demo-openrc脚本
[root@controller ~]# vim demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
#使用脚本验证返回值,查看admin用户的token信息
source ~/admin-openrc //使环境变量生效
source ~/demo-openrc
#认证
openstack token issue
4. 安装 Glance 镜像服务-控制节点
OpenStack镜像服务对于基础架构即服务(IaaS)至关重要。它接受来自磁盘或服务器镜像的API请求,以及来自最终用户或OpenStack Compute组件的元数据定义。它还支持在各种存储库类型(包括OpenStack对象存储)上存储磁盘或服务器映像。
OpenStack Image服务上运行许多定期进程以支持缓存。复制服务可确保整个群集的一致性和可用性。其他定期过程包括审核员,更新者和收获者。
OpenStack镜像服务包括以下组件:
- glance-api
接受用于图像发现,检索和存储的Image API调用。
- glance-registry(浏览注册表)
存储,处理和检索有关图像的元数据。元数据包括大小和类型等项目。 警告注册表是供OpenStack Image服务使用的私有内部服务。不要将此服务提供给用户。
- Database(数据库)
存储图像元数据,您可以根据自己的喜好选择数据库。大多数部署使用MySQL或SQLite。
- Storage repository for image files(图像文件的存储库)
支持各种存储库类型,包括普通文件系统,对象存储,RADOS块设备,HTTP和Amazon S3。请注意,某些存储库将仅支持只读用法。
- Metadata definition service(元数据定义服务)
供应商,管理员,服务和用户的通用API,可以有意义地定义他们自己的自定义元数据。该元数据可用于不同类型的资源,例如图像,伪像,体积,风味和聚合。定义包括新属性的键,描述,约束以及可以与之关联的资源类型。
4.1 安装与配置
- 添加数据库
在安装和配置Image服务之前,必须创建数据库,服务凭证和API端点。
#使用数据库访问客户端以root用户身份连接到数据库服务器
mysql -u root -p
#创建glance数据库
create database glance;
#授予对glance数据库的适当访问权限
grant all privileges on glance.* to 'glance'@'localhost' identified by '123456';
grant all privileges on glance.* to 'glance'@'%' identified by '123456';
flush privileges;
- 获取admin用户的环境变量
source ~/admin-openrc
- 创建glance用户
openstack user create --domain default --password-prompt glance
- 将管理员admin用户添加到glance用户和项目中
openstack role add --project service --user glance admin
\\该命令不提供任何输出
- 创建glance服务
openstack service create --name glance --description "OpenStack Image" image
- 创建镜像服务API端点
OpenStack使用三种API端点变种代表每种服务:admin、internal、public。
openstack endpoint create --region RegionOne image public http://controller:9292
openstack endpoint create --region RegionOne image internal http://controller:9292
openstack endpoint create --region RegionOne image admin http://controller:9292
- 安装glance包
yum install openstack-glance -y
- 创建images文件夹,并修改属性
#一定要赋予openstack-glance-api.service服务对存储设备的可写权限
mkdir /var/lib/glance/images
chown -hR glance:glance /var/lib/glance/
- 编辑文件 /etc/glance/glance-api.conf
cp /etc/glance/glance-api.conf{,.bak}
egrep -v '^$|^#' /etc/glance/glance-api.conf.bak >/etc/glance/glance-api.conf
[root@controller ~]# vim /etc/glance/glance-api.conf
[database] #数据库访问
connection = mysql+pymysql://glance:123456@controller/glance
[keystone_authtoken] #认证服务访问
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = 123456 #glance用户的密码
[paste_deploy] #认证服务访问
flavor = keystone
[glance_store] #本地文件系统存储和镜像文件位置
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images
- 编辑镜像服务的另一个组件文件 /etc/glance/glance-registry.conf
cp /etc/glance/glance-registry.conf{,.bak}
egrep -v '^$|^#' /etc/glance/glance-registry.conf.bak >/etc/glance/glance-registry.conf
[root@controller ~]# vim /etc/glance/glance-registry.conf
[database]
connection = mysql+pymysql://glance:123456@controller/glance
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = 123456
[paste_deploy]
flavor = keystone
- 同步写入镜像数据库
su -s /bin/sh -c "glance-manage db_sync" glance
- 启动服务
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
4.2 对镜像服务进行验证
- 获取admin用户的环境变量来获取只有管理员能执行的命令的访问权限,并下载镜像
source ~/admin-openrc
wget http://download.cirros-cloud.net/0.3.6/cirros-0.3.6-x86_64-disk.img
#下载一个小型linux镜像进行测试
- 上传镜像
使用QCOW2磁盘格式,裸容器格式和公开可见性将图像上传到Image服务,以便所有项目都可以访问它
openstack image create "cirros" --file ~/cirros-0.3.6-x86_64-disk.img --disk-format qcow2 --container-format bare --public
- 查看上传的镜像
openstack image list
#删除镜像的命令
openstack image delete <ID>
5. 安装 Nova 计算服务-控制节点
使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。
OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。
OpenStack计算服务由下列组件所构成:
nova-api
服务
接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。
nova-api-metadata
服务
接受来自虚拟机发送的元数据请求。
nova-compute
服务
一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。
nova-scheduler
服务
拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。
nova-conductor
模块
媒介作用于nova-compute
服务与数据库之间。它排除了由nova-compute
服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要将它部署在运行nova-compute
服务的主机节点上
nova-cert
模块
服务器守护进程向Nova Cert服务提供X509证书。用来为euca-bundle-image
生成证书。
nova-network worker
守护进程
与nova-compute
服务类似,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。
nova-consoleauth
守护进程
授权控制台代理所提供的用户令牌。
nova-novncproxy
守护进程
提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。
nova-spicehtml5proxy
守护进程
提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。
nova-xvpvncproxy
守护进程
提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。
nova-cert
守护进程
X509 证书。
nova
客户端
用于用户作为租户管理员或最终用户来提交命令。
- 队列
一个在守护进程间传递消息的中央集线器。
- SQL数据库
存储构建时和运行时的状态,为云基础设施。理论上,OpenStack计算可以支持任何和SQL-Alchemy所支持的后端数据库,通常使用SQLite3来做测试可开发工作,MySQL和PostgreSQL 作生产环境。
5.1 配置MySQL数据库及授权
- 创建数据库
mysql -u root -p
#创建nova\_api,nova,nova\_cell0和placement数据库
create database nova_api;
create database nova;
create database nova_cell0;
create database placement;
#对数据库进行正确的授权
grant all privileges on nova_api.* to 'nova'@'localhost' identified by '123456';
grant all privileges on nova_api.* to 'nova'@'%' identified by '123456';
grant all privileges on nova.* to 'nova'@'localhost' identified by '123456';
grant all privileges on nova.* to 'nova'@'%' identified by '123456';
grant all privileges on nova_cell0.* to 'nova'@'localhost' identified by '123456';
grant all privileges on nova_cell0.* to 'nova'@'%' identified by '123456';
grant all privileges on placement.* to 'placement'@'localhost' identified by '123456';
grant all privileges on placement.* to 'placement'@'%' identified by '123456';
flush privileges;
5.2 创建nova
用户
source ~/admin-openrc #加载admin环境变量
openstack user create --domain default --password 123456 nova
- 给
nova
用户添加admin
角色
openstack role add --project service --user nova admin
- 创建
nova
服务实体:
openstack service create --name nova --description "OpenStack Compute" compute
- 创建 Compute 服务 API 端点
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
5.3 创建placement
用户
例如,一个资源提供者可以是一个计算节点,共享存储池,或一个IP分配池。placement服务跟踪每个供应商的库存和使用情况。例如,在一个计算节点创建一个实例的可消费资源如计算节点的资源提供者的CPU和内存,磁盘从外部共享存储池资源提供商和IP地址从外部IP资源提供者。
- 创建一个
placement
服务用户
openstack user create --domain default --password 123456 placement
- 使用管理员角色将Placement用户添加到服务项目中
openstack role add --project service --user placement admin
- 在服务目录创建Placement API服务
openstack service create --name placement --description "Placement API" placement
- 创建Placement API服务端点
openstack endpoint create --region RegionOne placement public http://controller:8778
openstack endpoint create --region RegionOne placement internal http://controller:8778
openstack endpoint create --region RegionOne placement admin http://controller:8778
5.4 安装软件并配置 Nova
- 安装软件包
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console \
openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api -y
- 修改
nova.conf
配置文件
cp /etc/nova/nova.conf{,.bak}
egrep -v '^$|^#' /etc/nova/nova.conf.bak >/etc/nova/nova.conf
[root@controller ~]# vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis=osapi_compute,metadata #只启用计算和元数据API
transport_url = rabbit://openstack:123456@controller #配置RabbitMQ消息队列访问
my_ip=192.168.1.10 #控制节点的IP地址
use_neutron = true #能够使用Networking服务
firewall_driver = nova.virt.firewall.NoopFirewallDriver #能够使用Networking服务
[api]
auth_strategy = keystone
[api_database]
connection = mysql+pymysql://nova:123456@controller/nova_api #配置数据库的连接
[database]
connection = mysql+pymysql://nova:123456@controller/nova #配置数据库的连接
[keystone_authtoken] #配置认证服务访问
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = 123456 #nova用户的密码
[glance] #配置镜像服务API的位置
api_servers = http://controller:9292
[oslo_concurrency] #配置锁路径
lock_path = /var/lib/nova/tmp
[placement] #配置对Placement API的访问
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = 123456
[placement_database]
connection = mysql+pymysql://placement:123456@controller/placement
[vnc] #配置VNC代理 使用控制节点的IP地址
enabled = true
server_listen = $my\_ip
server_proxyclient_address = $my\_ip
5.5 启用placement API访问
由于软件包错误,必须通过将以下配置添加到来启用对 Placement API 的访问
[root@controller ~]# vim /etc/httpd/conf.d/00-nova-placement-api.conf
...
15 #SSLCertificateKeyFile ...
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
...
---------------------------------------------------------------------------
#重启httpd
systemctl restart httpd.service
5.6 同步数据库的设置
- 同步nova-api 数据库
su -s /bin/sh -c "nova-manage api\_db sync" nova
- 注册cell0数据库
su -s /bin/sh -c "nova-manage cell\_v2 map\_cell0" nova
- 创建cell1 单元格
su -s /bin/sh -c "nova-manage cell\_v2 create\_cell --name=cell1 --verbose" nova
#2ce1c654-9c08-4313-99be-99e9db53f9c9
- 同步nova数据库
su -s /bin/sh -c "nova-manage db sync" nova
- 验证数据库是否注册正确
su -s /bin/sh -c "nova-manage cell\_v2 list\_cells" nova
- 启动nova服务并设置为开机自启
systemctl enable openstack-nova-api.service openstack-nova-consoleauth openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service openstack-nova-consoleauth openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
6. 安装 Nova 计算服务-计算节点
[root@computel ~]# cat /etc/hosts
192.168.1.10 controller
192.168.1.20 compute1
#关闭yum源检查
sed -i 's#gpgcheck=1#gpgcheck=0#g' /etc/yum.repos.d/*.repo
- 安装软件包
yum install python-openstackclient -y #测试环境时已安装
yum install openstack-nova-compute -y
- 编辑配置文件 /etc/nova/nova.conf
cp /etc/nova/nova.conf{,.bak}
egrep -v '^$|^#' /etc/nova/nova.conf.bak >/etc/nova/nova.conf
[root@computel ~]# vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123456@controller
my_ip = 192.168.1.20
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = 123456
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my\_ip
novncproxy_base_url = http://192.168.1.10:6080/vnc_auto.html
# 这里的vnc网址 http://controller:6080/vnc\_auto.html 需改为 http://192.168.1.10:6080/vnc\_auto.html
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = 123456
- 确定计算节点是否支持虚拟机的硬件加速
egrep -c '(vmx|svm)' /proc/cpuinfo
2
#如果这个命令返回了one or greater的值,那么你的计算节点支持硬件加速且不需要这步的额外的配置
#如果这个命令返回了zero值,那么你的计算节点不支持硬件加速。你必须配置libvirt来使用QEMU去代替KVM
vim /etc/nova/nova.conf
[libvirt]
virt_type = qemu
- 启动服务并添加为开机自启动
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl restart libvirtd.service openstack-nova-compute.service
systemctl status libvirtd.service openstack-nova-compute.service
7. 添加 计算节点 到 controller的数据库中-控制节点
- 验证在数据库中的计算节点
source ~/admin-openrc #加载环境变量
openstack compute service list --service nova-compute
- 发现计算节点
su -s /bin/sh -c "nova-manage cell\_v2 discover\_hosts --verbose" nova
- 注意:添加新的计算节点时,必须在控制器节点上运行以注册这些新的计算节点。另外,可以在中设置适当的时间间隔
vim /etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300
- 在controller节点验证计算服务操作
source ~/admin-openrc
openstack compute service list
其输处中有3个服务组件是激活在控制节点,一个服务组件是激活在计算节点
- 列出身份服务中的API端点以验证与身份服务的连接
openstack catalog list
- 列出图像服务中的图像以验证与图像服务的连接性
openstack image list
- 检查单元格和展示位置API是否正常运行
nova-status upgrade check
8. 安装 Neutron 网络虚拟化服务
Neutron 组件介绍
一般而言,neutron-server和各neutron-plugin部署在控制节点或者网络节点上,而neutron-gent则部署在网络节点上和计算节点上。
8.1 控制节点安装
- 创建
neutron
数据库
mysql -uroot -p
create database neutron;
- 对数据库进行授权
grant all privileges on neutron.* to 'neutron'@'localhost' identified by '123456';
grant all privileges on neutron.* to 'neutron'@'%' identified by '123456';
flush privileges;
- 创建
neutron
用户
source ~/admin-openrc
openstack user create --domain default --password 123456 neutron
admin
向neutron
用户添加角色
openstack role add --project service --user neutron admin
\\没有任何输出
- 创建
neutron
服务实体
openstack service create --name neutron --description "OpenStack Networking" network
- 创建网络服务API端点
openstack endpoint create --region RegionOne network public http://controller:9696
openstack endpoint create --region RegionOne network internal http://controller:9696
openstack endpoint create --region RegionOne network admin http://controller:9696
配置网络的选项:
可以使用选项1和2表示的两种体系结构之一来部署网络服务
- 选项1 部署了最简单的架构,该架构仅支持将实例附加到提供程序(外部)网络。没有自助服务(专用)网络,路由器或浮动IP地址。只有
admin
或其他特权用户可以管理提供商网络。 - 选项2通过支持将实例附加到自助服务网络的第3层服务增强了选项1。该
demo
非特权用户或其他非特权用户可以管理自助服务网络,包括在自助服务网络与提供商网络之间提供连接的路由器。此外,浮动IP地址使用自助服务网络从外部网络(例如Internet)提供到实例的连接。
提供商网络
- 安装需要的组件
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
- 编辑
/etc/neutron/neutron.conf
文件
cp /etc/neutron/neutron.conf{,.bak}
egrep -v '^#|^$' /etc/neutron/neutron.conf.bak >/etc/neutron/neutron.conf
[root@controller ~]# vim /etc/neutron/neutron.conf
[DEFAULT]
core_plugin = ml2
service_plugins =
transport_url = rabbit://openstack:123456@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[database]
connection = mysql+pymysql://neutron:123456@controller/neutron
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123456
[nova]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = 123456
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
- 配置模块化层2(ML2)插件
ML2插件使用Linux桥接器机制为实例构建第2层(桥接和交换)虚拟网络基础架构
## 编辑/etc/neutron/plugins/ml2/ml2\_conf.ini文件
cp /etc/neutron/plugins/ml2/ml2_conf.ini{,.bak}
egrep -v '^$|^#' /etc/neutron/plugins/ml2/ml2_conf.ini.bak >/etc/neutron/plugins/ml2/ml2_conf.ini
[root@controller ~]# vim /etc/neutron/plugins/ml2/ml2\_conf.ini
[ml2]
#启用flat网络和VLAN网络,
type_drivers = flat,vlan
#禁用自助服务网络
tenant_network_types =
#启用Linux桥接机制
mechanism_drivers = linuxbridge
#启用端口安全扩展驱动程序
extension_drivers = port_security
[ml2_type_flat]
#将提供者的虚拟网络配置为flat网络
flat_networks = provider
[ml2_type_vxlan]
#为自助服务网络配置VXLAN网络标识符范围
vni_ranges = 1:1000
[securitygroup]
#启用ipset以提高安全组规则的效率
enable_ipset = true
flat网络:没有使用任何网络隔离技术,大二层互通。
vlan网络:基于vlan实现的虚拟网络。同一个物理网络中的多个vlan网络是相互隔离的,因此支持多租户这种应用场景。
- 配置Linux网桥代理
Linux网桥代理为实例构建第2层(桥接和交换)虚拟网络基础结构并处理安全组
## 编辑/etc/neutron/plugins/ml2/linuxbridge\_agent.ini文件
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}
egrep -v '^$|^#' /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak >//etc/neutron/plugins/ml2/linuxbridge_agent.ini
[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge\_agent.ini
[linux_bridge]
#将提供者虚拟网络映射到提供者物理网络接口
physical_interface_mappings = provider:eth0
为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**
![](https://img-blog.csdnimg.cn/img_convert/f00e50b30c4ff2a09dad34d4011e61d6.png)
本份面试集锦涵盖了
* **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密码?
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**
![img](https://img-blog.csdnimg.cn/img_convert/57e399a35ad442d267be049a8169a6fd.jpeg)
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
_drivers = port_security
[ml2_type_flat]
#将提供者的虚拟网络配置为flat网络
flat_networks = provider
[ml2_type_vxlan]
#为自助服务网络配置VXLAN网络标识符范围
vni_ranges = 1:1000
[securitygroup]
#启用ipset以提高安全组规则的效率
enable_ipset = true
flat网络:没有使用任何网络隔离技术,大二层互通。
vlan网络:基于vlan实现的虚拟网络。同一个物理网络中的多个vlan网络是相互隔离的,因此支持多租户这种应用场景。
- 配置Linux网桥代理
Linux网桥代理为实例构建第2层(桥接和交换)虚拟网络基础结构并处理安全组
## 编辑/etc/neutron/plugins/ml2/linuxbridge\_agent.ini文件
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}
egrep -v '^$|^#' /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak >//etc/neutron/plugins/ml2/linuxbridge_agent.ini
[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge\_agent.ini
[linux_bridge]
#将提供者虚拟网络映射到提供者物理网络接口
physical_interface_mappings = provider:eth0
为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**
[外链图片转存中...(img-M4FP0I7g-1713388740965)]
本份面试集锦涵盖了
* **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密码?
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**
[外链图片转存中...(img-UlWQ51fI-1713388740965)]
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**