一、环境配置
使用centos 7 版本,一个控制节点,一个计算节点,
参考链接:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/
下面的表格给出了需要密码的服务列表以及它们在指南中关联关系:
密码名称 | 描述 |
数据库密码(不能使用变量) | 数据库的root密码 123456 |
ADMIN_PASS | admin 用户密码 123456 |
DASH_DBPASS | 仪表板的数据库密码 123456 |
DEMO_PASS | demo 用户的密码 123456 |
GLANCE_DBPASS | 镜像服务的数据库密码 123456 |
GLANCE_PASS | 镜像服务的 glance 用户密码 123456 |
KEYSTONE_DBPASS | 认证服务的数据库密码 123456 |
METADATA_SECRET | 元数据代理的密码 123456 |
NEUTRON_DBPASS | 网络服务的数据库密码 123456 |
NEUTRON_PASS | 网络服务的 neutron 用户密码 123456 |
NOVA_DBPASS | 计算服务的数据库密码 123456 |
NOVA_PASS | 计算服务中``nova``用户的密码 123456 |
PLACEMENT_PASS | Placement service 的 placement用户密码 123456 |
RABBIT_DBPASS | RabbitMQ的openstack用户密码 123456 |
1、配置两台主机
一台 controller 1核3G ens33 IP:10.0.0.11 ens34 IP:192.186.21.130
一台 compute 1核2G ens33 IP:10.0.0.10 ens34 IP:192.186.21.131
2、修改主机名
hostnamectl set-hostname 主机名(一台 controller 一台 compute)
3、vi /etc/hosts # ip a 查看网卡信息,添加内网本地解析
10.0.0.11 controller
10.0.0.10 compute
4、关闭防火墙和selinux
systemctl start firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
setenfoce 0 临时关闭selinux
永久关闭selinux :
vi /etc/sysconfig/selinux
修改SELINUX=enforcing 为 SELINUX=disabled
重启服务器 reboot 生效
5、配置时间服务器
可参考:https://blog.csdn.net/xin1889/article/details/80025418
controller 节点配置时间服务器
/etc/chrony.conf
添加: allow 10.0.0.0/24 白名单
Local stratum 10 开启时间同步,设定级别
启动时间服务器: systemctl enable chronyd.service
systemctl start chronyd.service
compute节点同步时间服务器
vi /etc/chrony.conf
添加:server 时间服务器名 iburst 配置时间服务器地址
启动时间服务器: systemctl enable chronyd.service
systemctl start chronyd.service
检验: chronyc sources
6、安装软件包
yum install -y centos-release-openstack-ocata 安装用于启用OpenStack仓库的包
yum upgrade 在主机上升级包
报错:
One of the configured repositories failed (CentOS-7 - QEMU EV)
…
failure: repodata/repomd.xml fromcentos-qemu-ev: [Errno 256] No more mirrors to try.
http://mirror.centos.org/$contentdir/7/virt/x86_64/kvm-common/repodata/repomd.xml:[Errno 14] HTTP Error 404 - Not Found
修改 vim CentOS-QEMU-EV.repo
baseurl=http://mirror.centos.org/centos/7/virt/x86_64/kvm-common/
所有节点安装openstack 客户端
yum install -y python-openstackclient
所有节点安装openstack-selinux自动管理跟openstack服务有关的安全策略
yum -y install openstack-selinux
7、controller节点安装配置数据库组件,大多数openstack使用SQL数据库存储信息
yum install -y mariadb mariadb-server python2-PyMySQL
vi /etc/my.cnf.d/openstack.cnf
symbolic-links=0
bind-address=10.0.0.11
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 #此命令设置数据库管理员root密码:123456
8、openstack 使用消息队列服务进行服务之间的协调和状态信息之间的同步。消息队列服务通常运行在controller上,openstack 支持多种消息队列服务,包括RabbitMQ,Qpid和ZeroMQ。大多数openstack发行版本支持RabbitMQ。
在controller 安装RabbitMQ消息队列服务
yum install -y rabbitmq-server
启动服务:
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
添加用户和密码:
rabbitmqctl add_user openstack 123456
为用户添加读、写和访问权限
rabbitmqctl set_permissions openstack “.*” “.*” “.*”
9、各类服务的身份验证机制使用memcached缓存令牌,memcached通常运行在controller节点。
controller安装memcached服务
yum install -y memcached python-memecached
vim /etc/sysconfig/Memcached
…
OPTIONS=”-l 127.0.0.1,::1,controller”
systemctl enable memcached.service
systemctl strat memcached.service
二、认证服务
1、配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌。
1)、用数据库连接客户端以 root 用户连接到数据库服务器:mysql -u root -p
创建 keystone 数据库:CREATE DATABASE keystone;
对``keystone``数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’localhost’ IDENTIFIED BY ‘KEYSTONE_DBPASS’;
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’%’ IDENTIFIED BY ‘KEYSTONE_DBPASS’;
KEYSTONE_DBPASS:123456
退出数据库客户端:exit
2、安装keystone并配置组件
1)、安装包:yum install -y openstack-keystone httpd mod_wsgi
2)、编辑文件 /etc/keystone/keystone.conf 并完成如下动作:
[database]
connection = mysql+pymysql://keystone:123456@controller/keystone
[token]
provider = fernet
3)、初始化身份认证服务的数据库:
su -s /bin/sh -c “keystone-manage db_sync” keystone
4)、初始化Fernet keys:
#keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
#keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
5)、引导身份服务:
keystone-manage bootstrap --bootstrap-password 123456 \
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
3、配置Apache HTTP 服务器
1)、编辑 /etc/httpd/conf/httpd.conf 文件,配置 ServerName 选项为控制节点:
ServerName controller
2)、创建一个链接到“/usr/share/keystone/wsgi-keystone.conf”文件
#ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
3)、启动Apache HTTP 服务并配置其随系统启动:
systemctl enable httpd.service
systemctl start httpd.service
4)、配置admin账户
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
4、创建域、项目、用户和角色,Domain、Project、user、role
1)、使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建``service``项目:
openstack project create --domain default --description “Service Project” service
2)、常规(非管理)任务应该使用无特权的项目和用户,创建 demo 项目和用户。
创建demo项目:
openstack project create --domain default --description “Demo Project” demo
创建demo用户:密码:123456
openstack user create --domain default --password-prompt demo
创建user角色:
openstack role create user
添加角色user到demo项目和用户:
openstack role add --project demo --user demo user
5、验证操作
1)、因为安全性的原因,关闭临时认证令牌机制:
编辑 /etc/keystone/keystone-paste.ini 文件,从[pipeline:admin_api]、[pipeline:admin_api] 和 [pipeline:api_v3] 部分删除 admin_token_auth 。
2)、撤销临时环境变量``OS_AUTH_URL``和``OS_PASSWORD`` 环境变量:
unset OS_AUTH_URL OS_PASSWORD
3)、作为 admin 用户,请求认证令牌:
openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name admin --os-username admin token issue
4)、作为``demo`` 用户,请求认证令牌:
这个命令使用``demo`` 用户的密码和API端口5000,这样只会允许对身份认证服务API的常规(非管理)访问。
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name demo --os-username demo token issue
6、创建OpenStack客户端环境脚本
使用环境变量和命令选项的组合通过``openstack``客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件。这些脚本通常包含客户端所有常见的选项,当然也支持独特的选项。
1)、创建脚本
创建 admin 和 ``demo``项目和用户创建客户端环境变量脚本。本指南的接下来的部分会引用这些脚本,为客户端操作加载合适的的凭证。
编辑文件 admin-openrc 并添加如下内容:
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
编辑文件demo-openrc 并添加如下内容:
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2)、使用脚本
使用特定租户和用户运行客户端,你可以在运行之前简单地加载相关客户端脚本。例如:加载``admin-openrc``文件来身份认证服务的环境变量位置和``admin``项目和用户证书:
. admin-openrc
请求认证令牌:
openstack token issue
. demo-openrc
openstack token issue
三、镜像服务
1、先决条件:安装和配置镜像服务之前必须创建一个数据库、服务凭证和API端点。
1)、创建数据库:
用数据库连接客户端以root用户连接到数据库服务器:
mysql -u root -p
创建glance数据库:
CREATE DATABASE glance;
对“glance”数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@’localhost’ IDENTIFIED BY ‘123456’;
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@’%’ IDENTIFIED BY ‘123456’;
exit
2)、获得admin凭证来获取只有管理员能执行命令的访问权限:
. admin-openrc
3)、要创建服务证书,完成这些步骤:
创建glance用户:
openstack user create --domain default --password-prompt glance
123456
添加admin角色到glance用户和service项目上
openstack role add --project service --user glance admin
创建glance 服务实体:
openstack service create --name glance --description “OpenStack Image” image
4)、创建镜像服务API端点:
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
2、安装并配置镜像服务组件
1)、安装软件包:
yum install -y openstack-glance
2)、编辑配置文件 /etc/glance/glance-api.conf 并完成如下动作:
[database]
…
connection = mysql+pymysql://glance:123456@controller/glance
在[keystone_authtoken]和[paste_deploy]部分,配置认证服务访问: [keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
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
[glance_store]
…
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
3)、编辑文件 /etc/glance/glance-registry.conf 并完成如下动作:
[database]
…
connection = mysql+pymysql://glance:123456@controller/glance
# 123456是用户glance的密码
[keystone_authtoken]
… #注释或者删除其他选项
auth_uri = http://controller:5000
auth_url = http://controller:35357
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
4)、写入镜像服务数据库:
su -s /bin/sh -c “glance-manage db_sync” glance
5)、启动镜像服务、配置开机启动:
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
6)、验证
CirrOS是一个小型的Linux镜像可以用来进行 OpenStack部署测试。
获得admin 凭证来获取只有管理员能执行的命令的访问权限:
. admin-openrc
下载源镜像:
yum install wget -y
wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk/img
使用QCOW2磁盘格式,bare容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问:
openstack image create “cirros” --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public
openstack image list
四、计算服务
安装配置控制节点
1、先决条件
在安装和配置compute服务前,你必须创建数据库服务的凭据以及API endpoints。
1)、创建数据库:
以root连接到数据库服务器:
$mysql -u root -p
创建 nova_api,nova 和 nova_cell0 数据库:
> CREATE DATABASE nova_api;
> CREATE DATABASE nova;
> CREATE DATABASE nava_cell0;
> 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';
> exit
2)、获得admin凭证来获取只有管理员能执行的命令的访问权限:
. admin-openrc
3)、创建服务证书
创建nova用户:
openstack user create --domain default --password-prompt nova
密码:123456
给nova用户添加admin角色:
openstack role add --project service --user nova admin
创建nova服务实体
openstack service create --name nova \
--description “OpenStack Compute” compute
4)、创建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)、创建placement服务用户
openstack user create --domain default --password-prompt placement
密码:123456
6)、将admin角色加入到placement用户下
openstack role add --project service --user placement admin
7)、创建placement 的服务实体
openstack service create --name placement --description “Placement API” placement
8)、创建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
2、安装并配置组件
1)、安装软件包
yum install -y openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api
2)、编辑 /etc/nova/nova.conf 文件并完成下面的操作
[DEFAULT]
…
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123456@controller
my_ip = 10.0.0.11
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api_database]
…
connection = mysql+pymysql://nova:123456@controller/nova_api
[database]
…
connection = mysql+pymysql://nova:123456@controller/nova
[api]
…
auth_strategy = keystone
[keystone_authtoken]
…
auth_uri = http://controller:5000
auth_url = http://controller:35357
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
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[glance]
…
api_servers = http://controller:9292
[oslo_concurrency]
…
lock_path = /var/lib/nova/tmp
[placement]
…
os_region_name = RegionOne
project_domain_name = default
user_domain_name = default
project_name = service
username = placement
auth_type = password
password = 123456
auth_url = http://controller:35357/v3
由于包错误,需要将以下配置加入到placement API的配置文件
<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
3)、同步nova-api数据库
su -s /bin/sh -c “nova-manage api_db sync” nova
4)、注册cell0数据库
su -s /bin/sh -c “nova-manage cell_v2 map_cell0” nova
5)、创建cell1 cell
su -s /bin/sh -c “nova-manage cell_v2 create_cell --name=cell1 --verbose” nova
6)、同步nova数据库
su -s /bin/sh -c “nova-manage db sync” nova
7)、验证nova cell0和cell1是否正确注册
nova-manage cell_v2 list_cells
3、完成安装
启动服务并设置为随机启动:
#systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
# systemctl start openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
安装和配置计算节点
1、安装配置组件
1)、安装软件包
yum install -y openstack-nova-compute
2)、编辑 /etc/nova/nova.conf 文件并完成下面的操作
[DEFAULT]
…
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123456@controller
my_ip = 10.0.0.10
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
…
auth_strategy = keystone
[keystone_authtoken]
…
auth_uri = http://controller:5000
auth_url = http://controller:35357
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
vncserver_listen = 0.0.0.0
vncserver_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]
…
os_region_name = RegionOne
project_domain_name = default
user_domain_name = default
auth_type = password
project_name = service
username = placement
password = 123456
auth_url = http://controller:35357/v3
2、完成安装
1)、确定计算节点是否支持虚拟机的硬件加速
egrep -c ‘(vmx | svm)’ /proc/cpuinfo
返回值为1或大于1的值,不需要额外的配置,返回值为0,代表计算节点不支持硬件加速,需要配置libvirt来使用QEMU来代替KVM。
在 /etc/nova/nova.conf 文件的libvirt 区域修改配置为:
[libvirt]
…
virt_type = qemu
2)、启动计算服务,并设置随机启动:
#systemctl enable libvirtd.service openstack-nova-compute.service
#systemctl start libvirtd.service openstack-nova-compute.service
# less /var/log/nova/nova-compute.log
查看日志发现RabbitMO服务中openstack没有权限访问‘/’
到controller节点查看权限,并给openstack用户具有’/’这个virtual host 中所有资源的配置、写、读权限以便管理其中的资源。
然后回到compute节点重新启动openstack-nova-compute服务,正常启动
3)、将计算节点添加到cell数据库
注意:在控制节点controller运行一下命令
获得admin凭证来获取只有管理员能执行的命令的访问权限:
. admin-openrc
确认一个计算节点在主机列表中
openstack hypervisor list
发现计算主机:
#su -s /bin/sh -c “nova-manage cell_v2 discover_hosts --verbose” nova
当出现下面错误的时候,
是因为缺少数据库连接参数,在出现问题的节点(一般是计算节点)添加下面的配置项目:
#vim /etc/nova/nova.conf
[api_database]
…
connection = mysql+pymysql://nova:123456@controller/nova_api
[database]
…
connection = mysql+pymysql://nova:123456@controller/nova
当添加新的计算节点时,必须在控制器节点上运行 nova-manage cell_v2 discover_host 来注册这些新的计算节点。或者,您可以在 /etc/nova/nova.conf 中设置适当的间隔:
[scheduler]
discover_hosts_in_cells_interval = 300
验证操作
在控制节点执行这些命令验证
1、获得admin凭证来获取只有管理员能执行的命令的访问权限:
. admin-openrc
2、列出服务组件,验证是否成功启动并注册了每个进程:
openstack compute service list
3、列出身份认证服务中的API端点来验证身份认证服务的联通性:
openstack catalog list
4、列出镜像服务中的镜像来验证连通性:
openstack image list
5、检查各单元和placement API 成功运行
nova-status upgrade check
五、网络服务
安装并配置控制节点
先决条件
在你配置OpenStack网络(neutron)服务之前,必须为其创建一个数据库,服务凭证和API端点
1、创建数据库:
用数据库连接客户端以root连接到数据库服务器:
mysql -u root -p
创建neutron数据库:
CREATE DATABASE neutron;
对neutron数据库授予合适的访问权限,使用合适的密码:
GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron’@’localhost’ IDENTIFIED BY ‘123456’;
GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron’@’%’ IDENTIFIED BY ‘123456’;
exit
2、获得admin凭证来获取只有管理员能执行的命令的访问权限:
. admin
3、创建服务证书:
创建neutron用户:
openstack user create --domain default --password-prompt neutron
密码:123456
添加admin角色到neutron用户:
openstack role add --project service --user neutron admin
创建neutron服务实体:
openstack service create --name neutron \
--description “OpenStack Networking” network
4、创建网络服务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
配置网络:自服务网络(自服务网络在提供者网络的基础上多了layer - 3服务,支持实例连接到私有网络。自服务网络同样支持实例连接到公共网络。)在controller节点安装和配置。
安装组件:
yum install -y openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables
配置服务组件
编辑 /etc/neutron/neutron.conf 文件并完成以下操作:
[database] #配置数据库访问
…
connection = mysql+pymysql://neutron:123456@controller/neutron
[DEFAULT]
…
core_plugin = ml2 #启用ML2插件,路由服务和重叠的IP地址
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:123456@controller #配置消息队列访问权限
auth_strategy = keystone #配置认证服务
notify_nova_on_port_status_changes = true #配置网络服务来通知计算节点的网络拓扑变化
notify_nova_on_port_data_changes = true
[keystone_authtoken] #配置认证服务
…
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_typr = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123456
[nova] #配置网络服务来通知计算节点的网络拓扑变化
auth_url = http://controller:35357
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
配置Modular Layer 2(ML2)插件
编辑 /etc/neutron/plugins/ml2/ml2_conf.ini 文件并完成以下操作:
[ml2]
…
type_drivers = flat,vlan,vxlan #启用flat,VLAN以及VXLAN网络
tenant_network_types = vxlan #启用VXLAN私有网络
mechanism_drivers = linuxbridge,l2population #启用Linuxbridge和l2机制
extension_drivers = port_security #启用端口安全扩展驱动
[ml2_type_flat]
…
flat_networks = provide #配置公共虚拟网络flat网络
[ml2_type_vxlan]
…
vni_ranges = 1:1000 #为私有网络配置VXLAN网络识别的网络范围
[securitygroup]
…
enable_ipset = true #启用ipset增加安全组的方便性
配置Linuxbridge 代理
编辑 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件并完成以下操作:
[linux_bridge]
physical_interface_mappings = provider:ens34 #将公共虚拟网络和公共物理网络接口对应起来
[vxlan]
enable_vxlan = true #启用VXLAN覆盖网络,配置覆盖网络的物理接口的IP地址,启用layer - 2 population
local_ip = 192.168.21.130
l2_population = true
[securitygroup]
…
enable_security_group = true #启用安全组并配置Linux桥接iptables防火墙驱动
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置layer-3代理
编辑 /etc/neutron/l3_agent.ini 文件并完成以下操作:
[DEFAULT]
…
interface_driver = linuxbridge
配置DHCP代理
编辑 /etc/neutron/dhcp_agent.ini 文件并完成下面的操作:
[DEFAULT] #配置linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
…
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
配置元数据代理
编辑 /etc/neutron/metadata_agent.ini 文件并完成以下操作:
[DEFAULT] #配置元数据主机以及共享密码
…
nova_metadata_ip = controller
metadata_proxy_shared_secret = 123456
配置计算服务来使用网络服务
编辑 /etc/nova/nova.conf 文件并完成以下操作:
[neutron] #配置访问参数,启用元数据代理并设置密码
…
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 123456
service_metadata_proxy = true
metadata_proxy_shared_secret = 123456
完成安装
1、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini 指向ML2插件配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 如果超链接不存在,使用下面的命令创建:
#ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
2、同步数据库
#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
3、重启计算API服务
#systemctl restart openstack-nova-api.service
4、当系统启动时,启动networking服务并配置随机启动
#systemctl enable neutron-server.service neutron-linuxbridge-agent.service \
neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
#systemctl start neutron-server.service neutron-linuxbridge-agent.service \
neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
安装配置计算节点
安装组件
#yum install -y openstack-neutron-linuxbridge ebtables ipset
配置通用组件
编辑 /etc/neutron/neutron.conf 文件并完成以下操作
[database] #注释所有connection 项,因为计算节点不直接访问数据库
[DEFAULT]
... #配置RabbitMQ 消息队列访问权限
transport_url = rabbit://openstack:123456@controller
auth_strategy = keystone #配置认证服务访问
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller11211
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
配置网络:与控制节点选择相同的网络配置,步骤同控制节点网络配置。
配置Linuxbridge 代理
编辑 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件并完成以下操作:
[linux_bridge]
physical_interface_mappings = provider:ens34 #将公共虚拟网络和公共物理网络接口对应起来
[vxlan]
enable_vxlan = true #启用VXLAN覆盖网络,配置覆盖网络的物理接口的IP地址,启用layer - 2 population
local_ip = 192.168.21.131
l2_population = true
[securitygroup]
…
enable_security_group = true #启用安全组并配置Linux桥接iptables防火墙驱动
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置计算服务来使用网络服务
编辑 /etc/nova/nova.conf 文件并完成下面的操作
[neutron] #在neutron部分配置访问参数
…
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 123456
完成安装
1、重启计算服务
systemctl restart openstack-nova-compute.service
2、启动Linuxbridge代理并配合开机启动
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
验证操作
在控制节点执行以下命令
1、获取admin凭证来获取只有管理员能执行的命令的访问权限:
. admin
2、列出加载的扩展来验证 neutron-server 进程是否正常启动:
openstack extension list –network
3、网络服务验证列出代理以验证启动neutron代理是否成功:
openstack network agent list
如果发现控制节点或计算节点的Linux bridge agent 没有起来,有可能是私网网卡没启动,或者配置文件的对应网卡和IP信息填写错误。
六、仪表盘
计算节点安装和配置仪表板,使用Apache web 服务器。
安装并配置组件
1、安装软件包:
yum install –y openstack-dashboard
2、编辑文件 /etc/openstack-dashboard/local_settings 并完成如下动作:
在controller节点配置仪表盘以使用OpenStack服务
OPENSTACK_HOST = “controller”
这个参数经常是[‘*’, ] 允许所有主机访问仪表板,这对于开发工作可能是有用的,但可能不安全,不应该用于生产。
ALLOWED_HOSTS = [‘one.example.com’, ’two.example.com’]
配置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”: 2,
通过仪表盘创建用户时的默认域配置为default:
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = “default”
通过仪表盘创建的用户默认角色配置为user:
OPENSTACK_KEYSTONE_DEFAULT_ROLE = “user”
如果选择网络参数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”
如果未包含,则添加
vim /etc/httpd/conf.d/openstack-dashboard.conf
WSGIApplicationGroup %{GLOBAL}
完成安装
重启web服务器以及回话存储服务:
systemctl restart httpd.service memcached.service
验证操作
浏览器中输入 http://10.0.0.11/dashboard 访问仪表盘
验证使用 admin 或者 demo 用户凭证和 default 域凭证