云计算:OpenStack 分布式架构部署(单控制节点与单计算节点)

目录

一、实验

1.环境

2.OpenStack包安装

3.数据库安装

4.消息队列安装

5.令牌缓存安装

6.认证服务安装

7.镜像服务安装

[8. 计算服务安装(控制节点)](#8. 计算服务安装(控制节点))

[9. 计算服务安装(计算节点)](#9. 计算服务安装(计算节点))

[10. 网络服务安装(控制节点)](#10. 网络服务安装(控制节点))

[11. 网络服务安装(计算节点)](#11. 网络服务安装(计算节点))

[12. Dashboard图形化界面安装(控制节点)](#12. Dashboard图形化界面安装(控制节点))


一、实验

1.环境

(1) 主机

表1 主机

|------------|------|-----------------|----|
| 主机 | 架构 | IP | 备注 |
| controller | 控制节点 | 192.168.204.210 | |
| compute01 | 计算节点 | 192.168.204.211 | |

(2)官网

OpenStack Docs: OpenStack Installation Guide for Red Hat Enterprise Linux and CentOS

(3)网络

① 控制节点 ping 计算节点

bash 复制代码
[root@controller ~]# ping compute01 -c 1

②计算节点 ping 控制节点

bash 复制代码
[root@compute01 ~]# ping compute01 -c 1

(4) 时间同步

① 控制节点

bash 复制代码
[root@controller ~]# yum install -y chrony
bash 复制代码
[root@controller ~]# vim /etc/chrony.conf
[root@controller ~]# systemctl restart chronyd.service && systemctl enable chronyd.service

② 计算节点

bash 复制代码
[root@compute01 ~]# yum install -y chrony

③测试

bash 复制代码
[root@controller ~]# date

[root@compute01 ~]# date

2.OpenStack包安装

(1)控制节点安装 OpenStack 客户端

bash 复制代码
# yum install python-openstackclient

(2)CentOS 默认启用了 SELinux . 安装 openstack-selinux 软件包以便自动管理 OpenStack 服务的安全策略

bash 复制代码
# yum install openstack-selinux

3.数据库安装

(1)安装软件包

bash 复制代码
# yum install mariadb mariadb-server python2-PyMySQL

(2)创建并编辑 /etc/my.cnf.d/openstack.cnf

① 在 [mysqld] 部分,设置 bind-address值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库

bash 复制代码
[mysqld]
...
bind-address = 192.168.204.210

②在[mysqld]部分,设置如下键值来启用一起有用的选项和 UTF-8 字符集

bash 复制代码
[mysqld]
...
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

③修改

(3) 完成安装

①启动数据库服务,并将其配置为开机自启

bash 复制代码
# systemctl enable mariadb.service
# systemctl start mariadb.service

②为了保证数据库服务的安全性,运行mysql_secure_installation脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。

4.消息队列安装

(1)安装包

bash 复制代码
# yum install rabbitmq-server

(2)启动消息队列服务并将其配置为随系统启动

bash 复制代码
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service

(3)添加 openstack 用户

bash 复制代码
# rabbitmqctl add_user openstack RABBIT_PASS

(4)给openstack用户配置写和读权限

bash 复制代码
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

5.令牌缓存安装

(1)安装软件包

bash 复制代码
# yum install memcached python-memcached

(2)修改配置

bash 复制代码
# vim /etc/sysconfig/memcached

(3)启动Memcached服务,并且配置它随机启动

bash 复制代码
# systemctl enable memcached.service
# systemctl start memcached.service

(4)查看服务

6.认证服务安装

(1)创建数据库和管理员令牌

bash 复制代码
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';

用数据库连接客户端 (注意生产环境需要账户及密码)

bash 复制代码
$ mysql -u root -p

创建 keystone 数据库

bash 复制代码
CREATE DATABASE keystone;

对keystone数据库授予恰当的权限

bash 复制代码
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';

(2)安全并配置组件

运行以下命令来安装包

bash 复制代码
# yum install openstack-keystone httpd mod_wsgi

安装工具包

bash 复制代码
# yum install -y openstack-utils

(3) 编辑文件 /etc/keystone/keystone.conf

① 在[DEFAULT]部分,定义初始管理令牌的值

bash 复制代码
[DEFAULT]
...
admin_token = ADMIN_TOKEN

②在 [database] 部分,配置数据库访问

bash 复制代码
[database]
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

③ 在[token]部分,配置Fernet UUID令牌的提供者。

bash 复制代码
[token]
...
provider = fernet

④初始化身份认证服务的数据库

bash 复制代码
# su -s /bin/sh -c "keystone-manage db_sync" keystone

④ 查看

bash 复制代码
mysql keystone -e "show tables;"

⑥初始化Fernet keys

bash 复制代码
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

(4)配置 Apache HTTP 服务器

① 编辑/etc/httpd/conf/httpd.conf 文件,配置ServerName 选项为控制节点

bash 复制代码
ServerName controller

②创建文件 /etc/httpd/conf.d/wsgi-keystone.conf

bash 复制代码
Listen 5000
Listen 35357

<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

③ 启动 Apache HTTP 服务并配置其随系统启动

bash 复制代码
# systemctl enable httpd.service
# systemctl start httpd.service
bash 复制代码
# systemctl status httpd.service

(5) 创建服务实体和API端点

①申明环境变量

bash 复制代码
$ export OS_TOKEN=ADMIN_TOKEN
$ export OS_URL=http://controller:35357/v3
$ export OS_IDENTITY_API_VERSION=3

② 创建服务实体和身份认证服务

bash 复制代码
$ openstack service create \
  --name keystone --description "OpenStack Identity" identity

③ 创建认证服务的 API 端点

bash 复制代码
$ openstack endpoint create --region RegionOne \
  identity public http://controller:5000/v3

$ openstack endpoint create --region RegionOne \
  identity internal http://controller:5000/v3

$ openstack endpoint create --region RegionOne \
  identity admin http://controller:35357/v3

④ 查看

bash 复制代码
# openstack service list

# openstack endpoint list

(6)创建域、项目、用户和角色

①创建域default

bash 复制代码
$ openstack domain create --description "Default Domain" default

②创建 admin 项目

bash 复制代码
$ openstack project create --domain default \
  --description "Admin Project" admin

③ 创建 admin 用户

bash 复制代码
$ openstack user create --domain default \
  --password-prompt admin

④创建 admin 角色

bash 复制代码
$ openstack role create admin

⑤ 添加admin 角色到 admin 项目和用户上

bash 复制代码
$ openstack role add --project admin --user admin admin

⑥ 创建service项目

bash 复制代码
$ openstack project create --domain default \
  --description "Service Project" service

⑦ 查看 (需要后续脚本支持)

bash 复制代码
# openstack domain list

# openstack project list

# openstack role list

# openstack user list

(7) 创建 OpenStack 客户端环境脚本

编辑文件 admin-openrc,将 ADMIN_PASS 替换为你在认证服务中为 admin 用户选择的密码。

bash 复制代码
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

7.镜像服务安装

(1)创建数据库

用数据库连接客户端以 root 用户连接到数据库服务器

bash 复制代码
$ mysql -u root -p

创建 glance 数据库

bash 复制代码
CREATE DATABASE glance;

对glance数据库授予权限

bash 复制代码
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
  IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
  IDENTIFIED BY 'GLANCE_DBPASS';

(2)创建 glance 用户

① 创建

bash 复制代码
$ openstack user create --domain default --password-prompt glance

查看

② 添加 admin 角色到 glance 用户和 service 项目上

bash 复制代码
$ openstack role add --project service --user glance admin

③创建glance服务实体

bash 复制代码
$ openstack service create --name glance \
  --description "OpenStack Image" image

查看

④创建镜像服务的 API 端点

bash 复制代码
$ 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

(3)安装软件包

bash 复制代码
# yum install openstack-glance

(4)编辑文件 /etc/glance/glance-api.conf

① 在 [database] 部分,配置数据库访问

bash 复制代码
[database]
...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

② 在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问

bash 复制代码
[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 = GLANCE_PASS

[paste_deploy]
...
flavor = keystone

③在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置

bash 复制代码
[glance_store]
...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

④在 [database] 部分,配置数据库访问

bash 复制代码
[database]
...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

⑤在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问

bash 复制代码
[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 = GLANCE_PASS

[paste_deploy]
...
flavor = keystone

⑥备份并修改

(5)写入镜像服务数据库(忽略输出中任何不推荐使用的信息)

bash 复制代码
# su -s /bin/sh -c "glance-manage db_sync" glance

(6)查看数据库

bash 复制代码
# mysql glance -e "show tables;"

(6)完成安装

启动镜像服务、配置他们随机启动

bash 复制代码
# systemctl enable openstack-glance-api.service \
  openstack-glance-registry.service
# systemctl start openstack-glance-api.service \
  openstack-glance-registry.service

(7) 查看网络

bash 复制代码
# netstat nltup

(8)验证操作

①下载源镜像

bash 复制代码
$ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

② 使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它

bash 复制代码
$ openstack image create "cirros" \
  --file cirros-0.3.4-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --public

③确认镜像的上传并验证属性

bash 复制代码
$ openstack image list

④ 登录数据库验证

⑤查看

bash 复制代码
# openstack endpoint list | grep glance

8. 计算服务安装(控制节点)

(1)创建数据库

用数据库连接客户端

bash 复制代码
$ mysql -u root -p

创建 nova_api 和 nova 数据库

bash 复制代码
CREATE DATABASE nova_api;
CREATE DATABASE nova;

对数据库进行正确的授权

bash 复制代码
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';

(2)创建 nova 用户

bash 复制代码
$ openstack user create --domain default \
  --password-prompt nova

① 给 nova 用户添加 admin 角色

bash 复制代码
$ openstack role add --project service --user nova admin

② 创建 nova 服务实体

bash 复制代码
$ openstack service create --name nova \
  --description "OpenStack Compute" compute

③ 创建 Compute 服务 API 端点

bash 复制代码
$ openstack endpoint create --region RegionOne \
  compute public http://controller:8774/v2.1/%\(tenant_id\)s

$ openstack endpoint create --region RegionOne \
  compute internal http://controller:8774/v2.1/%\(tenant_id\)s

$ openstack endpoint create --region RegionOne \
  compute admin http://controller:8774/v2.1/%\(tenant_id\)s

(3)查看

bash 复制代码
# openstack endpoint list

(4) 安装软件包

bash 复制代码
# yum install openstack-nova-api openstack-nova-conductor \
  openstack-nova-console openstack-nova-novncproxy \
  openstack-nova-scheduler

(5) 编辑/etc/nova/nova.conf

① 在[DEFAULT]部分,只启用计算和元数据API

bash 复制代码
[DEFAULT]
...
enabled_apis = osapi_compute,metadata

②在[api_database]和[database]部分,配置数据库的连接

bash 复制代码
[api_database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

[database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

③在 [DEFAULT]和 [oslo_messaging_rabbit]部分,配置 RabbitMQ消息队列访问

bash 复制代码
[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

④ 在 [DEFAULT]和 [keystone_authtoken] 部分,配置认证服务访问

bash 复制代码
[DEFAULT]
...
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 = NOVA_PASS

⑤ 在 [DEFAULT 部分,配置my_ip 来使用控制节点的管理接口的IP 地址

bash 复制代码
[DEFAULT]
...
my_ip = 192.168.204.210

⑥在 [DEFAULT] 部分,使能 Networking 服务

bash 复制代码
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

⑦在[vnc]部分,配置VNC代理使用控制节点的管理接口IP地址

bash 复制代码
[vnc]
...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

⑧在 [glance] 区域,配置镜像服务 API 的位置

bash 复制代码
[glance]
...
api_servers = http://controller:9292

⑨在 [oslo_concurrency] 部分,配置锁路径

bash 复制代码
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp

⑩备份并修改

(6) 同步Compute 数据库

bash 复制代码
# su -s /bin/sh -c "nova-manage api_db sync" nova
# su -s /bin/sh -c "nova-manage db sync" nova

(7)查看数据库

bash 复制代码
# mysql nova -e "show tables;"

(8)启动 Compute 服务并将其设置为随系统启动

bash 复制代码
# 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

(9) 查看服务列表

bash 复制代码
# openstack service list

9. 计算服务安装(计算节点)

(1)安装软件包

bash 复制代码
# yum install openstack-nova-compute -y

# yum install libvirt -y

# yum install openstack-utils.noarch -y

(2)编辑/etc/nova/nova.conf

①在[DEFAULT]和 [oslo_messaging_rabbit]部分,配置RabbitMQ消息队列的连接

bash 复制代码
[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

② 在 [DEFAULT]和 [keystone_authtoken] 部分,配置认证服务访问

bash 复制代码
[DEFAULT]
...
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 = NOVA_PASS

③ 在 [DEFAULT] 部分,配置 my_ip 选项

bash 复制代码
[DEFAULT]
...
my_ip = 192.168.204.211

④ 在 [DEFAULT] 部分,使能 Networking 服务

bash 复制代码
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

⑤ 在[vnc]部分,启用并配置远程控制台访问

bash 复制代码
[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 的位置

bash 复制代码
[glance]
...
api_servers = http://controller:9292

⑦ 在 [oslo_concurrency] 部分,配置锁路径

bash 复制代码
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp

⑧ 备份修改

(3)完成安装

① 确定计算节点是否支持虚拟机的硬件加速

bash 复制代码
$ egrep -c '(vmx|svm)' /proc/cpuinfo

② 启动计算服务及其依赖,并将其配置为随系统自动启动

bash 复制代码
# systemctl enable libvirtd.service openstack-nova-compute.service
# systemctl start libvirtd.service openstack-nova-compute.service

(4)验证操作

查看服务列表

bash 复制代码
# openstack service list

10. 网络服务安装(控制节点)

(1)创建数据库

用数据库连接客户端

bash 复制代码
$ mysql -u root -p

创建neutron数据库

bash 复制代码
CREATE DATABASE neutron;

对neutron数据库授予合适的访问权限,使用合适的密码替换NEUTRON_DBPASS

bash 复制代码
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
  IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
  IDENTIFIED BY 'NEUTRON_DBPASS';

(2)创建neutron用户

bash 复制代码
$ openstack user create --domain default --password-prompt neutron

(3)添加admin角色到neutron用户

bash 复制代码
$ openstack role add --project service --user neutron admin

(4)创建neutron服务实体

bash 复制代码
$ openstack service create --name neutron \
  --description "OpenStack Networking" network

(5)创建网络服务API端点

bash 复制代码
$ 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

(6)查看

(7)安装 Modular Layer 2 (ML2) 插件

bash 复制代码
# yum install openstack-neutron openstack-neutron-ml2 \
  openstack-neutron-linuxbridge ebtables

(8)编辑/etc/neutron/plugins/ml2/ml2_conf.ini

① 在 [database] 部分,配置数据库访问

bash 复制代码
[database]
...
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron

② 在[DEFAULT]部分,启用ML2插件并禁用其他插件

bash 复制代码
[DEFAULT]
...
core_plugin = ml2
service_plugins =

③ 在 [DEFAULT]和 [oslo_messaging_rabbit]部分,配置 "RabbitMQ" 消息队列的连接

bash 复制代码
[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

④在 [DEFAULT]和 [keystone_authtoken]部分,配置认证服务访问

bash 复制代码
[DEFAULT]
...
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 = neutron
password = NEUTRON_PASS

⑤ 在[DEFAULT]和[nova]部分,配置网络服务来通知计算节点的网络拓扑变化

bash 复制代码
[DEFAULT]
...
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True

[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 = NOVA_PASS

⑥ 在 [oslo_concurrency] 部分,配置锁路径

bash 复制代码
[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp

⑦备份修改

(9)配置 Modular Layer 2 (ML2) 插件,编辑/etc/neutron/plugins/ml2/ml2_conf.ini

① 在[ml2]部分,启用flat和VLAN网络

bash 复制代码
[ml2]
...
type_drivers = flat,vlan

② 在[ml2]部分,禁用私有网络

bash 复制代码
[ml2]
...
tenant_network_types =

③ 在[ml2]部分,启用Linuxbridge机制

bash 复制代码
[ml2]
...
mechanism_drivers = linuxbridge

④在[ml2]部分,启用端口安全扩展驱动

bash 复制代码
[ml2]
...
extension_drivers = port_security

⑤ 在[ml2_type_flat]部分,配置公共虚拟网络为flat网络

bash 复制代码
[ml2_type_flat]
...
flat_networks = provider

⑥ 在 [securitygroup]部分,启用 ipset 增加安全组规则的高效性

bash 复制代码
[securitygroup]
...
enable_ipset = True

(10)备份修改

(11)查看IP

(12)配置Linuxbridge代理,编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini

① 在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来

bash 复制代码
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

② 在[vxlan]部分,禁止VXLAN覆盖网络

bash 复制代码
[vxlan]
enable_vxlan = False

③ 在 [securitygroup]部分,启用安全组并配置 Linuxbridge iptables firewall driver

bash 复制代码
[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

(13)修改备份

(14)配置DHCP代理,编辑/etc/neutron/dhcp_agent.ini文件

① 在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据

bash 复制代码
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True

② 修改备份

(15)配置元数据代理

① 编辑/etc/neutron/metadata_agent.ini文件,在[DEFAULT] 部分,配置元数据主机以及共享密码

bash 复制代码
[DEFAULT]
...
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET

②修改备份

(16)为计算节点配置网络服务

①编辑/etc/nova/nova.conf文件,在[neutron]部分,配置访问参数,启用元数据代理并设置密码

bash 复制代码
[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 = NEUTRON_PASS

service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET

② 直接修改

(17)完成安装

① 网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini。如果超链接不存在,使用下面的命令创建它

bash 复制代码
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

② 同步数据库

bash 复制代码
# 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

③ 重启计算API 服务

bash 复制代码
# systemctl restart openstack-nova-api.service

(18)查看

bash 复制代码
# neutron agent-list

11. 网络服务安装(计算节点)

(1)安装组件

bash 复制代码
# yum install openstack-neutron-linuxbridge ebtables ipset

(2)配置通用组件,编辑/etc/neutron/neutron.conf文件

①在[database]部分,注释所有connection项,因为计算节点不直接访问数据库;

②在 [DEFAULT]和 [oslo_messaging_rabbit]部分,配置 RabbitMQ消息队列的连接

bash 复制代码
[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

③ 在 [DEFAULT]和 [keystone_authtoken]部分,配置认证服务访问(将 NEUTRON_PASS 替换为在认证服务中为 neutron 用户选择的密码)

bash 复制代码
[DEFAULT]
...
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 = neutron
password = NEUTRON_PASS

④ 在 [oslo_concurrency] 部分,配置锁路径

bash 复制代码
[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp

⑤ 备份修改

(3) 配置Linuxbridge代理,编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini

① 在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来

bash 复制代码
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

② 在[vxlan]部分,禁止VXLAN覆盖网络

bash 复制代码
[vxlan]
enable_vxlan = False

③ 在 [securitygroup]部分,启用安全组并配置 Linuxbridge iptables firewall driver

bash 复制代码
[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

④ 备份修改

(4)配置网络选项,编辑/etc/nova/nova.conf文件

在[neutron]部分,配置访问参数

bash 复制代码
[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 = NEUTRON_PASS

(5)完成安装

重启计算服务

bash 复制代码
# systemctl restart openstack-nova-compute.service

启动Linuxbridge代理并配置它开机自启动

bash 复制代码
# systemctl enable neutron-linuxbridge-agent.service
# systemctl start neutron-linuxbridge-agent.service

(6)查看

bash 复制代码
# neutron agent-list

(7)验证,列出加载的扩展来验证neutron-server进程是否正常启动

bash 复制代码
$ neutron ext-list

12. Dashboard图形化界面安装(控制节点)

(1)安装软件包

bash 复制代码
# yum install openstack-dashboard

(2)编辑文件 /etc/openstack-dashboard/local_settings

① 在 controller 节点上配置仪表盘以使用 OpenStack 服务

bash 复制代码
OPENSTACK_HOST = "controller"

②允许所有主机访问仪表板

bash 复制代码
ALLOWED_HOSTS = ['*', ]

③ 配置 memcached 会话存储服务

bash 复制代码
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'controller:11211',
    }
}

④启用第3版认证API

bash 复制代码
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

⑤ 用对域的支持

bash 复制代码
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

⑥ 启配置API版本

bash 复制代码
OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 2,
}

⑦ 通过仪表盘创建用户时的默认域配置为 default

bash 复制代码
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"

⑧ 通过仪表盘创建的用户默认角色配置为 user

bash 复制代码
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

⑨ 如果选择网络参数1,禁用支持3层网络服务

bash 复制代码
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,
}

⑩可以选择性地配置时区

bash 复制代码
TIME_ZONE = "Asia/Shagnhai"

(3) 完成安装

重启web服务器以及会话存储服务

bash 复制代码
# systemctl restart httpd.service memcached.service

(4)验证操作

①验证仪表盘的操作

bash 复制代码
在浏览器中输入 http://controller/dashboard访问仪表盘。

验证使用 admin用户凭证和default域凭证。

② 登录成功

③ 查看项目

④查看镜像

⑤查看用户

⑥ 查看角色

⑦安全

相关推荐
yunteng52115 分钟前
通用架构(同城双活)(单点接入)
架构·同城双活·单点接入
麦聪聊数据1 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
Fcy6481 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满1 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠2 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
程序员侠客行2 小时前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
Harvey9032 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技3 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
bobuddy3 小时前
射频收发机架构简介
架构·射频工程
释怀不想释怀3 小时前
Linux环境变量
linux·运维·服务器