参考文章:本地存储的裸设备映射
1 ssh连接esxi
2 列出磁盘,也可以在web控制台中查看
1 | ls -l /vmfs/devices/disks |
3 将设备配置为 RDM,并将 RDM 指针文件输出到您所选的目标
1 | vmkfstools -z /vmfs/devices/disks/磁盘设备名 /vmfs/volumes/存储池/目录/虚拟磁盘名.vmdk |
4 在虚拟机中添加映射的虚拟磁盘
闲暇时也许会更新吧
参考文章:本地存储的裸设备映射
1 ssh连接esxi
2 列出磁盘,也可以在web控制台中查看
1 | ls -l /vmfs/devices/disks |
3 将设备配置为 RDM,并将 RDM 指针文件输出到您所选的目标
1 | vmkfstools -z /vmfs/devices/disks/磁盘设备名 /vmfs/volumes/存储池/目录/虚拟磁盘名.vmdk |
4 在虚拟机中添加映射的虚拟磁盘
1 | sudo vim /etc/cloud/cloud.cfg |
找到
preserve_hostname: false
将值修改为true
1 | sudo hostnamectl set-hostname 新主机名 |
重启
本文参考:OpenStack安装指南
指南中提到指南不适用于生产系统安装,而是为了学习OpenStack而创建最小概念验证。
指南中要求的硬件:
1个控制节点,拥有1-2CPU,8G RAM,100GB存储,2NIC
至少一个计算节点,每个节点拥有2-4+CPU,8+G RAM,100+GB存储,2NIC
可选1个块存储节点,拥有1-2CPU,4G RAM,100+GB存储,1NIC
可选多个对象存储节点,每个节点拥有1-2CPU,4+GB RAM,100+GB存储,1NIC
网络,提供商网络 / 自助服务网络,二选一,自助服务网络基于提供商网络,但更复杂。
指南中提到的最低硬件要求:
控制节点:1个处理器,4 GB内存和5 GB存储
计算节点:1个处理器,2 GB内存和10 GB存储
指南中提到的密码引用地址
本文所有系统均为VMware Workstation 15 Pro中的Ubuntu Server 18.04.2虚拟机
本文仅选择控制节点和计算节点,存储使用本地存储,不使用存储节点
控制节点:2核CPU,4G RAM,100GB存储,2网络接口(ens33:192.168.2.50,ens38:192.168.2.52)
计算节点:4核CPU,4G RAM,100GB存储,2网络接口(ens33:192.168.2.51,ens38:192.168.2.53)
网络:VMware虚拟网络
配置第一个接口作为管理接口:
IP地址:192.168.2.50
网络掩码:255.255.255.0(或/24)
默认网关:192.168.2.1
Ubuntu静态IP配置就不举例了,我这里直接DHCP服务器绑定了MAC地址和IP。
差不多与控制节点完全一样
配置第一个接口作为管理接口:
IP地址:192.168.2.51
网络掩码:255.255.255.0(或/ 24)
默认网关:192.168.2.1
将节点的主机名设置为controller。
编辑/etc/hosts文件,添加以下内容
#controller
192.168.2.50 controller
#compute1
192.168.2.51 compute1
#下面是块存储和对象存储的示例,有的话才需要
#block1
10.0.0.41 block1#object1
10.0.0.51 object1#object2
10.0.0.52 object2
将节点的主机名设置为compute1。
编辑/etc/hosts文件,添加以下内容
#controller
192.168.2.50 controller
#compute1
192.168.2.51 compute1
#下面是块存储和对象存储的示例,有的话才需要
#block1
10.0.0.41 block1#object1
10.0.0.51 object1#object2
10.0.0.52 object2
都ping通了就算成功了
1 | ping -c 4 docs.openstack.org |
1 | ping -c 4 openstack.org |
控制节点使用网络上的NTP服务器同步时间,其它节点使用控制节点同步时间
安装chrony
1 | apt-get install chrony |
修改/etc/chrony/chrony.conf,
使用cn.ntp.org.cn,添加以下内容
server cn.ntp.org.cn iburst
允许其它节点连接控制节点,添加以下内容
allow 192.168.2.0/24
重启NTP服务
1 | service chrony restart |
安装chrony
1 | apt-get install chrony |
修改/etc/chrony/chrony.conf,
使用cn.ntp.org.cn,添加以下内容
server controller iburst
注释掉其它的服务器
pool ntp.ubuntu.com iburst maxsources 4
ool 0.ubuntu.pool.ntp.org iburst maxsources 1
ool 1.ubuntu.pool.ntp.org iburst maxsources 1
ool 2.ubuntu.pool.ntp.org iburst maxsources 2
重启NTP服务
1 | service chrony restart |
1 | chronyc sources |
1 | chronyc sources |
添加存储库
1 | add-apt-repository cloud-archive:stein |
更新,如果升级中包含新内核,需要重启
1 | apt-get update && apt-get dist-upgrade |
安装
1 | apt-get install python3-openstackclient |
安装
1 | apt-get install mariadb-server python-pymysql |
创建并编辑/etc/mysql/mariadb.conf.d/99-openstack.cnf文件,并将bind-address 密钥设置为控制器节点的管理IP地址,以允许其他节点通过管理网络进行访问。设置其他键以启用有用选项和UTF-8字符集:
[mysqld]
bind-address = 192.168.2.50
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
重启数据库
1 | service mysql restart |
数据库初始化设置
1 | mysql_secure_installation |
安装
1 | apt-get install rabbitmq-server |
添加openstack用户
1 | rabbitmqctl add_user openstack 用户密码 |
允许用户进行配置,写入和读取访问 openstack
1 | rabbitmqctl set_permissions openstack ".*" ".*" ".*" |
安装
1 | apt-get install memcached python-memcache |
编辑/etc/memcached.conf
文件并配置服务以使用控制器节点的管理IP地址
1 | vim /etc/memcached.conf |
改变现有行
-l 192.168.2.50
重启memcached服务
1 | service memcached restart |
安装
1 | apt-get install etcd |
编辑/etc/default/etcd
文件并设置ETCD_INITIAL_CLUSTER
, ETCD_INITIAL_ADVERTISE_PEER_URLS
,ETCD_ADVERTISE_CLIENT_URLS
, ETCD_LISTEN_CLIENT_URLS
控制器节点
ETCD_NAME=”controller”
ETCD_DATA_DIR=”/var/lib/etcd”
ETCD_INITIAL_CLUSTER_STATE=”new”
ETCD_INITIAL_CLUSTER_TOKEN=”etcd-cluster-01”
ETCD_INITIAL_CLUSTER=”controller=http://192.168.2.50:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS=”http://192.168.2.50:2380"
ETCD_ADVERTISE_CLIENT_URLS=”http://192.168.2.50:2379"
ETCD_LISTEN_PEER_URLS=”http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS=”http://192.168.2.50:2379"
启动启用服务
1 | systemctl enable etcd |
Stein的最小部署
至少需要安装以下服务。按以下指定的顺序安装服务:
身份服务 – keystone installation for Stein
映像服务 – glance installation for Stein
安置服务 – placement installation for Stein
计算服务 – nova installation for Stein
网络服务 – neutron installation for Stein
指南建议在安装最小部署服务后也安装以下组件:
仪表盘 – horizon installation for Stein
块存储服务 – cinder installation for Stein
Stein所有的服务
https://docs.openstack.org/stein/install/
使用数据库访问客户端以root
用户身份连接到数据库服务器:
1 | mysql |
创建keystone
数据库:
1 | CREATE DATABASE keystone; |
授予对keystone
数据库的适当访问权限:
1 | GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \ |
替换KEYSTONE_DBPASS
为合适的密码。
退出数据库
安装软件包,如果包管理提示依赖问题,就把keyston
单独安装
1 | apt-get install keystone apache2 libapache2-mod-wsgi |
编辑/etc/keystone/keystone.conf
文件并完成以下操作
在该[database]`部分中,配置数据库访问:
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
替换KEYSTONE_DBPASS
为您为数据库选择的密码。
在该[token]
部分中,配置Fernet令牌提供程序:
[token]
provider = fernet
填充Identity服务数据库:
1 | su -s /bin/sh -c "keystone-manage db_sync" keystone |
初始化Fernet密钥存储库:
1 | keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone |
5.引导身份服务:
1 | keystone-manage bootstrap --bootstrap-password ADMIN_PASS \ |
替换ADMIN_PASS为管理用户的合适密码。
编辑/etc/apache2/apache2.conf
文件并配置ServerName
引用控制器节点的 选项:
ServerName controller
SSL
这里没说
重启Apache服务
1 | service apache2 restart |
配置管理帐户
1 | export OS_USERNAME=admin |
替换ADMIN_PASS为3.1.1.2中keystone-manage bootstrap命令中使用的密码。
创建新域
1 | openstack domain create --description "An Example Domain" example |
创建服务项目
1 | openstack project create --domain default \ |
创建myproject
项目
1 | openstack project create --domain default \ |
创建myuser
用户
1 | openstack user create --domain default \ |
创建myrole
角色
1 | openstack role create myrole |
将myrole
角色添加到myproject
项目和myuser
用户:
1 | openstack role add --project myproject --user myuser myrole |
取消设置临时 变量OS_AUTH_URL
和OS_PASSWORD
环境变量:
1 | unset OS_AUTH_URL OS_PASSWORD |
作为admin
用户,请求身份验证令牌:
1 | openstack --os-auth-url http://controller:5000/v3 \ |
注意,此命令使用admin
用户的密码。
正如myuser
用户在上一个中创建的那样,请求一个身份验证令牌:
1 | openstack --os-auth-url http://controller:5000/v3 \ |
创建客户端环境的脚本admin
和demo
项目和用户。本指南的后续部分引用这些脚本来加载客户端操作的适当凭据。
注意,客户端环境脚本的路径不受限制。为方便起见,您可以将脚本放在任何位置,但请确保它们可以访问并位于适合部署的安全位置,因为它们包含敏感凭据。
创建和编辑admin-openrc
文件并添加以下内容:
注意,OpenStack客户端还支持使用clouds.yaml
文件。有关更多信息,请参阅os-client-config。
1 | export OS_PROJECT_DOMAIN_NAME=Default |
替换ADMIN_PASS
为您admin
在Identity服务中为用户选择的密码。
创建和编辑demo-openrc
文件并添加以下内容:
1 | export OS_PROJECT_DOMAIN_NAME=Default |
替换DEMO_PASS
为您demo
在Identity服务中为用户选择的密码。
要将客户端作为特定项目和用户运行,只需在运行它们之前加载关联的客户端环境脚本即可。例如:
加载admin-openrc
文件以使用Identity服务的位置以及admin
项目和用户凭据填充环境变量:
1 | source admin-openrc |
请求身份验证令牌:
1 | openstack token issue |
要创建数据库,请完成以下步骤:
使用数据库访问客户端以root
用户身份连接到数据库服务器:
1 | mysql |
创建glance
数据库:
1 | CREATE DATABASE glance; |
授予对glance
数据库的适当访问权限:
1 | GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \ |
替换GLANCE_DBPASS
为合适的密码。
退出数据库访问客户端。
来源admin
凭据来访问仅管理员CLI命令:
1 | source admin-openrc |
要创建服务凭据,请完成以下步骤:
创建glance
用户:
1 | openstack user create --domain default --password-prompt glance |
将admin
角色添加到glance
用户和 service
项目:
1 | openstack role add --project service --user glance admin |
创建glance
服务实体:
1 | openstack service create --name glance \ |
创建Image服务API端点:
1 | openstack endpoint create --region RegionOne \ |
安装包:
1 | apt-get install glance |
编辑/etc/glance/glance-api.conf
文件并完成以下操作:
在该[database]
部分中,配置数据库访问:
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
替换GLANCE_DBPASS
为您为Image服务数据库选择的密码。
在[keystone_authtoken]
和[paste_deploy]
部分中,配置身份服务访问:
[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 = GLANCE_PASS[paste_deploy]
flavor = keystone
替换GLANCE_PASS
为您glance
在Identity服务中为用户选择的密码 。
注意,注释掉或删除该[keystone_authtoken]
部分中的任何其他选项 。
在该[glance_store]
部分中,配置本地文件系统存储和映像文件的位置:
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
编辑/etc/glance/glance-registry.conf
文件并完成以下操作:
在该[database]
部分中,配置数据库访问:
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
替换GLANCE_DBPASS
为您为Image服务数据库选择的密码。
在[keystone_authtoken]
和[paste_deploy]
部分中,配置身份服务访问:
[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 = GLANCE_PASS[paste_deploy]
flavor = keystone
替换GLANCE_PASS
为您glance
在Identity服务中为用户选择的密码 。
注意,注释掉或删除该[keystone_authtoken]
部分中的任何其他选项 。
填充Image服务数据库:
1 | su -s /bin/sh -c "glance-manage db_sync" glance |
注意,忽略此输出中的任何弃用消息。
重启Image服务
1 | service glance-registry restart #此行报错没有此服务,下面的验证操作也没问题,怀疑没有需要运行此行 |
来源admin
凭据来访问仅管理员CLI命令:
1 | source admin-openrc |
下载源图像:
1 | wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img |
使用QCOW2磁盘格式,裸 容器格式和公共可见性将映像上载到映像服务 ,以便所有项目都可以访问它:
1 | openstack image create "cirros" \ |
有关信息OpenStack的图像创建参数,请参阅 Create or update an image (glance)
有关磁盘和容器的图像格式的信息,请参阅 Disk and container formats for images
注意,OpenStack动态生成ID,因此您将在示例命令输出中看到不同的值。
确认上传图像并验证属性:
1 | openstack image list |
在安装和配置放置服务之前,必须创建数据库,服务凭据和API端点。
要创建数据库,请完成以下步骤:
使用数据库访问客户端以root
用户身份连接到数据库服务器:
1 | mysql |
创建placement
数据库:
1 | CREATE DATABASE placement; |
授予对数据库的适当访问权限:
1 | GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \ |
替换PLACEMENT_DBPASS
为合适的密码。
退出数据库访问客户端。
来源admin
凭据来访问仅管理员CLI命令:
1 | source admin-openrc |
使用您选择的创建Placement服务用户PLACEMENT_PASS
:
1 | openstack user create --domain default --password-prompt placement |
使用admin角色将Placement用户添加到服务项目:
1 | openstack role add --project service --user placement admin |
在服务目录中创建Placement API条目:
1 | openstack service create --name placement \ |
创建Placement API服务端点:
注意,根据您的环境,端点的URL将根据端口(可能是8780而不是8778,或根本没有端口)和主机名而有所不同。您有责任确定正确的URL。
1 | openstack endpoint create --region RegionOne \ |
安装包:
1 | apt-get install placement-api |
编辑/etc/placement/placement.conf
文件并完成以下操作:
在该[placement_database]
部分中,配置数据库访问:
[placement_database]
connection = mysql+pymysql://placement:PLACEMENT_DBPASS@controller/placement
替换PLACEMENT_DBPASS
为您为放置数据库选择的密码。
在[api]
和[keystone_authtoken]
部分中,配置身份服务访问:
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = placement
password = PLACEMENT_PASS
替换PLACEMENT_PASS
为您placement
在Identity服务中为用户选择的密码 。
注意,注释掉或删除该[keystone_authtoken]
部分中的任何其他选项。
placement
数据库:1 | su -s /bin/sh -c "placement-manage db sync" placement |
重新加载Web服务器
1 | service apache2 restart |
来源admin
凭据来访问仅管理员CLI命令:
1 | source admin-openrc |
执行状态检查以确保一切正常:
1 | placement-status upgrade check #这里需要sudo,不然可能出不来正确结果 |
该命令的输出因发布而异。有关详细信息,请参阅placement-status upgrade check
针对展示位置API运行一些命令:
安装osc-placement插件:
注意,此示例使用PyPI和pip,但如果您使用的是分发包,则可以从其存储库中安装该包。
1 | apt-get install python-pip #ubuntu没这个插件也就算了,pip还得自己装 |
列出可用的资源类和特征:
1 | openstack --os-placement-api-version 1.2 resource class list --sort-column name |
要创建数据库,请完成以下步骤:
使用数据库访问客户端以root
用户身份连接到数据库服务器:
1 | mysql |
创建nova_api
,nova
和nova_cell0
数据库:
1 | CREATE DATABASE nova_api; |
授予对数据库的适当访问权限:
1 | GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \ |
替换NOVA_DBPASS
为合适的密码。
退出数据库访问客户端。
来源admin
凭据来访问仅管理员CLI命令:
1 | source admin-openrc |
创建Compute服务凭据:
创建nova
用户:
1 | openstack user create --domain default --password-prompt nova |
将admin
角色添加到nova
用户:
1 | openstack role add --project service --user nova admin |
创建nova
服务实体:
1 | openstack service create --name nova \ |
创建Compute API服务端点:
1 | openstack endpoint create --region RegionOne \ |
安装包:
1 | apt-get install nova-api nova-conductor \ |
编辑/etc/nova/nova.conf
文件并完成以下操作:
在[api_database]
和[database]
部分中,配置数据库访问:
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
替换NOVA_DBPASS
为您为Compute数据库选择的密码。
在该[DEFAULT]
部分中,配置RabbitMQ
消息队列访问:
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
替换RABBIT_PASS
为您为openstack
帐户选择的密码RabbitMQ
。
在[api]
和[keystone_authtoken]
部分中,配置身份服务访问:
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
替换NOVA_PASS
为您nova
在Identity服务中为用户选择的密码。
注意,注释掉或删除该[keystone_authtoken]
部分中的任何其他选项。
在该[DEFAULT]
部分中,配置my_ip
选项以使用控制器节点的管理接口IP地址:
[DEFAULT]
my_ip = 192.168.2.50
在该[DEFAULT]
部分中,启用对网络服务的支持:
[DEFAULT]
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
注意,默认情况下,Compute使用内部防火墙驱动程序。由于Networking服务包含防火墙驱动程序,因此必须使用nova.virt.firewall.NoopFirewallDriver
防火墙驱动程序禁用Compute防火墙驱动 程序。
配置/etc/nova/nova.conf的[neutron]
部分。 有关更多信息,请参阅网络服务安装指南。
在该[vnc]
部分中,配置VNC代理以使用控制器节点的管理接口IP地址:
[vnc]
enabled = trueserver_listen = $my_ip
server_proxyclient_address = $my_ip
在该[glance]
部分中,配置Image服务API的位置:
[glance]
api_servers = http://controller:9292
在该[oslo_concurrency]
部分中,配置锁定路径:
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
由于包装错误,请从[DEFAULT]
部分中删除log_dir
选项 。
在该[placement]
部分中,配置对Placement服务的访问权限:
[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 = PLACEMENT_PASS
替换PLACEMENT_PASS
为您placement
在安装Placement时为服务用户 选择的密码 。注释掉或删除该[placement]
部分中的任何其他选项。
填充nova-api
数据库:
1 | su -s /bin/sh -c "nova-manage api_db sync" nova |
注意,忽略此输出中的任何弃用消息。
注册cell0
数据库:
1 | su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova |
创建cell1
单元格:
1 | su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova |
填充新星数据库:
1 | su -s /bin/sh -c "nova-manage db sync" nova |
验证nova cell0和cell1是否正确注册:
1 | su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova |
重启Compute服务:
1 | service nova-api restart |
安装包:
1 | apt-get install nova-compute |
编辑/etc/nova/nova.conf
文件并完成以下操作:
在该[DEFAULT]
部分中,配置RabbitMQ
消息队列访问:
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
替换RABBIT_PASS
为您为openstack
帐户选择的密码RabbitMQ
。
在[api]
和[keystone_authtoken]
部分中,配置身份服务访问:
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
替换NOVA_PASS
为您nova
在Identity服务中为用户选择的密码。
注意,注释掉或删除该[keystone_authtoken]
部分中的任何其他选项 。
在该[DEFAULT]
部分中,配置my_ip
选项:
[DEFAULT]
my_ip = 192.168.2.51
在该[DEFAULT]
部分中,启用对网络服务的支持:
[DEFAULT]
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
注意,默认情况下,Compute使用内部防火墙服务。由于Networking包含防火墙服务,因此必须使用nova.virt.firewall.NoopFirewallDriver
防火墙驱动程序禁用Compute防火墙服务。
配置/etc/nova/nova.conf的[neutron]
部分。 有关更多详细信息,请参阅网络服务安装指南。
在该[vnc]
部分中,启用并配置远程控制台访问:
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
服务器组件侦听所有IP地址,并且代理组件仅侦听计算节点的管理接口IP地址。基本URL指示您可以使用Web浏览器访问此计算节点上的实例的远程控制台的位置。
注意,如果要访问远程控制台的Web浏览器驻留在无法解析controller
主机名的主机上,则必须controller
使用控制器节点的管理接口IP地址替换 。
在该[glance]
部分中,配置Image服务API的位置:
[glance]
api_servers = http://controller:9292
在该[oslo_concurrency]
部分中,配置锁定路径:
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
在该[placement]
部分中,配置Placement API:
[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 = PLACEMENT_PASS
替换PLACEMENT_PASS
为您placement
在Identity服务中为用户选择的密码 。注释掉该[placement]
部分中的任何其他选项。
确定您的计算节点是否支持虚拟机的硬件加速:
1 | egrep -c '(vmx|svm)' /proc/cpuinfo |
如果此命令返回值是1
或更高,则计算节点支持硬件加速,通常不需要其他配置。
如果此命令返回值0
,则您的计算节点不支持硬件加速,您必须配置libvirt
为使用QEMU而不是KVM。
编辑文件中的[libvirt]
部分,/etc/nova/nova-compute.conf
如下所示:
[libvirt]
virt_type = qemu
重新启动Compute服务:
1 | service nova-compute restart |
获取管理员凭据以启用仅管理员CLI命令,然后确认数据库中是否存在计算主机:
1 | source admin-openrc |
发现计算主机:
1 | su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova |
注意,添加新计算节点时,必须在控制器节点上运行nova-manage cell_v2 discover_hosts
以注册这些新计算节点。或者,您可以在以下位置设置适当的间隔 :/etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300
来源admin
凭据来访问仅管理员CLI命令:
1 | source admin-openrc |
列出服务组件以验证每个进程的成功启动和注册:
1 | openstack compute service list |
注意,此输出应指示在控制器节点上启用的两个服务组件以及在计算节点上启用的一个服务组件。
列出Identity服务中的API端点以验证与Identity服务的连接:
注意,端点列表可能会有所不同,具体取决于OpenStack组件的安装。
1 | openstack catalog list |
注意,忽略此输出中的任何警告。
列出Image服务中的图像以验证与Image服务的连接:
1 | openstack image list |
检查单元格和放置API是否正常运行以及其他必要的先决条件是否到位:
1 | nova-status upgrade check |
重新配置网络接口将中断网络连接,因此建议使用本地终端会话来执行这些过程。
emmm。。。这部分重复了一下标题1.1-1.3的内容,就不说了
在配置OpenStack Networking(neutron)服务之前,必须创建数据库,服务凭据和API端点。
要创建数据库,请完成以下步骤:
使用数据库访问客户端以root
用户身份连接到数据库服务器:
1 | mysql -u root -p |
创建neutron
数据库:
1 | CREATE DATABASE neutron; |
授予对neutron
数据库的适当访问权限,替换 NEUTRON_DBPASS
为合适的密码:
1 | GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \ |
退出数据库访问客户端。
来源admin
凭据来访问仅管理员CLI命令:
1 | source admin-openrc |
要创建服务凭据,请完成以下步骤:
创建neutron
用户:
1 | openstack user create --domain default --password-prompt neutron |
将admin
角色添加到neutron
用户:
1 | openstack role add --project service --user neutron admin |
注意,此命令不提供输出。
创建neutron
服务实体:
1 | openstack service create --name neutron \ |
创建网络服务API端点:
1 | openstack endpoint create --region RegionOne \ |
您可以使用选项1和2表示的两种体系结构之一来部署网络服务。
选项1部署了最简单的架构,该架构仅支持将实例附加到提供商(外部)网络。没有自助(私有)网络,路由器或浮动IP地址。只有该admin
特权用户或其他特权用户才能管理提供商网络。
选项2使用支持将实例附加到自助服务网络的第3层服务来增强选项1。该demo
非特权用户或其他非特权用户可以管理自助服务网络,包括提供自助服务和提供商网络之间连接的路由器。此外,浮动IP地址提供与使用来自外部网络(如Internet)的自助服务网络的实例的连接。
自助服务网络通常使用覆盖网络。诸如VXLAN之类的覆盖网络协议包括额外的报头,这些报头增加了开销并减少了有效载荷或用户数据的可用空间。在不了解虚拟网络基础结构的情况下,实例尝试使用1500字节的默认以太网最大传输单元(MTU)来发送分组。Networking服务自动通过DHCP为实例提供正确的MTU值。但是,某些云映像不使用DHCP或忽略DHCP MTU选项,并且需要使用元数据或脚本进行配置。
注意,选项2还支持将实例附加到提供商网络。
选择以下网络选项之一以配置特定于其的服务。
我这里选择自助服务网络,功能更强大了,看起来也不是很复杂
1 | apt-get install neutron-server neutron-plugin-ml2 \ |
编辑/etc/neutron/neutron.conf
文件并完成以下操作:
在该[database]
部分中,配置数据库访问:
[database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
替换NEUTRON_DBPASS
为您为数据库选择的密码。
注意,注释掉或删除[database]
部分中connection
的任何其他选项 。
在该[DEFAULT]
部分中,启用模块化第2层(ML2)插件,路由器服务和重叠的IP地址:
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
在该[DEFAULT]
部分中,配置RabbitMQ
消息队列访问:
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
替换RABBIT_PASS
为您openstack
在RabbitMQ中为帐户选择的密码 。
在[DEFAULT]
和[keystone_authtoken]
部分中,配置身份服务访问:
[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 = NEUTRON_PASS
替换NEUTRON_PASS
为您neutron
在Identity服务中为用户选择的密码。
注意,注释掉或删除该[keystone_authtoken]
部分中的任何其他选项 。
在[DEFAULT]
和[nova]
部分中,配置网络以通知Compute网络拓扑更改:
[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 = NOVA_PASS
替换NOVA_PASS
为您nova
在Identity服务中为用户选择的密码。
在该[oslo_concurrency]
部分中,配置锁定路径:
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
ML2插件使用Linux桥接机制为实例构建第2层(桥接和交换)虚拟网络基础架构。
编辑/etc/neutron/plugins/ml2/ml2_conf.ini
文件并完成以下操作:
在该[ml2]
部分中,启用flat,VLAN和VXLAN网络:
[ml2]
type_drivers = flat,vlan,vxlan
在该[ml2]
部分中,启用VXLAN自助服务网络:
[ml2]
tenant_network_types = vxlan
在该[ml2]
部分中,启用Linux桥和第2层填充机制:
[ml2]
mechanism_drivers = linuxbridge,l2population
警告,配置ML2插件后,删除type_drivers
选项中的值 可能会导致数据库不一致。
注意,Linux网桥代理仅支持VXLAN重叠网络。
在该[ml2]
部分中,启用端口安全性扩展驱动程序:
[ml2]
extension_drivers = port_security
在该[ml2_type_flat]
部分中,将提供商虚拟网络配置为扁平网络:
[ml2_type_flat]
flat_networks = provider
在该[ml2_type_vxlan]
部分中,为自助服务网络配置VXLAN网络标识符范围:
[ml2_type_vxlan]
vni_ranges = 1:1000
在该[securitygroup]
部分中,启用ipset以提高安全组规则的效率:
[securitygroup]
enable_ipset = true
Linux网桥代理为实例构建第2层(桥接和交换)虚拟网络基础架构并处理安全组。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件并完成以下操作:
在该[linux_bridge]
部分中,将提供者虚拟网络映射到提供者物理网络接口:
[linux_bridge]
physical_interface_mappings = provider:ens38
替换ens38
为基础提供程序物理网络接口的名称。有关 更多信息,请参阅主机网络
在该[vxlan]
部分中,启用VXLAN重叠网络,配置处理覆盖网络的物理网络接口的IP地址,并启用第2层填充:
[vxlan]
enable_vxlan = true
local_ip = 192.168.2.52
l2_population = true
替换192.168.2.52
为处理覆盖网络的基础物理网络接口的IP地址。示例体系结构使用管理接口将流量隧道传输到其他节点。因此,请替换OVERLAY_INTERFACE_IP_ADDRESS
为控制器节点的管理IP地址。有关更多信息,请参阅 主机网络
在该[securitygroup]
部分中,启用安全组并配置Linux网桥iptables防火墙驱动程序:
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
通过验证以下所有sysctl
值都设置为1
:确保您的Linux操作系统内核支持网桥过滤器:
1 | sysctl net.bridge.bridge-nf-call-iptables |
要启用网络桥接支持,通常br_netfilter
需要加载内核模块,Ubuntu Server 18.04应该是默认加载的。
1 | modprobe br_netfilter |
第3层(L3)代理为自助服务虚拟网络提供路由和NAT服务。
编辑/etc/neutron/l3_agent.ini
文件并完成以下操作:
在本[DEFAULT]
节中,配置Linux桥接接口驱动程序和外部网桥:
[DEFAULT]
interface_driver = linuxbridge
DHCP代理为虚拟网络提供DHCP服务。
编辑/etc/neutron/dhcp_agent.ini
文件并完成以下操作:
在本[DEFAULT]
节中,配置Linux桥接接口驱动程序,Dnsmasq DHCP驱动程序,并启用隔离的元数据,以便提供商网络上的实例可以通过网络访问元数据:
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
元数据代理提供配置信息,例如实例的凭证。
编辑/etc/neutron/metadata_agent.ini
文件并完成以下操作:
在该[DEFAULT]
部分中,配置元数据主机和共享密钥:
[DEFAULT]
nova_metadata_host = controller
metadata_proxy_shared_secret = METADATA_SECRET
替换METADATA_SECRET
为元数据代理的适当秘密。
注意,必须安装Nova计算服务才能完成此步骤。有关更多详细信息,请参阅docs网站的“ 安装指南”部分 下的计算安装指南 。
编辑/etc/nova/nova.conf
文件并执行以下操作:
在该[neutron]
部分中,配置访问参数,启用元数据代理并配置密码:
[neutron]
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = true
metadata_proxy_shared_secret = METADATA_SECRET
替换NEUTRON_PASS
为您neutron
在Identity服务中为用户选择的密码。
替换METADATA_SECRET
为您为元数据代理选择的秘密。
填充数据库:
1 | su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \ |
注意,数据库填充稍后会出现在网络中,因为该脚本需要完整的服务器和插件配置文件。
重新启动Compute API服务:
1 | service nova-api restart |
重新启动网络服务。
1 | service neutron-server restart |
1 | apt-get install neutron-linuxbridge-agent |
Networking公共组件配置包括身份验证机制,消息队列和插件。
注意,默认配置文件因分发而异。您可能需要添加这些部分和选项,而不是修改现有的部分和选项。此外,...
配置片段中的省略号()表示您应保留的潜在默认配置选项。
编辑/etc/neutron/neutron.conf
文件并完成以下操作:
在该[database]
部分中,注释掉任何connection
选项,因为计算节点不直接访问数据库。
在该[DEFAULT]
部分中,配置RabbitMQ
消息队列访问:
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
替换RABBIT_PASS
为您openstack
在RabbitMQ中为帐户选择的密码。
在[DEFAULT]
和[keystone_authtoken]
部分中,配置身份服务访问:
[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 = NEUTRON_PASS
替换NEUTRON_PASS
为您neutron
在Identity服务中为用户选择的密码。
注意,注释掉或删除该[keystone_authtoken]
部分中的任何其他选项 。
在该[oslo_concurrency]
部分中,配置锁定路径:
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
选择为控制器节点选择的相同网络选项,以配置特定于其的服务。然后,返回此处并继续 配置计算服务以使用网络服务。
这里依旧是选择第二个选项
Linux网桥代理为实例构建第2层(桥接和交换)虚拟网络基础架构并处理安全组。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件并完成以下操作:
在该[linux_bridge]
部分中,将提供者虚拟网络映射到提供者物理网络接口:
[linux_bridge]
physical_interface_mappings = provider:ens38
替换ens38
为基础提供程序物理网络接口的名称。有关 更多信息,请参阅主机网络
在该[vxlan]
部分中,启用VXLAN重叠网络,配置处理覆盖网络的物理网络接口的IP地址,并启用第2层填充:
[vxlan]
enable_vxlan = true
local_ip = 192.168.2.53
l2_population = true
替换192.168.2.53
为处理覆盖网络的基础物理网络接口的IP地址。
在该[securitygroup]
部分中,启用安全组并配置Linux网桥iptables防火墙驱动程序:
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
通过验证以下所有sysctl
值都设置为1
:确保您的Linux操作系统内核支持网桥过滤器:
1 | sysctl net.bridge.bridge-nf-call-iptables |
要启用网络桥接支持,通常br_netfilter
需要加载内核模块,Ubuntu Server 18.04应该是默认加载的。
1 | modprobe br_netfilter |
编辑/etc/nova/nova.conf
文件并完成以下操作:
在该[neutron]
部分中,配置访问参数:
[neutron]
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
替换NEUTRON_PASS
为您neutron
在Identity服务中为用户选择的密码。
重新启动Compute服务:
1 | service nova-compute restart |
重新启动Linux桥代理:
1 | service neutron-linuxbridge-agent restart |
安装包:
1 | apt-get install openstack-dashboard |
编辑 /etc/openstack-dashboard/local_settings.py
文件并完成以下操作:
配置仪表板以在controller
节点上使用OpenStack服务 :
OPENSTACK_HOST = “controller”
在仪表板配置部分中,允许主机访问仪表板:
ALLOWED_HOSTS = [‘one.example.com’, ‘two.example.com’]
注意,不要ALLOWED_HOSTS
在Ubuntu配置部分下编辑参数。ALLOWED_HOSTS
也可以['*']
接受所有主机。这可能对开发工作有用,但可能不安全,不应在生产中使用。有关详细信息,请参阅 Django文档。
配置memcached
会话存储服务:
SESSION_ENGINE = ‘django.contrib.sessions.backends.cache’
CACHES = {
'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'controller:11211', }
}
注意,注释掉任何其他会话存储配置。
启用Identity API版本3:
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”
如果选择网络选项1,请禁用对第3层网络服务的支持:
OPENSTACK_NEUTRON_NETWORK = {
'enable_router': False, 'enable_quotas': False, 'enable_ipv6': 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”
替换TIME_ZONE
为适当的时区标识符。有关更多信息,请参阅时区列表。
/etc/apache2/conf-available/openstack-dashboard.conf
如果未包含,请添加以下行 。
WSGIApplicationGroup %{GLOBAL}
重新加载Web服务器配置:
1 | service apache2 reload |
使用Web浏览器访问仪表板 http://controller/horizon
。
使用admin
或demo
用户和default
域凭据进行身份验证。
1 首先打开磁盘工具,左上角的菜单栏 –> 文件 –> RAID助理
2 选择需要的RAID类型,这里所提供的极为有限,并且不能组合(先RAID0后RAID1之类的)
3 选择所要加入的磁盘
4 设置RAID属性(仅能设置命名以及分区格式,块大小)
5 完成
6 完成后变可以在磁盘工具中看到
1 首先从Open-ZFS官网下载macOS版,安装预编译版或者使用源码安装
我这里采用预编译安装,下载到的dmg镜像打开后选择对应系统版本的pkg安装器双击安装
2 打开磁盘工具或者系统报告,或者直接终端查看需要添加入ZFS存储池的磁盘BSD名称,我这里4块盘分别是disk0,disk1,disk3,disk4
3 使用命令行创建存储池
1 | sudo zpool create zfsrz1_test raidz1 disk0 disk1 disk3 disk4 |
输入账户密码,回车确认即可
此时已经能在磁盘工具中看到创建好的存储池(虚拟磁盘)
访达(Finder)中也能够看到
需要注意的是,不知何故,往这个磁盘中写入文件需要输入密码验证
4 使用命令行维护存储池
我只是做个测试,想要维护的可以自己查找文档
5 销毁(删除)存储池
1 | sudo zpool destroy zfsrz1_test |
硬RAID卡因为目前Mac机器拓展性差,并且可能存在兼容性问题,也因为我没钱,暂时不考虑
其它商业软件因为我没钱,暂时不考虑