openstack-Train部署文档

部署参考资料:
1,环境准备
https://blog.csdn.net/m0_61777116/article/details/123702147
阿里yum源
https://blog.csdn.net/wangshui898/article/details/121786125

2,安装KeyStone服务(在控制节点上操作)账号鉴权服务
https://blog.csdn.net/m0_61777116/article/details/123839468

3,安装Openstack-T 之Glance镜像存储服务
https://blog.csdn.net/m0_61777116/article/details/124029081

4,部署placement跟踪和监控各种资源的使用情况服务组件和Nova计算组件
https://blog.csdn.net/m0_61777116/article/details/124281967?spm=1001.2014.3001.5502

5,部署Openstack-T 之Neutron网络组件
https://blog.csdn.net/m0_61777116/article/details/124560469

6,部署openstack-T 之Cinder块存储服务
https://blog.csdn.net/m0_61777116/article/details/125135236?spm=1001.2014.3001.5502

7,部署openstack-t 之Horizon(dashboard)
https://blog.csdn.net/m0_61777116/article/details/125077007?spm=1001.2014.3001.5502

bug:
1、欧拉版本启动ubountu版本的虚拟机实例,实例网络异常,重启neutron网络组件恢复正常。
2、T版本服务器断电后,无法创建实例,ceph存储问题,丢失了部分元数据,修复了 ceph后可以正常创建。
3、T版openstack创建实例计算节点报错,compute的nova-compute.log如下 403 Forbidden, You don't have permission to access /resource_providers on this server
openstack计算节点没权限
配置计算机的/etc/httpd/conf.d/00-nova-placement-api.conf配置文件
最下边增加下边配置:
<Directory /usr/bin>
   <IfVersion >= 2.4>
      Require all granted
   </IfVersion>
   <IfVersion < 2.4>
      Order allow,deny
      Allow from all
   </IfVersion> 
</Directory>
之后重启计算节点和控制节点openstack服务即可。
######

详细的部署过程整理如下:
######
官方部署文档:https://docs.openstack.org/install-guide/environment.html
B站视频教程:https://www.bilibili.com/video/BV1fL4y1i7NZ/?p=2&spm_id_from=pageDriver&vd_source=4b1fd87b0354c275181478c68b4b3b5b
部署准备工作
1、环境准备
开始安装
准备两台虚拟机,我这里用的是两台centos7。4 minimal版本的
控制节点: 2处理器, 4 GB 内存, 及20GB 存储,ip 192.168.31.20
计算节点: 4处理器, 6 GB 内存, 及20GB 存储,ip 192.168.31.21

2、修改hostname(两边都要)
vim /etc/hostname
将原内容删掉
在两个节点分别对应着改名:
controller、和compute1
10.0.0.11       controller
10.0.0.31       compute1

3、测试连通性
从 controller 节点,测试到*compute* 节点管理网络是否连通
ping -c 4 compute1
从 compute 节点,测试到*controller* 节点管理网络是否连通
ping -c 4 controller
再分别ping www.baidu.com测试是否嫩连接到Internet

4、关闭selinux、防火墙(两边都要)
进入/etc/selinux/config,将SELINUX设置为disabled
再使用setenforce 0 彻底关闭selinux
可以使用getenforce查看
关闭防火墙
systemctl stop firewalld;systemctl disable firewalld

5、更新yum源
# 更换阿里云Base源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 安装openstack官方源
yum install centos-release-openstack-train -y
yum clean all
yum makecache
安装常用工具
yum install wget rsync vim net-tools  -y

6、配置时间服务器(controller节点部署)
编辑“/etc/chrony.conf”文件并在你的环境需要的情况下增加、修改或者删除这些键
这里用的是阿里云的,比官方给的快点
将原有的server删掉,加上阿里云的时间服务器
将allow那儿改成allow all
将local stratum 10的注释去掉
启动 时间 服务并将其配置为随系统启动:
systemctl enable chronyd.service
systemctl start chronyd.service
systemctl restart chronyd
systemctl status chronyd  查看时间服务器的状态
chronyc  sources -v 去查看是否同步阿里云时间,上图即为成功!

计算节点 :
安装软件包:
yum install chrony
编辑``/etc/chrony.conf`` 文件并删除原有的``server`` 内容。
修改它去解析控制节点
server controller iburst
其他的不用改
启动 时间 服务并将其配置为随系统启动
再使用chronyd sources -v去查看同步状态,同步到控制节点即为成功!
如果未同步成功执行以下命令:
systemctl restart chronyd.service

您的版本安装适当的 OpenStack 客户端,并安装 openstack-selinux软件包以自动管理 OpenStack 服务的安全策略:
yum install python-openstackclient openstack-selinux -y  #两边都要

8、安装SQL数据库
数据库通常在控制器节点上运行
按装软件包:
yum install mariadb mariadb-server python2-PyMySQL
创建和编辑/etc/my.cnf.d/openstack.cnf文件
[mysqld]
bind-address = 192.168.31.20  
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
在启动数据库服务并加入开机项
systemctl enable mariadb.service;systemctl start mariadb.service
mysql_secure_installation 通过运行脚本保护数据库服务,具体而言,请为数据库帐户选择合适的密码
mysql_secure_installation
会显示叫你输入密码,因为安装时我们并没有设置密码,所以我们之间按enter键
接着会问你是否要设置密码,直接y
我这里设置123
又问是否要移除匿名用户,我们选择移除
问是否不允许其他用户登录,这里选n,选y则其他用户登录不上
问是否要移除test数据库,这里选择移除
又问是否重新加载特权表,选择是
用命令测试SQL
mysql -p
密码:123

9、安装消息队列
在控制节点上安装
安装包:yum install rabbitmq-server
启动消息队列服务并将其配置为在系统启动时启动:
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
用systemctl status rabbitmq-server.service查看服务状态
如出现fail,请参考下面的解决方法:
https://www.cnblogs.com/wang-yaz/p/14188233.html
添加OpenStack用户并设置密码
rabbitmqctl add_user openstack 后面接密码  #建议自己设置密码,我这里设置openstack123,即rabbitmqctl add_user openstack openstack123

如果出现Error: unable to connect to node rabbit@localhost: nodedown
https://blog.csdn.net/wang961226/article/details/111477363?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_default&utm_relevant_index=1

允许用户进行配置、写入和读取访问 openstack:
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
设置权限,直接设置最大化权限即可
然后可以使用:rabbitmqctl list_users
查看是否创建用户成功(administrator为超级用户)
使用rabbitmq-plugins list查看所有服务
使用下面的命令开启图形化界面:
rabbitmq-plugins enable rabbitmq_management rabbitmq_management_agent
开启后我们可以访问下消息管理系统的图形界面:
在网页中访问http://192.168.31.20:15672/#/(ip加端口号)
可以进入,账号密码都是guest

10、配置缓存
在控制节点中配置
yum install memcached python-memcached -y
编辑/etc/sysconfig/memcached文件
# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024"
OPTIONS="-l 127.0.0.1,::1,controller"
启动 Memcached 服务并将其配置为在系统启动时启动
systemctl enable memcached.service;systemctl start memcached.service
用命令查看是否开启
systemctl status memcached.service

11、etcd暂时不需要装
在目前的学习阶段不用到etcd
######

 
部署keystone账号鉴权服务
官方部署文档:https://docs.openstack.org/keystone/train/install/keystone-install-rdo.html
B站教程:https://www.bilibili.com/video/BV1fL4y1i7NZ/?p=3&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=4b1fd87b0354c275181478c68b4b3b5b

1、创建keystone数据库:
登录mysql:CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone123';

2、安装和配置组件
运行以下命令来安装软件包:
yum install openstack-keystone httpd mod_wsgi
如果检测到没有的,使用以下命令再次安装完整的OpenStack包
yum install centos-release-openstack-train -y
编辑/etc/keystone/keystone.conf文件
vim /etc/keystone/keystone.conf
在命令模式下使用/\[database],定位到database 
[database]
connection = mysql+pymysql://keystone:keystone123@controller/keystone
[token]
provider = fernet

同步数据库(要求两节点可以ping通,计算节点要联通数据库)
su -s /bin/sh -c "keystone-manage db_sync" keystone
使用命令验证是否同步:mysql -uroot -p;show tables;

初始化 Fernet 密钥存储库,创建令牌:
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone 
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
引导身份服务,这一步非常关键,创建界面,网络,区域都会有影响:
[root@localhost yum.repos.d]# keystone-manage bootstrap --bootstrap-password admin --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
admin为适合管理用户的密码。

3、配置 Apache HTTP 服务器
编辑文件并配置引用控制器节点的选项:/etc/httpd/conf/httpd.conf 
vim /etc/httpd/conf/httpd.conf 
在命令模式下输入/Server,定位到该位置
#ServerName www.example.com:80
ServerName controller   #添加一句
并创建指向该文件的连接:
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
启动 Apache HTTP 服务,并将其配置为在系统启动时启动:
systemctl enable httpd.service;systemctl start httpd.service
检查下服务是否开启:systemctl status httpd

检查环境变量,看环境变量是否配对,这里我们写一个脚本,来判断:
# vim /etc/keystone/admin-openrc.sh
脚本中输入一下内容:
#!/bin/bash
export OS_USERNAME=admin
export OS_PASSWORD=admin
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

使用以下命令可以看到:source /etc/keystone/admin-openrc.sh;openstack endpoint list
这里可以看到管理网、内网、公网的

然后我们再获取一下token: openstack token issue

4、创建域、项目、用户和角色
创建An Example Domain域
openstack domain create --description "An Example Domain" example
创建服务项目,该项目包含添加到环境中的每个服务的唯一用户
openstack project create --domain default --description "Service Project" service
创建常规(非管理员)任务应使用非特权项目和用户:
openstack project create --domain default --description "Demo Project" myproject

创建用户:myuser
openstack user create --domain default --password-prompt myuser 
密码统一设成myuser 

创建角色:myrole
openstack role create myrole

将角色添加到项目和用户:myrole myproject myuser
openstack role add --project myproject --user myuser myrole

5、验证
取消设置临时变量和环境变量:OS_AUTH_URLOS_PASSWORD
unset OS_AUTH_URL OS_PASSWORD
作为用户,请求身份验证令牌:admin,密码为之前设置的admin
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
作为在上一节中创建的用户,请求身份验证令牌:myuser
openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name myproject --os-username myuser token issue
验证成功!
######


部署Openstack-T 之Glance镜像服务
官方部署文档:https://docs.openstack.org/glance/train/install/install-rdo.html
B站视频教程:https://www.bilibili.com/video/BV1fL4y1i7NZ/?p=4&vd_source=4b1fd87b0354c275181478c68b4b3b5b

1、创建相关的数据库、、服务凭据和 API 终结点
使用数据库访问客户端以用户身份连接到数据库服务器
mysql -u root -p
创建数据库:glance
CREATE DATABASE glance;
授予对数据库的正确访问权限:
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance123';
#注意这里的密码glance123后面要用的
创建用户:glance
openstack user create --domain default --password-prompt glance
将admin角色添加到用户glance和项目service :admin glance service
openstack role add --project service --user glance admin
创建服务实体:glance
openstack service create --name glance --description "OpenStack Image" image
创建镜像服务 API 节点:
#注意这里所有的RegionOne都是在keystone初始化的时候创建的
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
用命令查看是否创建:
openstack endpoint list
#这里可以看到我们镜像服务的公网public,内网internal,管理网admin
2、安装服务
安装软件包:
yum install openstack-glance -y
配置Glance文件并完成以下操作:
vi /etc/glance/glance-api.conf
这里要使用授权时设置的密码:
[database]
connection = mysql+pymysql://glance:glance123@controller/glance

这里的password为创建用户时候设置的密码:
[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 = glance123  

认证方式为Keystone
[paste_deploy]
flavor = keystone  

选择存储位置,和存储方式:
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

具体如下,注意其中不能出现中文,注释里尽量也别出现:
vi /etc/glance/glance-api.conf
 
#修改的地方如下:
[database]
connection = mysql+pymysql://glance:glance123@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 = glance123  
#这里的密码为前面创建用户时设置的密码
 
#认证方式为keystone
[paste_deploy]
flavor = keystone  
 
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

同步数据库(要保证上面都OK):
su -s /bin/sh -c "glance-manage db_sync" glance
#出现最后的successfully就是同步成功!

启动镜像服务并将其配置为在系统引导时启动,再验证是否开启:
systemctl enable openstack-glance-api.service;systemctl start openstack-glance-api.service
systemctl status openstack-glance-api.service

3、验证
获取凭据以获取对仅限管理员的访问权限:admin
bash /etc/keystone/admin-openrc.sh
#具体路径按实际

下载测试镜像:
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
#用wget实在太慢,这里我们直接去网站下载后,上传
建议使用其他的下载器下载,下载完后上传
我这里使用的是Xftp上传的:
使用 QCOW2 磁盘格式、裸容器格式和公众可见性将镜像上传到镜像服务,以便所有项目都可以访问它:
glance image-create --name "cirros" --file cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare --visibility public
确认上传镜像并验证属性:
openstack image list
以上就是Glance服务的安装与配置
######


部署placement跟踪和监控各种资源的使用情况服务组件
Placement 提供了一个 WSGI 脚本,用于使用 Apache、nginx 或其他支持 WSGI 的 Web 服务器运行服务。
在openstack中主要用于跟踪和监控各种资源的使用情况。
官方部署文档:https://docs.openstack.org/placement/train/install/
我们先安装Placement,在控制节点
创建数据库
1、创建相关的数据库
mysql -u root -p
CREATE DATABASE placement;
2、对数据库授权
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'placement123';
#这里我设置placement123当密码
配置用户和端点
1、获取凭证以获取访问权限
source /etc/keystone/admin-openrc.sh
2、创建用户
openstack user create --domain default --password-prompt placement
#密码我这里设置123
3、将 Placement 用户添加到具有管理员角色的服务项目中:
openstack role add --project service --user placement admin
4、在服务目录中注册创建API :
openstack service create --name placement --description "Placement API" placement
5、创建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

安装和配置组件
1、安装软件包
yum install openstack‐placement‐api -y
2、编辑文件并完成以下操作:/etc/placement/placement.conf
#vi /etc/placement/placement.conf
 
#将以下内容复制进去
#password要用自己设置的,请根据实际情况而定
[DEFAULT]
[api]
auth_strategy = keystone
 
[cors]
 
[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 = placement
password = 123
 
[oslo_policy]
[placement]
 
[placement_database]
connection = mysql+pymysql://placement:placement123@controller/placement
 
[profiler]

编辑vi /etc/httpd/conf.d/00-placement-api.conf 
在 ErrorLog /var/log/placement/placement-api.log下面添加以下内容
 
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion <2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
#可能会引起httpd服务异常

3、同步placement数据库
su -s /bin/sh -c "placement-manage db sync" placement
4、重启httpd服务
systemctl restart httpd
查看httpd状态,如重启失败,可以重新安装http服务,请参考以下文章
https://blog.csdn.net/qq_35995514/article/details/106027310?spm=1001.2014.3001.5506

5、查看placement的状态
placement-status upgrade check
成功开启!
######


部署Nova计算组件(在控制节点)
官方部署文档:https://docs.openstack.org/nova/train/install/controller-install-rdo.html
1、创建数据库
#mysql -u root -p  #输入密码123
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
2、 对数据库进行授权访问
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova123';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova123';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova123';
3、创建服务凭证
创建用户nova(我设置的密码为123)
openstack user create --domain default --password-prompt nova  
添加角色
openstack role add --project service --user nova admin
创建服务实体nova
openstack service create --name nova --description "OpenStack Compute" compute
4、创建计算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

安装和配置组件
1、安装软件包
yum install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
2、编辑文件并完成以下操作:/etc/nova/nova.conf
#vi /etc/nova/nova.conf
 
[DEFAULT]
enabled_apis = osapi_compute,metadata
 
[api_database]
connection = mysql+pymysql://nova:nova123@controller/nova_api
 
[database]
connection = mysql+pymysql://nova:nova123@controller/nova
 
[DEFAULT]
transport_url = rabbit://openstack:openstack123@controller:5672/
 
[api]
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 = nova
password = 123
 
[DEFAULT]
my_ip = 192.168.31.20     #IP地址请根据实际情况而定
 
[DEFAULT]
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
 
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
 
[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 = 123

同步数据库
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova  #执行这条命令时会报warning,我们不用管他
验证
进入数据库:mysql -u root -p;use nova; show tables;
use nova_api; show tables;
use nova_cell0; show tables;
可以看到有关于nova、nova_api、nova_cell0的数据

验证是否创建成功: su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
启动服务
systemctl start openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
设置开机自启
systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

Nova之在计算节点的安装
官方部署文档:https://docs.openstack.org/nova/train/install/compute-install.html
安装和配置组件
1、安装软件包
yum install openstack-nova-compute -y
2、编辑文件并完成以下操作:/etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
 
[DEFAULT]
transport_url = rabbit://openstack:openstack123@controller
 
[api]
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 = nova
password = 123
 
[DEFAULT]
my_ip = 192.168.31.20              #IP请根据实际情况而定,可以使用hostname -I查看
 
[DEFAULT]
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
 
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller: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 = 123

3、查看是否支持CPU虚拟化
egrep -c '(vmx|svm)' /proc/cpuinfo  #非零就是支持
#如果返回为0,则配置以下文件/etc/nova/nova.conf
[libvirt]
virt_type = qemu
 
4、启动服务
systemctl enable libvirtd.service openstack-nova-compute.service;systemctl start libvirtd.service openstack-nova-compute.service

验证
在控制节点上运行以下命令
openstack compute service list --service nova-compute
主机发现(每添加一台主机都要执行主机发现)
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

选做:添加新的计算节点时,必须在控制器节点上运行以注册这些新的计算节点。或者,您可以在 中设置适当的间隔自动发现:
#vi /etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300
重启Nova服务及组件
systemctl start openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
可以使用tail -f /var/log/nova/*.log(控制节点)、tail -f /var/log/nova/nova-compute.log (计算节点),查看相关日志,没有error即可!
至此Nova配置完毕!
######


部署Openstack-T 之Neutron网络组件
官方部署文档:https://docs.openstack.org/neutron/train/install/install-rdo.html
B站部署视频:https://www.bilibili.com/video/BV1fL4y1i7NZ/?p=7&spm_id_from=333.788.top_right_bar_window_history.content.click&vd_source=4b1fd87b0354c275181478c68b4b3b5b
PS:请注意!!!在安装以下服务时,如果碰到配置文件有大量缺省,先将原来的全部删除,再去其他版本的文档复制完整内容(这里我复制的是o版的配置文件)
如果只是小量的,在配置文件的最后加入即可!
在控制节点:
1、创建相关数据库并授权
使用mysql -u root -p进入数据库中
#创建数据库
CREATE DATABASE neutron;
#授权
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron123';
这里密码我设置neutron123

2、创建服务相关凭证
创建用户
openstack user create --domain default --password-prompt neutron
密码我设置:neutron123
将角色添加到用户: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
配置服务代理(三层代理服务)
原文可参考官方文档:https://docs.openstack.org/neutron/train/install/controller-install-option2-rdo.html
1、安装组件
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
2、配置服务器组件
如果有文本缺省,先删除原先所有的,再复制以下文档:https://docs.openstack.org/ocata/config-reference/networking/samples/neutron.conf.html
编辑文件并完成以下操作:/etc/neutron/neutron.conf
vim /etc/neutron/neutron.conf
[database]
connection = mysql+pymysql://neutron:neutron123@controller/neutron
 
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
 
[DEFAULT]
transport_url = rabbit://openstack:openstack123@controller
 
[DEFAULT]
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 = neutron123
 
[DEFAULT]
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
 
[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 = 123
 
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

配置模块化第 2 层 (ML2) 插件
如果有文本缺省,先删除原先所有的,再复制以下文档:https://docs.openstack.org/ocata/config-reference/networking/samples/ml2_conf.ini.html
编辑文件并完成以下操作:/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers = flat,vlan,vxlan
 
[ml2]
tenant_network_types = vxlan
 
[ml2]
mechanism_drivers = linuxbridge,l2population
 
[ml2]
extension_drivers = port_security
 
[ml2_type_flat]
flat_networks = extnet  #指定公共虚拟网络为flat,网络名称为extent,用于下面的配置绑定
 
[ml2_type_vxlan]
vni_ranges = 1:1000
 
[securitygroup]
enable_ipset = true

配置 Linux 桥代理
如果有文本缺省,先删除原先所有的,再复制以下文档:https://docs.openstack.org/ocata/config-reference/networking/samples/linuxbridge_agent.ini.html
编辑:/etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = extent:ens33  #名称:绑定网卡
 
[vxlan]
enable_vxlan = true
local_ip = 192.168.31.20   #根据实际,设置自己的控制节点IP
l2_population = true
 
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

配置内核:编辑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

配置第 3 层代理
编辑文件并完成以下操作:/etc/neutron/l3_agent.ini
#配置 Linux 桥接接口驱动程序:[DEFAULT]
[DEFAULT]
interface_driver = linuxbridge

配置 DHCP 代理
编辑文件并完成以下操作:/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
[DEFAULT]
nova_metadata_host = controller
metadata_proxy_shared_secret = 123 
#将原本的METADATA_SECRET替换为密码,注意之后要用的
#替换为元数据代理的合适机密。METADATA_SECRET

将计算服务配置为使用网络服务,用于neutron交互
在控制节点
编辑文件并执行以下操作:/etc/nova/nova.conf
[neutron]
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 = neutron123
service_metadata_proxy = true
metadata_proxy_shared_secret = 123

创建软连接
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

验证
进入数据库,使用use neutron
use neutron;show tables;
有数据则代表之前的配置成功!

启动网络服务并将其配置为在系统启动时启动
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
 
因为我这配置的是三层网络,所以还要执行以下操作
systemctl enable neutron-l3-agent.service;systemctl start neutron-l3-agent.service


计算节点部署neutron
以下操作均在计算节点
PS:有缺失的文档,要去其他版本复制
1、安装组件
yum install openstack-neutron-linuxbridge ebtables ipset -y

2、配置通用组件
编辑文件并完成以下操作:/etc/neutron/neutron.conf
[DEFAULT]
transport_url = rabbit://openstack:openstack123@controller
 
[DEFAULT]
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 = neutron123
 
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

编辑文件并完成以下操作:/etc/neutron/plugins/ml2/linuxbridge_agent.ini
# 在最后面加入以下内容
[linux_bridge]
physical_interface_mappings = extent:ens33    #之前的名称:绑定网卡
 
[vxlan]
enable_vxlan = true
local_ip = 192.168.31.20          #配置自己的计算节点IP
l2_population = true
 
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

验证
编辑/etc/sysctl.conf文件,在后面添加:
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
启动br_netfilter模块
modprobe br_netfilter
再去查询: sysctl -p

将计算服务配置为使用网络服务
编辑文件并完成以下操作:/etc/nova/nova.conf
[neutron]
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 = neutron123

完成安装
重新启动计算服务,启动 Linux 桥接代理并将其配置为在系统引导时启动
systemctl restart openstack-nova-compute.service

systemctl enable neutron-linuxbridge-agent.service;systemctl start neutron-linuxbridge-agent.service
如果restart时报错类似以下:
systemctl restart openstack-nova-compute.service
Job for openstack-nova-compute.service failed because the control process 
exited with error code. See "systemctl status openstack-nova-compute.service" and "journalctl -xe" for details.
先使用tail -f /var/log/nova/*.log查看日志,如果时如下错误:
ERROR nova   File "/usr/lib/python2.7/site-packages/amqp/connection.py", line 313, in connect
则需要去controller,使用rabbitmqctl list_users查看之前的openstack用户还在不在
解决方法:https://www.cnblogs.com/omgasw/p/12097639.html
rabbitmqctl list_users
再使用tail -f /var/log/neutron/linuxbridge-agent.log 查看日志,如无error则继续,有则先解决
验证:openstack network agent list
PS:重点输出应指示控制器节点上的四个代理和每个计算节点上的一个代理(如果是三层的话,缺一不可)
若出现 :openstack network agent list
Missing value auth-url required for auth plugin password
则是你环境变量没生效,请使用source /etc/keystone/admin-openrc.sh (文件名可能不一样,根据实际为准)
######


部署openstack-T 之Cinder存储块组件
1、创建数据库
使用数据库访问客户端,以 root 用户身份连接到数据库服务器。
mysql -u root -p
依次执行以下命令创建数据库并设置访问权限,完成之后退出数据库访问客户端。这
里 cinder 用户的密码设为 cinder123
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder123';
 
2、创建cinder服务凭据
openstack user create --domain default --password-prompt cinder  #密码也为cinder
将角色添加到用户:admin
openstack role add --project service --user cinder admin
创建存储卷和服务实体:cinder v2 cinder v3
openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3

创建块存储服务 API 端点:
#V2的
openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(project_id\)s
#下面是V3的
openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s


在控制节点上安装Cinder组件
1 .安装软件包
yum -y install openstack-cinder

2、编辑文件并完成以下操作:/etc/cinder/cinder.conf
vim /etc/cinder/cinder.conf
[database]
connection = mysql+pymysql://cinder:cinder123@controller/cinder
[DEFAULT]
transport_url = rabbit://openstack:openstack123@controller
my_ip = 190.168.31.20
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 = cinder
password = cinder123

[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
 
填充块存储数据库:
su -s /bin/sh -c "cinder-manage db sync" cinder

3、在控制节点配置计算服务使用块存储服务
编辑 /etc/nova/nova.conf 配置文件,在 [cinder] 节中添加以下设置:
[cinder]
os_region_name = RegionOne

完成安装
1、重新启动计算 API 服务:systemctl restart openstack-nova-api.service
2、启动块存储服务,并将其配置为在系统引导时启动:
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service


在存储节点上完成Cinder的安装
将计算节点作为存储节点
1、在存储节点主机上增加一块硬盘sdb
2、安装支持工具包
CentOS 7 操作系统默认已安装 LVM 包。如果没有安装,执行以下命令安装 LVM 包,
启动 LVM 元数据服务并将其配置为开机自动启动。
yum -y install lvm2 device-mapper-persistent-data;
systemctl enable lvm2-lvmetad.service;
systemctl start lvm2-lvmetad.service;

3、创建 LVM 物理卷/dev/sdb
pvcreate /dev/sdb

4、基于该物理卷创建 LVM 卷组 cinder-volumes
vgcreate cinder-volumes /dev/sdb

5、编辑/etc/lvm/lvm.conf 文件
在“ devices ”节中 添加 一个过滤器来接受 /dev/sdb 设备并拒绝所有其他设备。
devices {
filter = [ "a/sda/", "a/sdb/", "r/.*/"]

6、在存储节点(计算节点)安装Cinder组件并配置
1、首先安装软件包.
yum -y install openstack-cinder targetcli python-keystone

2、编辑/etc/cinder/cinder.conf 文件并完成相应设置
vim /etc/cinder/cinder.conf 
[database]
connection = mysql+pymysql://cinder:cinder123@controller/cinder
 
[DEFAULT]
transport_url = rabbit://openstack:openstack123@controller
auth_strategy = keystone
my_ip = 190.168.31.20  #计算节点的IP,以实际为准
enabled_backends = lvm
glance_api_servers = http://controller:9292
 
[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 = cinder
password = cinder
 
[lvm]        #没有就加在后面
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = lioadm
 
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp

3、在存储节点(计算节点)
启动块存储卷服务及其依赖组件,并配置它们开机自动启动。
systemctl enable openstack-cinder-volume.service target.service;
systemctl start openstack-cinder-volume.service target.service
验证
1、在控制节点上加载 admin 凭据,以获取管理员权限。
source  /etc/keystone/admin-openrc.sh
2、执行以下命令列出 Cinder 块存储服务组件。
openstack volume service list
3、创建卷进行要测试
在控制节点上创建一个卷,并指定可用域、卷大小。
openstack volume create --size 5 --availability-zone nova testVol   #创建的卷大小为5G
创建完毕,测试
openstack volume list
成功!!
######


部署openstack-t 之Horizon(dashboard)组件
官方部署文档:https://docs.openstack.org/horizon/train/install/install-rdo.html
1、安装软件包:
yum install openstack-dashboard -y

2、编辑文件:/etc/openstack-dashboard/local_settings
#配置仪表板以在节点上使用 OpenStack 服务:controller
OPENSTACK_HOST = "controller"
#允许主机访问仪表板:
ALLOWED_HOSTS = ['*']
#配置会话存储服务:memcached
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'controller:11211',
    }
}
#启用身份 API:
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
#启用对域的支持
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
#配置 API 版本:
OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 3,
}
#配置为通过仪表板创建的用户的默认域:Default
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
#配置为通过仪表板创建的用户的默认角色:user
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
#根据需要配置时区,这里将时区改为上海。
TIME_ZONE = "Asia/Shanghai"
#添加以下设置。
# WEBROOT 定义访问仪表板访问路径(相对于 Web 服务器根目录),注意路径末尾要加斜杠
WEBROOT = '/dashboard/'
#以下两个选项分别定义登录和退出登录(注销)的路径
LOGIN_URL = '/dashboard/auth/login/'
LOGOUT_URL = '/dashboard/auth/logout/'
# LOGIN_REDIRECT_URL 选项定义登录重定向路径
LOGIN_REDIRECT_URL = '/dashboard/'

3、如果/etc/httpd/conf.d/openstack-dashboard.conf 文件中没有包含以下定义,将该定义语句添加到该文件中。
WSGIApplicationGroup %{GLOBAL}

4、在网页用http://controller的IP/dashboard打开,即http://192.168.31.20/dashboard,
登录,我这里域为default,用户名admin,密码admin(以自己的为准!)
进入即为成功!!

重启脚本
#!/bin/bash
#controller节点
#重启keystone账号鉴权服务、重启placement跟踪和监控服务、重启dashboard服务
systemctl restart httpd.service
#重启glance镜像服务
systemctl restart openstack-glance-api.service
#重启nova计算服务
systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
#重启neutron网络服务
systemctl restart neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
#重启三层网络服务
systemctl restart neutron-l3-agent.service


#!/bin/bash
#compute节点
#重启nova计算服务
systemctl restart openstack-nova-compute.service
#重启cinder存储管理组件
systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service

 

posted on 2023-06-04 12:46  SZ_文彬  阅读(90)  评论(0编辑  收藏  举报