部署参考资料:

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/compute-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存储块组件

部署文档:https://docs.openstack.org/cinder/train/install/cinder-controller-install-obs.html#install-and-configure-components

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 = cinder


[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.21  #计算节点的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