目录
- 想说的话
- 双节点手动安装openstack yoga版本
- 环境准备
- 网络配置
- hostname解析
- 测试网络连通性
- NTP时间同步
- 所有节点安装openstack包
- controller节点安装SQL数据库
- controller节点安装消息队列
- controller节点安装Memcached内存缓存
- controller节点安装etcd存储器
- yoga版本最小启动服务
- 安装keystone
- Glance安装
- Placement安装
- Nova安装
- Neutron安装
- Horizon安装
- Cinder安装(非必要)
- 利用yoga版的openstack启动一个云服务器(非必要)
- 创建self-service私有网络
- 附录1:防火墙与默认端口
想说的话
当一个运维高手初次踏入openstack的世界的时候,首先面临的问题就是快速安装一个openstack然后玩起来。
但是openstack安装过于庞杂,手动安装的学习路线比较漫长。自动化安装工具往往跑到一半就报错。
自动安装openstack往往有一下几个坑:
- 网络问题。openstack常见的安装工具,如kolla、devstack、rdo、TripleO等,这些工具都是由老外开发,他们在开发的时候没有考虑到不同国家的下载速度。自动安装的依赖包都是从github上下载,往往安装到一半就404了。
- 版本问题。openstack的每个版本都对应centos或者ubuntu的某几个版本。而且还要考虑到发行版的生命周期问题。有的发行版生命周期只有5年。如果过了生命周期,从官方的系统包下载源将无法下载到openstack。比如,你用centos7.9下载不了Mitaka版本的openstack,这在2020年以前都是可以的,这就是过期的问题。
- 学习资料问题。网上有很多openstack单节点或者多节点安装的教程。这些教程可能过半年就不能用了。有的教程是质量问题,有的教程是遇到了发行版过期的问题。反正我试了5篇最近一年的、不同安装工具的教程,没有一篇能让我成功安装openstack的。
所以以上这些问题导致安装openstack很恶心人,一度劝退95%的初学者。
如何破这个局:查看英文官方安装文档,下载Installation Guide的PDF反复阅读。注意是英文,不是中文。整个PDF只有100页。
openstack官网: https://docs.openstack.org/
官网上能选择语言,但是中文文档最高只支持Mitaka。想要在最新的linux发行版安装较新的openstack,只能看英文的Installation Guide。英文的安装文档是持续更新的,所以靠谱。
综上,英语不好的同学,读英文文献费劲的同学,建议不要学openstack了,不然你会感受到举步维艰。这就是一个分水岭,把顶级人才和普通工程师区分开了。 网上教程和视频不能用,又看不懂英文文档。培训班不会教你如何安装,那么你想怎样搞定一个千台服务器级别的大型openstack集群的架构设计?
双节点手动安装openstack yoga版本
参考文献(官方文档):https://docs.openstack.org/install-guide/
时间点:2022年4月25日
环境准备
宿主机系统任意,但是保证能安装KVM。
Debian安装KVM方法:
sudo apt update
sudo apt -y install qemu qemu-system qemu-kvm virt-manager bridge-utils vlan
网络配置
KVM安装成功后,创建两个NAT虚拟网卡。
- 设备名openstack,类型NAT,地址段10.0.0.0/24 ,网关10.0.0.1,ip范围从5-254。
- 设备名provider,类型NAT,地址段203.0.113.0/24,网关203.0.113.1,ip范围从5-254。
然后KVM安装两个虚拟机,操作系统是Ubuntu20.04 Desktop。安装时网络选择设备openstack,硬件要求:
controller控制节点,主机名controller,CPU 2C ,4GB内存 , 50GB硬盘。
compute1控制节点,主机名compute1,CPU 4C ,8GB内存 , 50GB硬盘。
系统安装成功后,需要引入第二个网卡provider,所以两台节点先关机。
KVM下将两台虚拟机都添加网络设备provider,开机。
对controller的两个网口进行配置:
网口1调成静态ip,ip固定是10.0.0.11,子网掩码24,网关10.0.0.1
网口2调成静态ip,ip固定是203.0.113.11,子网掩码24,网关203.0.113.1
对compute1的两个网口进行配置
网口1调成静态ip,ip固定是10.0.0.31,子网掩码24,网关10.0.0.1
网口2调成静态ip,ip固定是203.0.113.31,子网掩码24,网关203.0.113.1
其他节点的ip配置:
如果你有一个Block Storage块存储,则把它加入到openstack的NAT网络中。
ip设置成10.0.0.41
如果你有一个Object storage对象存储,则把它加入到openstack的NAT网络中。
ip设置成10.0.0.51
注意:块存储和对象存储节点只需要一个网口就行了,不需要像控制节点和计算节点那样搞两个网口。(摘自Installation Guide)
hostname解析
两台机器都做。
vim /etc/hosts
-----------------
# controller
10.0.0.11 controller
# compute1
10.0.0.31 compute1
# block1
10.0.0.41 block1
# object1
10.0.0.51 object1
# object2
10.0.0.52 object2
做完主机解析后,将controller和compute1重启。
reboot!
测试网络连通性
# 从controller发送ping命令连通外网
ping -c 4 www.baidu.com
# 从controller发送ping命令连通compute1
ping -c 4 compute1
# 从compute1发送ping命令连通外网
ping -c 4 www.baidu.com
# 从compute1发送ping命令连通ccontroller
ping -c 4 controller
NTP时间同步
在controller上执行以下命令,从阿里云的NTP服务器上同步时间
apt -y install chrony
# 备份NTP服务的原始配置文件
mv /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak
# 编写一个空的配置文件,文件只有两行配置
vim /etc/chrony/chrony.conf
--------------------
server ntp.aliyun.com iburst
allow 10.0.0.0/24
# 保存退出
#重启系统的ntp服务
service chrony restart
再配置ocmpute1的NTP服务,从controller上拉取时间。
apt -y install chrony
# 备份NTP服务的原始配置文件
mv /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak
# 编写一个空的配置文件,文件只有一行配置
vim /etc/chrony/chrony.conf
--------------------
server controller iburst
#重启系统的ntp服务
service chrony restart
查看NTP服务是否连上正确的服务器
两台节点都执行一下命令
chronyc sources
如果你还有块存储节点和对象存储节点,则配置方法和compute1一样,都从controller上拉取时间。
所有节点安装openstack包
openstack每半年发布一个新版,版本号从A-Z,截止目前最新版本是yoga,简称Y版。
Ubuntu每两年出一个LTS版本,以下是各个LTS版本对应的可安装的openstack版本。
OpenStack for Ubuntu 20.04 LTS: yoga、xena、wallaby、victoria、Ussuri
OpenStack for Ubuntu 18.04 LTS: ussuri、train、stein、rocky
OpenStack for Ubuntu 16.04 LTS:queen、pike、mitaka
我们的虚拟机是Ubuntu20.04,所以安装最新的yoga版本
以下的命令请在controller和compute1上都执行(所有的openstack节点都要安装openstack包!!!)
官方文档是这样说明的。
Note: The archive enablement described here needs to be done on all nodes that run OpenStack services.
# 添加yoga的官方apt源
add-apt-repository cloud-archive:yoga
# 安装nova计算组件
apt -y install nova-compute
# 安装客户端
apt -y install python3-openstackclient
controller节点安装SQL数据库
官方的安装指南让我们安装的是mariaDB,这一步安装操作只在controller上执行。
# As of Ubuntu 20.04, install the packages
apt -y install mariadb-server python3-pymysql
安装完成后,为openstack在MariaDB中添加一个配置文件。
vim /etc/mysql/mariadb.conf.d/99-openstack.cnf
-----------------------------------------------
[mysqld]
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
重启mariaDB并设置数据库的root用户密码
# 重启数据库
service mysql restart
# 运行下面这个命令设置root密码,设置完成后还会有一些初始化操作,根据提示一路Y就可以了
mysql_secure_installation
# 我设置了mariaDB的root密码是123456,并取消了mariaDB的远程登录功能(一路Y的时候有一步就是取消远程登录)
controller节点安装消息队列
openstack支持3种消息队列。
OpenStack supports several message queue services including RabbitMQ, Qpid, and ZeroMQ.
推荐使用rabbitMQ。
以下命令在controller上面执行
# 安装rabbitMQ
apt -y install rabbitmq-server
# 给rabbitMQ添加openstack用户和密码(我设置了密码123456)
rabbitmqctl add_user openstack 123456
# 开放openstack用户的设置+读+写权限
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
controller节点安装Memcached内存缓存
controller节点执行以下命令
# 安装mencached
apt -y install memcached python3-memcache
# 把本机ip添加到mencached,让其他节点能访问这个服务
vim /etc/memcached.conf
----------------------------
# 修改文件中已有的-l 127.0.0.1 ,把它改成-l 10.0.0.11
-l 10.0.0.11
# 重启服务
service memcached restart
controller节点安装etcd存储器
以下命令在controller节点上运行。
# 安装etcd
apt -y install etcd
# 配置etcd,将本地ip配置进去
vim /etc/default/etcd
-------------------------
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://10.0.0.11:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
# 重启服务并设置开机自启动
systemctl restart etcd
systemctl enable etcd
至此,基本环境安装完毕。
yoga版本最小启动服务
想要安装一个可用的openstack,至少安装以下几个服务
• Identity service keystone installation for Yoga(Keystone认证服务)
• Image service glance installation for Yoga(Glance镜像服务)
• Placement service placement installation for Yoga(Placement接口服务)
• Compute service nova installation for Yoga(Nova计算服务)
• Networking service neutron installation for Yoga(Neutron网络服务)
其他的推荐安装服务:
• Dashboard horizon installation for Yoga(Horizon用户网页面板服务)
• Block Storage service cinder installation for Yoga(Cinder块存储服务)
所以,以上七个服务我们依次安装完。
安装keystone
参考官方文档:https://docs.openstack.org/keystone/yoga/install/
首先为keystone本身是个网站,网站就需要创建一个数据库。
所以在controller上面执行以下命令创建数据库
mysql -u root -p
Enter Password: 此处输入密码123456(之前安装mariaDB时设置的)
# 创建keystone数据库
MariaDB [(none)]> CREATE DATABASE keystone;
Query OK, 1 row affected (0.001 sec)
# 创建一个keystone用户并设置密码也是keystone,专门用于访问keystone数据库
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
Query OK, 0 rows affected (0.001 sec)
# 退出mysql
exit;
Bye
安装keystone
apt -y install keystone
配置keystone,修改如下两处配置:
vim /etc/keystone/keystone.conf
-----------------------------------
[database]
# ...
connection = mysql+pymysql://keystone:keystone@controller/keystone
[token]
# ...
provider = fernet
同步配置到keystone数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
初始化fernet秘钥库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
运行keystone API
# 这个admin就是keystone的初始密码,你可以设置成别的。
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
到此,keystone的三个接口就运行起来了,web server是apache服务器。
还要设置apache
vim /etc/apache2/apache2.conf
---------------------------
ServerName controller
# 修改完后重启apache
service apache2 restart
最后收尾操作:
设置以下环境变量
export OS_USERNAME=admin
export OS_PASSWORD=admin # 这个就是之前运行API时候的bootstrap-password
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
配置域、项目、用户、角色
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
openstack user create --domain default --password-prompt myuser # 为了方便记忆,密码也设置成myuser
openstack role create myrole
openstack role add --project myproject --user myuser myrole
验证keystone是否安装成功
unset OS_AUTH_URL OS_PASSWORD
# 用admin用户尝试获取一个token
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
# 随后提示输入密码,就是之前设置的admin
+------------+-----------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------+
| expires | 2016-02-12T20:14:07.056119Z |
| id | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
| | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
| | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws |
| project_id | 343d245e850143a096806dfaefa9afdc |
| user_id | ac3377633149401296f6c0d92d79dc16 |
+------------+-----------------------------------------------------------------+
# 用myuser用户尝试获取一个token
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
# 密码是myuser
+------------+-----------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------+
| expires | 2016-02-12T20:15:39.014479Z |
| id | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
| | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
| | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U |
| project_id | ed0b60bf607743088218b0a533d5943f |
| user_id | 58126687cbcc4888bfa9ab73a2256f27 |
+------------+-----------------------------------------------------------------+
在controller上编写两个凭证文件
mkdir ~/openrc
vim ~/openrc/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=admin
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
vim ~/openrc/demo-openrc
------------------------------------
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=myuser
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
尝试加载admin-openrc试试
. ~/openrc/admin-openrc
openstack token issue
+------------+-----------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------+
| expires | 2022-04-24T16:48:29+0000 |
| id | gAAAAABWvjYj-Zjfg8WXFaQnUd1DMYTBVrKw4h3fIagi5NoEmh21U72SrRv2trl |
| | JWFYhLi2_uPR31Igf6A8mH2Rw9kv_bxNo1jbLNPLGzW_u5FC7InFqx0yYtTwa1e |
| | eq2b0f6-18KZyQhs7F3teAta143kJEWuNEYET-y7u29y0be1_64KYkM7E |
| project_id | 343d245e850143a096806dfaefa9afdc |
| user_id | ac3377633149401296f6c0d92d79dc16 |
+------------+-----------------------------------------------------------------+
到此,所有的keystone安装结束了,官方文档后面的部分是说明如何安装keystone的。
Glance安装
yoga版本的glance组件的官方安装文档:
https://docs.openstack.org/glance/yoga/install/install-ubuntu.html
首先为Glance创建数据库
mysql -u root -p
Enter password: 123456
MariaDB [(none)]> CREATE DATABASE glance;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';
Query OK, 0 rows affected (0.001 sec)
exit;
Bye
加载admin用户(这个用户在keystone安装时创建,所以不能跳)
. ~/openrc/admin-openrc
创建glance用户和项目
openstack user create --domain default --password-prompt glance # 这里要输入密码,密码也设置成glance
openstack role add --project service --user glance admin
openstack service create --name glance --description "OpenStack Image" image
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 --os-cloud devstack-system-admin registered limit create --service glance --default-limit 1000 --region RegionOne image_size_total
openstack --os-cloud devstack-system-admin registered limit create --service glance --default-limit 1000 --region RegionOne image_stage_total
openstack --os-cloud devstack-system-admin registered limit create --service glance --default-limit 100 --region RegionOne image_count_total
openstack --os-cloud devstack-system-admin registered limit create --service glance --default-limit 100 --region RegionOne image_count_uploading
下载安装并配置Glance
apt -y install glance
vim /etc/glance/glance-api.conf
------------------------------------
[DEFAULT]
use_keystone_quotas = True
[database]
# ... 原先这个database组下的已经有的所有配置删除或注释掉!!!
# 我注释了一行backend
connection = mysql+pymysql://glance:glance@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 = glance
[paste_deploy]
# ...
flavor = keystone
[glance_store]
# ...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
[oslo_limit]
auth_url = http://controller:5000
auth_type = password
user_domain_id = default
username = MY_SERVICE
system_scope = all
password = MY_PASSWORD
endpoint_id = ENDPOINT_ID
region_name = RegionOne
给MY_SERVICE添加读权限
openstack role add --user MY_SERVICE --user-domain Default --system all reader
同步配置到数据库
su -s /bin/sh -c "glance-manage db_sync" glance
重启glance服务
service glance-api restart
验证安装是否成功
. ~/openrc/admin-openrc
# 下载一个cirros镜像用于测试,大小12M
apt -y install wget
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img -O ~/cirros-0.4.0-x86_64-disk.img
# 如果下载太慢,就用迅雷下载,然后scp放到虚拟机里的家目录下
glance image-create --name "cirros" --file ~/cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare --visibility=public
+------------------+----------------------------------------------------------------------------------+
| Property | Value |
+------------------+----------------------------------------------------------------------------------+
| checksum | d41d8cd98f00b204e9800998ecf8427e |
| container_format | bare |
| created_at | 2022-04-26T05:01:27Z |
| disk_format | qcow2 |
| id | 76d504e7-8b0b-4fc3-846c-6a14b7f86877 |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros |
| os_hash_algo | sha512 |
| os_hash_value | cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0 |
| | ff8318d2877eec2f63b931bd47417a81a538327af927da3e |
| os_hidden | False |
| owner | 21d38e79032b46f5bf2ff1f65cf03b2e |
| protected | False |
| size | 0 |
| status | active |
| tags | [] |
| updated_at | 2022-04-26T05:01:27Z |
| virtual_size | Not available |
| visibility | public |
+------------------+----------------------------------------------------------------------------------+
# 查看激活的镜像
glance image-list
+--------------------------------------+--------+
| ID | Name |
+--------------------------------------+--------+
| 76d504e7-8b0b-4fc3-846c-6a14b7f86877 | cirros |
+--------------------------------------+--------+
至此,Glance安装成功了。
Placement安装
参考文档:https://docs.openstack.org/placement/yoga/install/
以下操作在controller节点上执行。Plancement是一个API和端口管理服务
创建数据库
mysql -u root -p
Enter password: 123456
MariaDB [(none)]> CREATE DATABASE placement;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'placement';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'placement';
Query OK, 0 rows affected (0.001 sec)
exit;
Bye
创建项目和用户
. ~/openrc/admin-openrc
openstack user create --domain default --password-prompt placement # 设置密码也是placement
openstack role add --project service --user placement admin # 将admin用户添加到placement
openstack service create --name placement --description "Placement API" placement
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
下载placement并配置
apt -y install placement-api
vim /etc/placement/placement.conf
------------------------------------
[placement_database]
# ...
connection = mysql+pymysql://placement:placement@controller/placement
[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
同步配置到数据库
su -s /bin/sh -c "placement-manage db sync" placement
重启apache
service apache2 restart
验证placement是否安装成功
. ~/openrc/admin-openrc
placement-status upgrade check
+-------------------------------------------+
| Upgrade Check Results |
+-------------------------------------------+
| Check: Missing Root Provider IDs |
| Result: Success |
| Details: None |
+-------------------------------------------+
| Check: Incomplete Consumers |
| Result: Success |
| Details: None |
+-------------------------------------------+
| Check: Policy File JSON to YAML Migration |
| Result: Success |
| Details: None |
+-------------------------------------------+
# 测试placementAPI
apt -y install python3-pip # 安装pip3
pip3 install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/# 升级pip3
pip3 install osc-placement -i https://mirrors.aliyun.com/pypi/simple/
openstack --os-placement-api-version 1.2 resource class list --sort-column name
+----------------------------------------+
| name |
+----------------------------------------+
| DISK_GB |
| FPGA |
| IPV4_ADDRESS |
| MEMORY_MB |
......
openstack --os-placement-api-version 1.6 trait list --sort-column name
+---------------------------------------+
| name |
+---------------------------------------+
| COMPUTE_ACCELERATORS |
| COMPUTE_ARCH_AARCH64 |
| COMPUTE_ARCH_MIPSEL |
| COMPUTE_ARCH_PPC64LE |
......
至此,placement安装成功。
Nova安装
参考官方文档:https://docs.openstack.org/nova/yoga/install/controller-install-ubuntu.html
nova组件在controller和compute1上都要安装。
首先在controller上安装nova:
配置数据库:
mysql -u root -p
Enter Password:123456
MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> CREATE DATABASE nova_cell0;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova';
exit;
Bye
创建项目、用户、角色
. ~/openrc/admin-openrc
openstack user create --domain default --password-prompt nova # 这里设置nova用户的密码也是nova
openstack role add --project service --user nova admin # 将nova用户添加到admin组中变成管理员
openstack service create --name nova --description "OpenStack Compute" compute # 创建服务实体
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1 # 提供API服务
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
下载安装配置NOVA
apt -y install nova-api nova-conductor nova-novncproxy nova-scheduler
vim /etc/nova/nova.conf
----------------------------
[DEFAULT]
# ...不用注释已有配置
my_ip = 10.0.0.11
transport_url = rabbit://openstack:123456@controller:5672/
[api_database]
# ...该组中已有的配置全部注释掉
connection = mysql+pymysql://nova:nova@controller/nova_api
[database]
# ...该组中已有的配置全部注释掉
connection = mysql+pymysql://nova:nova@controller/nova
[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 = nova
[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 = placement
将配置同步到数据库中
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
验证是否安装成功
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+------------------------------------------+-------------------------------------------------+----------+
| Name | UUID | Transport URL | Database Connection | Disabled |
+-------+--------------------------------------+------------------------------------------+----------------