[root@computel ~]# chronyc 源
210 来源数量=1
MS 名称/IP 地址层轮询到达LastRx 最后样本
==========================================================================
^* 控制器3 6 17 6 -4061ns[ +163us] +/- 34ms
在安装过程中,您会注意到整个OpenStack项目都是用Python开发的。
2.2 启用 OpenStack 存储库
在CentOS 上,extras 存储库提供启用OpenStack 存储库的rpm 软件包。 CentOS 附加功能默认包含此存储库,因此只需安装该软件包即可启用OpenStack 存储库。
在所有节点上安装最新版本的openstack-rocky,安装其他版本,并更改后缀名。
yum 安装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
[Sentos-Seph-夜光]
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.7.1908/storage/x86_64/ceph-luminous/
在所有节点上安装OpenStack 客户端**
yum 安装python-openstackclient -y
2.3 安装 SQL数据库-controller
仅在控制节点上运行。您也可以根据实际需求使用MariaDB或MySQL。
安装数据库包
yum 安装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]
绑定地址=192.168.1.10#监听地址
default-storage-engine=innodb#默认存储引擎
innodb_file_per_table=on#独立表空间文件
max_connections=4096#最大连接数
Collation-server=utf8_general_ci#默认字符集为UTF8
服务器字符集=utf8
启动数据库并将其设置为启动时自动启动。
重新启动systemctl mariadb.service
使用systemctl 启用mariadb.service
执行mysql_secure_installation 的安全初始化。为数据库root帐户选择合适的密码
[root@controller ~]# mysql_secure_installation
输入root当前密码(如果没有则输入): Enter
是否要设置root密码? [Y/n] n #设置数据库密码
您想删除匿名用户吗? [Y/n]y #删除匿名用户
您想禁止远程root 登录吗? [Y/n] y #Disallow root 用户远程登录
是否要删除测试数据库和权限? [Y/n] y #删除测试数据库和权限
您想现在重新加载权限表吗? [Y/n] y #您想重新加载权限表吗?
2.4 安装消息队列服务-controller
消息队列服务通常在控制器节点上运行。 OpenStack 支持多种消息队列服务,例如RabbitM、Qpid 和ZeroMQ。
安装包
yum 安装Rabbitmq-server -y
启动消息队列并将其设置为启动时自动启动。
systemctl 重新启动Rabbitmq-server.service
systemctl 启用rabbitmq-server.service。
添加OpenStack 用户
Rabbitmqctl add_user openstack 123456
授权用户的写入和读取配置权限
#三个‘.\\*’表示可读、可写、可配置
Rabbitmqctl set_permissions openstack \’.\\*\’ \’.\\*\’ \’.\\*\’
扩展:启用rabbitmq管理插件,方便以后监控。
#启动后端口为15672
systemctl 启用rabbitmq-server.service。
systemctl 重新启动Rabbitmq-server.service
Rabbitmq-plugins 启用Rabbitmq_management
#插件启动时,监听两个端口(5672、25672)。
[root@controller ~]# netstat -lntup|egrep \’5672|25672\’
tcp 0 0 0.0.0.0:25672 0.0.0.0:\\* 监听56252/beam.smp
tcp6 0 0 :5672 :\\* 监听56252/beam.smp
tcp 0 0 0.0.0.0:15672 0.0.0.0:\\* 监听56252/beam.smp
浏览器访问
2.5 安装Memcached缓存-controller
memcached 服务通常在控制器节点上运行。对于生产环境,我们建议您启用防火墙、身份验证和加密的组合来进行保护。
安装包
yum 安装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地址。这样其他节点就可以通过管理网络访问它。
选项=\’-l 0.0.0.0,1\’
启动服务并将其设置为开机自动启动
systemctl 重新启动memcached.service
使用systemctl 启用memcached.service
2.6 安装 etcd 分布式存储-controller
在控制器节点上运行。 etcd 是一个分布式、一致的键值存储,用于共享配置和服务发现,具有可选客户端证书身份验证的安全自动TLS,以及快速基准测试10,000 次/秒的可靠性,具有正确使用Raft Distribute 的特点。
安装包
百胜安装etcd -y
编辑/etc/etcd/etcd.conf 文件。
[root@controller ~]# vi /etc/etcd/etcd.conf
[成员]
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=\’控制器\’
#[聚类]
ETCD\\_INITIAL\\_ADVERTISE\\_PEER\\_URLS=\’http://192.168.1.10:2380\’
ETCD\\_ADVERTISE\\_CLIENT\\_URLS=\’http://192.168.1.10:2379\’
ETCD\\_INITIAL\\_CLUSTER=\’控制器=http://192.168.1.10:2380\’
ETCD\\_INITIAL\\_CLUSTER\\_TOKEN=\’etcd-cluster-01\’
ETCD\\_INITIAL\\_CLUSTER\\_STATE=\’新\’
启动服务并将其设置为开机自动启动
systemctl 重新启动etcd.service
systemctl 启用etcd.service
3. 安装 keystone 认证服务-控制节点
Keystone 01详解
Keystone 02详解
官方R版Keystone安装文档
Keystone是OpenStack的身份服务,暂时可以理解为权限相关的组件。
Keystone项目的主要目标是为访问openstack的各个组件(nova、cinder、glance等)提供统一的验证方法。具体来说:
由于openstack是一个由许多组件组成的系统,其功能是向外界提供服务,因此在典型应用中没有任何软件不考虑安全因素。解决分布式环境下的统一认证。
功能:身份验证管理、授权管理、服务目录身份验证服务包括以下组件:服务器、驱动程序、模块
安装OpenStack 特定服务时,用户必须在OpenStack 安装中注册每个服务。 ID 服务跟踪安装了哪些OpenStack 服务,并允许您在网络上找到这些服务。
创建梯形图数据库
每个组件都有自己的数据库,可以承受更大的压力。
mysql-uroot-p
创建数据库基石。
验证keystone 数据库
将keystone.* 上的所有权限授予“123456”标识的“keystone”@“localhost”。
将keystone.* 的所有权限授予“123456”标识的“keystone”@“%”。
闪存权限。
安装和配置的组件
安装Keystone相关软件包
yum 安装openstack-keystone httpd mod_wsgi -y
#wsgi:python项目(类似于php中的fastcgi)
#相关信息链接https://www.cnblogs.com/xiaoyuanqujing/articles/11838819.html
编辑/etc/keystine/keystone.conf 文件。 注意:此示例要求控制器主机可解析。
#备份原配置文件,覆盖除模块名称外的配置文件
cp /etc/keystone/keystone.conf{,bak}
egrep -v \’^$|^#\’ /etc/keystone/keystone.conf.bak /etc/keystone/keystone.conf
[root@controller ~]# vim /etc/keystone/keystone.conf
[数据库]
connection=mysql+pymysql://keystone:123456@controller/keystone#数据库访问设置
[代币]
Provider=fernet#配置Fernet 令牌提供商
填充ID 服务数据库
su -s /bin/sh -c \’keystone-manage db\\_sync\’ Keystone
#显示表格
mysql keystone -p123456 -e \’显示表\’
初始化Fernet 密钥库
#直接从命令行复制并执行
keystone-管理fernet_setup –keystone-用户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 区域一
配置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 httpd.service
使用systemctl 启用httpd.service
[root@controller ~]# netstat -lntup|grep httpd
tcp6 0 0 :5000 :* 监听17417/httpd
tcp6 0 0 :80 :* 监听17417/httpd
设置环境变量
[root@controller ~]# vim admin-openrc
导出OS\\_USERNAME=管理员
导出操作系统\\_PASSWORD=123456
导出OS\\_PROJECT\\_NAME=admin
导出OS\\_USER\\_DOMAIN\\_NAME=default
导出OS\\_PROJECT\\_DOMAIN\\_NAME=default
OS\\_AUTH\\_URL=http://导出控制器:5000/v3
导出操作系统\\_IDENTITY\\_API\\_VERSION=3
导出操作系统\\_IMAGE\\_API\\_VERSION=2
#启用变量脚本
[root@controller ~]#source ~/admin-openrc
[root@controller ~]# env|grep OS
创建域、项目用户和角色
#创建域名
openstack 域创建–description “示例域”示例
#创建一个项目
openstack 项目创建–domain default –description \’服务项目\’ 服务
#创建平台演示项目
openstack 项目创建–domain default –description \’演示项目\’ demo
#创建演示用户
openstack用户创建–domain default –password 123456 demo
#创建用户角色
openstack角色创建用户
#myproject 将用户角色添加到项目和演示用户
openstack role add –projectdemo –userdemouser//此步骤无返回值
梯形校正验证
#取消环境变量
OS_AUTH_URL 取消设置OS_PASSWORD
#管理员用户返回的身份验证令牌
openstack –os-auth-url http://controller:5000/v3 \\
–os-项目域名默认–os-用户域名默认\\
–os-project-name admin –os-username 管理员令牌问题
#demoAuthentication 用户返回的令牌
openstack –os-auth-url http://controller:5000/v3 \\
–os-项目域名默认–os-用户域名默认\\
–os-project-name demo –os-username 演示令牌问题
创建和验证变量环境脚本
#创建另一个demo-openrc脚本
[root@controller ~]# vim demo-openrc
导出OS_PROJECT_DOMAIN_NAME=默认
导出OS_USER_DOMAIN_NAME=默认
导出OS_PROJECT_NAME=演示
导出OS_USERNAME=演示
导出OS_PASSWORD=123456
导出OS_AUTH_URL=http://控制器:5000/v3
导出OS_IDENTITY_API_VERSION=3
导出OS_IMAGE_API_VERSION=2
#使用脚本检查返回值并显示admin用户的token信息
source ~/admin-openrc //启用环境变量
来源/demo-openrc
认证
openstack 令牌问题
4. 安装 Glance 镜像服务-控制节点
R版本官方安装文档
OpenStack 镜像服务对于基础设施即服务(IaaS) 非常重要。它接受来自磁盘或服务器映像的API 请求以及来自最终用户和OpenStack 计算组件的元数据定义。它还支持在各种类型的存储库中存储磁盘或服务器映像,包括OpenStack 对象存储。
OpenStack 镜像服务上运行许多定期进程来支持缓存。复制服务确保整个集群的一致性和可用性。其他常见流程包括审核员、更新员和收集员。
OpenStack镜像服务包括以下组件:
API概览
接受图像API 调用以发现、检索和保存图像。
取消注册表(参见注册表)
存储、处理和检索有关图像的元数据。元数据包括大小和类型等项目。 警报注册表是OpenStack 映像服务使用的私有内部服务。不向用户提供此服务。
数据库
要存储图像元数据,您可以根据自己的喜好选择数据库。大多数部署使用MySQL 或SQLite。
图像文件存储库
支持多种存储库类型,包括纯文件系统、对象存储、RADOS 块设备、HTTP 和Amazon S3。请注意,某些存储库仅支持只读使用。
元数据定义服务
供供应商、管理员、服务和用户有意义地定义自己的自定义元数据的通用API。此元数据可用于许多不同类型的资源,包括图像、工件、卷、风格和聚合。该定义包括新属性的键、描述、约束以及可以与其关联的资源类型。
4.1 安装与配置
添加数据库
在安装和配置图像服务之前,您必须创建数据库、服务凭证和API 端点。
#使用数据库访问客户端以root用户连接数据库服务器。
mysql -u 根-p
#创建Glance数据库
创建数据库一目了然。
#允许对Glance 数据库的适当访问
将glance.* 上的所有权限授予由“123456”标识的“glance”@“localhost”。
将glance.* 上的所有权限授予由“123456”标识的“glance”@“%”。
闪存权限。
获取管理员用户的环境变量。
来源~/admin-openrc
创建概览用户
openstack user create –domaindefault –password-prompt 概览
将admin 用户添加到Glance 用户和项目中
添加openstack角色–project service –user Gloss admin
\\\\该命令不输出任何内容
创建概览服务
openstack 服务创建–namelance –description \’OpenStack Image\’ 镜像
创建镜像服务API端点
OpenStack 使用三个API 端点变体来表示每个服务:管理、内部和公共。
开栈终点
nt 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 对镜像服务进行验证
官方R版 glance验证操作文档
获取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 计算服务-控制节点
官方R版 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 计算服务-计算节点
官方R版 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 网络虚拟化服务
官方R版 Neutron 网络虚拟化服务安装文档
一篇详细解说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)提供到实例的连接。
官方文档 联网选项1:提供商网络
官方文档 联网选项2:自助服务网络
官方文档 配置元数据代理
提供商网络
安装需要的组件
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
[securitygroup]
#启用安全组并配置Linux网桥iptables防火墙驱动程序
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
[vxlan]
#禁用VXLAN覆盖网络
enable_vxlan = false
修改linux内核参数设置为1
[root@controller ~]# vim /etc/sysctl.conf
…
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
#要启用网络桥接器支持,需要加载 br\\_netfilter 内核模块
modprobe br_netfilter
sysctl -p
配置DHCP代理
DHCP代理为虚拟网络提供DHCP服务
#编辑/etc/neutron/dhcp\\_agent.ini文件
#配置Linux桥接口驱动程序Dnsmasq DHCP驱动程序,并启用隔离的元数据,以便提供商网络上的实例可以通过网络访问元数据
[root@controller ~]# vim /etc/neutron/dhcp\\_agent.ini
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
配置元数据代理
元数据代理提供配置信息,例如实例的凭据
# 编辑/etc/neutron/metadata\\_agent.ini文件
# 配置元数据主机和共享机密
[root@controller ~]# vim /etc/neutron/metadata\\_agent.ini
[DEFAULT]
nova_metadata_host = controller
metadata_proxy_shared_secret = 123456 #密码
配置Nova服务使用网络服务
#编辑/etc/nova/nova.conf文件
[root@controller ~]# vim /etc/nova/nova.conf
…
[neutron]
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 123456 #neutron用户密码
service_metadata_proxy = true
metadata_proxy_shared_secret = 123456 #元数据代理密码
创建 /etc/neutron/plugins/ml2/ml2_conf.ini 文件指向ML2插件配置的软链接
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
同步数据库
su -s /bin/sh -c \”neutron-db-manage –config-file /etc/neutron/neutron.conf –config-file /etc/neutron/plugins/ml2/ml2\\_conf.ini upgrade head\” neutron
重新启动Nova计算服务的API服务
systemctl restart openstack-nova-api.service
启动网络服务,并配置为开机自启动
systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
对于网络选项2,还启用并启动第3层服务。这里未配置。请点击链接联网选项2:自助服务网络
8.2 计算节点安装
官方文档 Neytron 网络虚拟化服务计算节点安装
安装组件
yum install openstack-neutron-linuxbridge ebtables ipset -y
编辑/etc/neutron/neutron.conf文件
cp /etc/neutron/neutron.conf{,.bak}
egrep -v \’^$|^#\’ /etc/neutron/neutron.conf.bak >/etc/neutron/neutron.conf
[root@computel ~]# vim /etc/neutron/neutron.conf
[DEFAULT]
transport_url = rabbit://openstack:123456@controller
auth_strategy = keystone
[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
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
配置Linux网桥代理
#编辑/etc/neutron/plugins/ml2/linuxbridge\\_agent.ini文件
[root@computel ml2]# vim linuxbridge\\_agent.ini
[linux_bridge]
physical_interface_mappings = provider:eth0
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
[vxlan]
enable_vxlan = false
修改linux系统内核参数为1
[root@controller ~]# vim /etc/sysctl.conf
…
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
#要启用网络桥接器支持,需要加载 br\\_netfilter 内核模块
modprobe br_netfilter
sysctl -p
配置Nova服务使用网络服务
#编辑/etc/nova/nova.conf文件
[root@computel ~]# vim /etc/nova/nova.conf
…
[neutron]
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 123456
重新启动计算节点上的Nova服务
systemctl restart openstack-nova-compute.service
启动Linux网桥代理,并将其配置为开机自启动
systemctl enable neutron-linuxbridge-agent.service
systemctl restart neutron-linuxbridge-agent.service
8.3 Neutron网络虚拟化验证-控制节点
列出已加载的扩展,以验证该neutron-server过程是否成功启动
source ~/admin-openrc
openstack extension list –network
列出代理商以验证成功
openstack network agent list
9. 安装 Horizon服务-控制节点
安装软件包
yum install openstack-dashboard -y
编辑 /etc/openstack-dashboard/local_settings文件
[root@controller ~]# vim /etc/openstack-dashboard/local\\_settings
#配置仪表盘在controller节点上使用OpenStack服务
OPENSTACK_HOST = \”controller\”
#启用身份API版本3
OPENSTACK_KEYSTONE_URL = \”http://%s:5000/v3\” % OPENSTACK_HOST
#配置user为通过仪表板创建的用户的默认角色
OPENSTACK_KEYSTONE_DEFAULT_ROLE = \”user\”
#允许主机访问仪表板,接受所有主机
ALLOWED_HOSTS = [\’\\*\’]
#配置memcached会话存储服务
SESSION_ENGINE = \’django.contrib.sessions.backends.cache\’
CACHES = {
\’default\’: {
\’BACKEND\’: \’django.core.cache.backends.memcached.MemcachedCache\’,
\’LOCATION\’: \’controller:11211\’,
}
}
#启用对域的版本支持
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
#配置API版本
OPENSTACK_API_VERSIONS = {
\”identity\”: 3,
\”image\”: 2,
\”volume\”: 2,
\”compute\”: 2,
}
#配置Default为通过仪表板创建的用户的默认域
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = \”Default\”
#如果选择网络选项1,请禁用对第3层网络服务的支持
OPENSTACK_NEUTRON_NETWORK = {
\’enable\\_router\’: False,
\’enable\\_quotas\’: False,
\’enable\\_distributed\\_router\’: False,
\’enable\\_ha\\_router\’: False,
\’enable\\_lb\’: False,
\’enable\\_firewall\’: False,
\’enable\\_vpn\’: False,
\’enable\\_fip\\_topology\\_check\’: False,
#配置时区为亚洲上海
TIME_ZONE = \”Asia/Shanghai\”
为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**
![](https://img-blog.csdnimg.cn/img_convert/814eb8dea5528a7622eca6949b1cc153.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如何减少主从复制延迟?
troller节点上使用OpenStack服务
OPENSTACK_HOST = \”controller\”
#启用身份API版本3
OPENSTACK_KEYSTONE_URL = \”http://%s:5000/v3\” % OPENSTACK_HOST
#配置user为通过仪表板创建的用户的默认角色
OPENSTACK_KEYSTONE_DEFAULT_ROLE = \”user\”
#允许主机访问仪表板,接受所有主机
ALLOWED_HOSTS = [\’\\*\’]
#配置memcached会话存储服务
SESSION_ENGINE = \’django.contrib.sessions.backends.cache\’
CACHES = {
\’default\’: {
\’BACKEND\’: \’django.core.cache.backends.memcached.MemcachedCache\’,
\’LOCATION\’: \’controller:11211\’,
}
}
#启用对域的版本支持
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
#配置API版本
OPENSTACK_API_VERSIONS = {
\”identity\”: 3,
\”image\”: 2,
\”volume\”: 2,
\”compute\”: 2,
}
#配置Default为通过仪表板创建的用户的默认域
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = \”Default\”
#如果选择网络选项1,请禁用对第3层网络服务的支持
OPENSTACK_NEUTRON_NETWORK = {
\’enable\\_router\’: False,
\’enable\\_quotas\’: False,
\’enable\\_distributed\\_router\’: False,
\’enable\\_ha\\_router\’: False,
\’enable\\_lb\’: False,
\’enable\\_firewall\’: False,
\’enable\\_vpn\’: False,
\’enable\\_fip\\_topology\\_check\’: False,
#配置时区为亚洲上海
TIME_ZONE = \”Asia/Shanghai\”
为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**
[外链图片转存中…(img-zUAwAUra-1719230823693)]
本份面试集锦涵盖了
* **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密码?
#以上关于OpenStack R版的原理、部署与使用的相关内容来源网络仅供参考,相关信息请以官方公告为准!
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92097.html