安装mariadb数据库(mysql的分支)
sudo apt install mariadb-server mariadb-client python3-pymysqlps:
可以不要mariadb-client
数据库配置
vi /etc/mysql/mariadb.conf.d/24-openstack.cnf[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8重启数据库服务
sudo systemctl restart mysql设置开机启动
sudo systemctl enable mysql初始化数据库 一路yes 密码设置为123456
sudo mysql_secure_installation安装Message queue
安装rabbitmq-server
sudo apt install rabbitmq-server添加用户
sudosudo rabbitmqctl add_user openstack RABBIT_PASS设置权限
sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"加个插件
sudo rabbitmq-plugins enable rabbitmq_management 启动rabbitmq并设置开机启动
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server安装Memcached
sudo apt install memcached python3-memcachevi /etc/memcached.conf找到 -l 127.0.0.1 改为:
-l 127.0.0.1,::1,192.168.2.24ps:192.168.2.24替换为你的控制节点的管理IP地址
重启服务
sudo systemctl restart memcached修改 Memcached 的服务参数,避免开机时启动失败。
选项 After=network.target 修改为 After=network-online.target
建议以注释的方式修改
sudo vim /usr/lib/systemd/system/memcached.service
# 修改了 Memcached 启动参数 注意启动 Memcached 服务并设置开机启动
sudo systemctl daemon-reload???
sudo systemctl restart memcached
sudo systemctl enable memcached
sudo systemctl status memcached安装etcd
sudo apt install etcd修改etcd配置文件
sudo vi /etc/default/etcdETCD_NAME="controller124"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER="controller124=http://192.168.2.24:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.2.24:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.2.24:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.2.24:2379"启动etcd并设置开机启动
sudo systemctl restart etcd
sudo systemctl enable etcd测试etcd
etcdctl --endpoints="http://controller124:2379" set 001 法外狂徒张三
etcdctl --endpoints="http://controller124:2379" get 001安装keystone
创建数据库
KEYSTONE_DBPASS为要设置的密码
mysql -u root -p
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
use keystone;
show tables;
exit;安装组件
sudo apt install keystone编辑配置文件
sudo vi /etc/keystone/keystone.conf[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller124/keystone
[token]
provider = fernet填充数据库:
sudo su
cd /etc/keystone/
su -s /bin/sh -c "keystone-manage db_sync" keystone初始化密钥
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone创建引导服务
sudo keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller124:5000/v3/ \
--bootstrap-internal-url http://controller124:5000/v3/ \
--bootstrap-public-url http://controller124:5000/v3/ \
--bootstrap-region-id RegionOne在/etc/apache2/apache2.conf查看
sudo vi /etc/apache2/apache2.conf 如果不存在
ServerName controller
这一行则在其中添加
重启Apache
sudo systemctl enable apache2
sudo systemctl restart apache2查看Apache的服务状态
systemctl status apache2source ./admin-openrc-fish.sh
进行一些确认和验证
查询刚创建的用户的ID
openstack user list复制上文的用户ID,关联项目admin,用户admin,角色admin。
openstack role add --project admin --user 替换为用户ID admin
source ./admin-openrc-fish.sh查看token,可以多运行几次,查看 token id 是否更新。
openstack token issue清除环境变量后:
使用 openstack 命令验证是否能够获取 Token
openstack --os-auth-url http://controller124:5000/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name admin --os-username admin --os-auth-type password \
--os-password ADMIN_PASS token issue查询 keystone identity service,表里应该只有一行记录。
source /etc/keystone/admin-openrc
openstack service list |grep -E "ID|keystone"查询 keystone endpoint,表里应该有3行记录。
source /etc/keystone/admin-openrc
openstack endpoint list |grep -E "ID|keystone"bash opst-proc-show.sh安装Glance
创建数据库
mysql -u root -p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';
exit;GLANCE_DBPASS为要设置的密码
创建glance用户
source ./admin-openrc-fish.sh
openstack user create --domain default --password GLANCE_PASS glance将glacne添加到admin中去
openstack project create --domain default --description "Service Project" service
openstack role add --project service --user glance admin
openstack user create --domain default --password MY_PASSWORD MY_SERVICE
openstack role add --user MY_SERVICE --user-domain Default --system all reader创建glance服务实体
openstack service create --name glance \
--description "OpenStack Image" image创建Image服务API端点
openstack endpoint create --region RegionOne \
image public http://controller124:9292
openstack endpoint create --region RegionOne \
image internal http://controller124:9292
openstack endpoint create --region RegionOne \
image admin http://controller124:9292安装组件
apt install glance -y配置组件
vim /etc/glance/glance-api.conf
[DEFAULT]
use_keystone_quotas = True
[barbican]
[barbican_service_user]
[cinder]
[cors]
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller124/glance
[file]
[glance.store.http.store]
[glance.store.rbd.store]
[glance.store.s3.store]
[glance.store.swift.store]
[glance.store.vmware_datastore.store]
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
[healthcheck]
[image_format]
[key_manager]
[keystone_authtoken]
auth_url = http://controller124:5000
www_authenticate_uri = http://controller124:5000
memcached_servers = controller124:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = GLANCE_PASS
[oslo_concurrency]
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[oslo_reports]
[paste_deploy]
flavor = keystone
[profiler]
[store_type_location_strategy]
[task]
[taskflow_executor]
[vault]
[wsgi]
[oslo_limit]
auth_url = http://controller124:5000
auth_type = password
user_domain_id = default
username = MY_SERVICE
system_scope = all
password = MY_PASSWORD
endpoint_id = ENDPOINT_ID
region_name = RegionOneGLANCE_DBPASS为创建glance用户访问数据库的密码
GLANCE_PASS为openstack创建glance用户设置的密码
GLANCE_PASS为openstack创建glance用户设置的密码
endpoint_id为创建Image服务API端点中类型为public的id 可以通过如下的命令查看
openstack endpoint list填充数据库
sudo su
cd /etc/glance
su -s /bin/sh -c "glance-manage db_sync" glance运行成功会显示Database is synced successfully.
进入 MariaDB 查看是否有表格出现。密码为GLANCE_DBPASS。如果有则表示数据库同步成功。
mysql -u glance -p
use glance;
show tables;重启Image服务
systemctl restart glance-api查看 Glance 服务是否active。
systemctl status openstack-glance-api验证配置
source ./admin-openrc-fish.sh
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
glance image-create --name "cirros" \
--file /root/cirros-0.4.0-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--visibility=public
glance image-list
# 输出如下的内容表示组件成功运行
root@controller124:~# glance image-list
+--------------------------------------+--------+
| ID | Name |
+--------------------------------------+--------+
| 8244fbc0-f798-44c5-b0f3-9e5566e7e345 | cirros |
+--------------------------------------+--------+安装Placement
创建数据库
mysql -u root -p
CREATE DATABASE placement;
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
IDENTIFIED BY 'PLACEMENT_DBPASS';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
IDENTIFIED BY 'PLACEMENT_DBPASS';
exit;PLACEMENT_DBPASS为要设置的密码
创建placement用户
source ./admin-openrc-fish.sh
openstack user create --domain default --password PLACEMENT_PASS placement将用户添加到admin
openstack role add --project service --user placement admin 创建placement服务实体
openstack service create --name placement --description "Placement API" placement创建API 服务端点
openstack endpoint create --region RegionOne placement public http://controller124:8778
openstack endpoint create --region RegionOne placement internal http://controller124:8778
openstack endpoint create --region RegionOne placement admin http://controller124:8778安装组件
apt install placement-api -y配置组件
vim /etc/placement/placement.conf
[DEFAULT]
[api]
[cors]
[keystone_authtoken]
auth_url = http://controller124:5000/v3
memcached_servers = controller124:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = PLACEMENT_PASS
[oslo_middleware]
[oslo_policy]
[placement]
[placement_database]
connection = mysql+pymysql://placement:PLACEMENT_DBPASS@controller124/placement
[profiler]
[auth_strategy]
keystone = PLACEMENT_DBPASS为创建placement用户访问数据库设置的密码
PLACEMENT_PASS为openstack创建placement用户设置的密码
填充数据库
sudo su
su -s /bin/sh -c "placement-manage db sync" placement重启apache2服务
systemctl restart apache2进入 MariaDB 查看是否有表格出现。密码为PLACEMENT_DBPASS。如果有则表示数据库同步成功。
mysql -u placement -pPLACEMENT_DBPASS
use placement;
show tables;
exit;验证配置
source ./admin-openrc-fish.sh
placement-status upgrade check
# 输出如下的内容表示成功
root@controller124:~# 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 |
+-------------------------------------------+
openstack --os-placement-api-version 1.2 resource class list --sort-column name
# 输出如下的内容表示成功
root@controller124:~# openstack --os-placement-api-version 1.2 resource class list --sort-column name
+----------------------------------------+
| name |
+----------------------------------------+
| DISK_GB |
| FPGA |
| IPV4_ADDRESS |
| MEMORY_MB |
| MEM_ENCRYPTION_CONTEXT |
| NET_BW_EGR_KILOBIT_PER_SEC |
| NET_BW_IGR_KILOBIT_PER_SEC |
| NET_PACKET_RATE_EGR_KILOPACKET_PER_SEC |
| NET_PACKET_RATE_IGR_KILOPACKET_PER_SEC |
| NET_PACKET_RATE_KILOPACKET_PER_SEC |
| NUMA_CORE |
| NUMA_MEMORY_MB |
| NUMA_SOCKET |
| NUMA_THREAD |
| PCI_DEVICE |
| PCPU |
| PGPU |
| SRIOV_NET_VF |
| VCPU |
| VGPU |
| VGPU_DISPLAY_HEAD |
+----------------------------------------+
openstack --os-placement-api-version 1.6 trait list --sort-column name安装Nova
创建数据库
mysql
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
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';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
exitNOVA_DBPASS为要设置的密码
创建nova用户
admin-openrc.sh
openstack user create --domain default --password-prompt nova添加到admin
openstack role add --project service --user nova admin创建nova服务实体
openstack service create --name nova \
--description "OpenStack Compute" compute创建API服务端点
openstack endpoint create --region RegionOne \
compute public http://controller124:8774/v2.1
openstack endpoint create --region RegionOne \
compute internal http://controller124:8774/v2.1
openstack endpoint create --region RegionOne \
compute admin http://controller124:8774/v2.1安装组件
apt install nova-api nova-conductor nova-novncproxy nova-scheduler配置组件
vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.2.24
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
transport_url = rabbit://openstack:RABBIT_PASS@controller124:5672/
verbose = True
debug = True
log_dir = /var/log/nova
[api]
auth_strategy = keystone
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller124/nova_api
[barbican]
[barbican_service_user]
[cache]
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[cyborg]
[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller124/nova
[devices]
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
api_servers = http://controller124:9292
[guestfs]
[healthcheck]
[hyperv]
[image_cache]
[ironic]
[key_manager]
[keystone]
[keystone_authtoken]
www_authenticate_uri = http://controller124:5000
auth_url = http://controller124:5000
memcached_servers = controller124:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
[libvirt]
[metrics]
[mks]
[neutron]
auth_url = http://controller124: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_PASS
insecure = false
[notifications]
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[oslo_reports]
[pci]
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller124:5000/v3
username = placement
password = PLACEMENT_PASS
[powervm]
[privsep]
[profiler]
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
send_service_user_token = true
auth_url = http://controller124:5000/identity
auth_strategy = keystone
auth_type = password
project_domain_name = Default
project_name = service
user_domain_name = Default
username = nova
password = NOVA_PASS
[spice]
[upgrade_levels]
[vault]
[vendordata_dynamic_auth]
[vmware]
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
[workarounds]
[wsgi]
[zvm]NOVA_DBPASS为创建nova用户设置访问数据库的密码
NOVA_DBPASS为创建nova用户设置访问数据库的密码
RABBIT_PASS为rabbitmqctl创建openstack设置的密码 my_ip为Controller节点的IP地址
NOVA_PASS为openstack创建nova用户设置的密码
NOVA_PASS为openstack创建nova用户设置的密码
PLACEMENT_PASS为openstack创建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
1
# 输出类似如下的内容
root@controller124:~# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+------------------------------------------+-------------------------------------------------+----------+
| Name | UUID | Transport URL | Database Connection | Disabled |
+-------+--------------------------------------+------------------------------------------+-------------------------------------------------+----------+
| cell0 | 00000000-0000-0000-0000-000000000000 | none:/ | mysql+pymysql://nova:****@controller124/nova_cell0 | False |
| cell1 | e52327df-10e2-41e1-a1d2-5d7724a85688 | rabbit://openstack:****@controller124:5672/ | mysql+pymysql://nova:****@controller124/nova | False |
+-------+--------------------------------------+------------------------------------------+-------------------------------------------------+----------+重启服务
systemctl restart nova-api nova-scheduler nova-conductor nova-novncproxy配置Compute节点
Compute节点配置完成后….
在控制节点添加计算节点
source ./admin-openrc-fish.sh
openstack compute service list --service nova-compute
# 输出如下的内容
root@controller124:~# openstack compute service list --service nova-compute
+--------------------------------------+--------------+----------+------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+--------------------------------------+--------------+----------+------+---------+-------+----------------------------+
| c9dd606c-0f31-4a9e-9c6f-bb40e33cf054 | nova-compute | compute124 | nova | enabled | up | 2024-03-31T08:01:53.000000 |
+--------------------------------------+--------------+----------+------+---------+-------+----------------------------+
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
# 输出如下的内容
root@controller124:~# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell1': e52327df-10e2-41e1-a1d2-5d7724a85688
Checking host mapping for compute host 'compute1': 844b86c1-7310-4ddf-82cd-0b8f3350ef0d
Creating host mapping for compute host 'compute1': 844b86c1-7310-4ddf-82cd-0b8f3350ef0d
Found 1 unmapped computes in cell: e52327df-10e2-41e1-a1d2-5d7724a85688验证配置
openstack compute service list
# 输出如下的内容
root@controller124:~# openstack compute service list
+--------------------------------------+----------------+------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+--------------------------------------+----------------+------------+----------+---------+-------+----------------------------+
| 2779af9c-cde5-41a6-87b2-5b6840d9b88b | nova-conductor | controller124 | internal | enabled | up | 2024-03-31T08:03:07.000000 |
| b24be4f1-ea05-4ee3-a7eb-8402ff53f172 | nova-scheduler | controller124 | internal | enabled | up | 2024-03-31T08:03:15.000000 |
| c9dd606c-0f31-4a9e-9c6f-bb40e33cf054 | nova-compute | compute124 | nova | enabled | up | 2024-03-31T08:03:13.000000 |
+--------------------------------------+----------------+------------+----------+---------+-------+----------------------------+
openstack catalog list
openstack image list
nova-status upgrade check安装Neutron(使用的是OVN)
创建数据库
mysql
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY 'NEUTRON_DBPASS';
exit;NEUTRON_DBPASS为要设置的密码
创建neutron用户
source ./admin-openrc-fish.sh
openstack user create --domain default --password-prompt neutron添加到admin
openstack role add --project service --user neutron admin创建neutron服务实体
openstack service create --name neutron \
--description "OpenStack Networking" network创建API端点
openstack endpoint create --region RegionOne \
network public http://controller124:9696
openstack endpoint create --region RegionOne \
network internal http://controller124:9696
openstack endpoint create --region RegionOne \
network admin http://controller124:9696安装组件
apt -y install neutron-server neutron-plugin-ml2 python3-neutronclient ovn-central openvswitch-switch配置组件
vim /etc/neutron/neutron.conf
[DEFAULT]
bind_host = controller124
bind_port = 9696
core_plugin = ml2
service_plugins = ovn-router
auth_strategy = keystone
state_path = /var/lib/neutron
allow_overlapping_ips = True
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
transport_url = rabbit://openstack:RABBIT_PASS@controller124
[agent]
[cache]
[cors]
[database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller124/neutron
[healthcheck]
[ironic]
[keystone_authtoken]
www_authenticate_uri = http://controller124:5000
auth_url = http://controller124:5000
memcached_servers = controller124:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = neutron
password = NEUTRON_PASS
[nova]
auth_url = http://controller124:5000
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[oslo_reports]
[placement]
[privsep]
[profiler]
[quotas]
[ssl]RABBIT_PASS为rabbit创建openstack用户创建的密码
NEUTRON_PASS为openstack创建neutron用户设置的密码
NEUTRON_PASS为创建neutron用户访问数据库设置的密码
NOVA_PASS为openstack创建nova用户设置的密码
ControllerIP为Controller节点的IP地址
vim /etc/default/openvswitch-switch
OVS_CTL_OPTS="--ovsdb-server-options='--remote=ptcp:6640:127.0.0.1'"
vim /etc/nova/nova.conf
[neutron]
auth_url = http://controller124: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_PASS
insecure = falseNEUTRON_PASS为openstack创建neutron用户设置的密码 METADATA_PASS为创建的密码
填充数据库
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重启服务
systemctl restart nova-api
systemctl restart openvswitch-switch
ovs-vsctl add-br br-int
systemctl restart ovn-central ovn-northd
ovn-nbctl set-connection ptcp:6641:Controller的IP -- set connection . inactivity_probe=60000
ovn-sbctl set-connection ptcp:6642:Controller的IP -- set connection . inactivity_probe=60000ControllerIP为Controller节点的IP地址
systemctl restart neutron-server在Compute节点配置完Neutron后
配置验证
source ./admin-openrc-fish.sh
openstack network agent list
# 输入如下的内容表示成功
root@controller124:~# openstack network agent list
+--------------------------------------+----------------------+----------+-------------------+-------+-------+----------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+----------------------+----------+-------------------+-------+-------+----------------------------+
| e42ab135-4870-4bfd-8b90-47ad92732627 | OVN Controller agent | compute1 | | :-) | UP | ovn-controller |
| 952c013f-c53d-54b8-89b4-d55930a40171 | OVN Metadata agent | compute1 | | :-) | UP | neutron-ovn-metadata-agent |
+--------------------------------------+----------------------+----------+----------创建OVN网络!!!
Controller节点!!! 和 Compute节点!!! 都需要的操作:
开始
# br-ens34你可以随便取名字
ovs-vsctl add-br br-ens34
12
# ens34为第二张网卡的名称
ovs-vsctl add-port br-ens34 ens34
12
# provider你可以随便取名字
ovs-vsctl set open . external-ids:ovn-bridge-mappings=provider:br-ens34结束
# 创建一个路由
openstack router create router
# 创建selfservice
openstack network create selfservice --provider-network-type geneve
# 创建selfservice子网
openstack subnet create --network selfservice \
--dns-nameserver 8.8.8.8 --gateway 172.16.1.1 \
--subnet-range 172.16.1.0/24 selfservice
# 创建外部网络
openstack network create --share --external \
--provider-physical-network provider \
--provider-network-type flat provider
# 创建外部网络子网
openstack subnet create --network provider \
--allocation-pool start=192.168.46.240,end=192.168.46.250 \
--dns-nameserver 8.8.8.8 --gateway 192.168.46.2 \
--subnet-range 192.168.46.0/24 provider
# 给路由设置网关
openstack router set router --external-gateway provider
# 给路由添加内部接口
openstack router add subnet router selfservice
# 验证是否成功
openstack port list --router router
# 输入如下的内容表示成功
root@controller124:~# openstack port list --router router
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
| ID | Name | MAC Address | Fixed IP Addresses | Status |
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
| 56a061e8-f5b1-4df8-8dcb-347bb53ecead | | fa:16:3e:28:2c:c3 | ip_address='172.16.1.1', subnet_id='df79d0ea-9548-486c-8c79-b9dfe9da35ff' | ACTIVE |
| 6a5c3ba2-df0f-4552-91f1-8eafcdd65da0 | | fa:16:3e:02:f7:16 | ip_address='192.168.46.249', subnet_id='d608e2b9-d2e2-423c-bfec-2a23a1516760' | ACTIVE |
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
# 也可以通过如下的命令查看
ovn-nbctl show
# 输出如下的内容
root@controller124:~# ovn-nbctl show
switch dc4e3afc-da27-4e73-b741-a1c8d57434f7 (neutron-43fe943c-fe1a-4dfe-9f3a-91dc7cdf823f) (aka provider)
port 6a5c3ba2-df0f-4552-91f1-8eafcdd65da0
type: router
router-port: lrp-6a5c3ba2-df0f-4552-91f1-8eafcdd65da0
port dcd112c2-dd97-4f40-b7ba-f8d64bd68a5d
addresses: ["fa:16:3e:16:bc:3a 192.168.46.246"]
port provnet-3140ef3f-1dc0-4490-bfdb-134d1c611aec
type: localnet
addresses: ["unknown"]
port 201604e9-1146-4536-a56d-965e82e26d8e
type: localport
addresses: ["fa:16:3e:5e:20:5b 192.168.46.240"]
switch e7a2f47f-0ea4-4587-bd18-d444a8f1b500 (neutron-31f3eb52-667f-4b5a-8ef3-3f1d048b29b3) (aka selfservice)
port d47fb30d-6d47-4d57-bd4d-96f779f6e765
type: localport
addresses: ["fa:16:3e:47:46:d8 172.16.1.2"]
port d2183412-590a-4bc0-b992-7efaf8a8c9f1
addresses: ["fa:16:3e:a0:e5:23 172.16.1.37"]
port 56a061e8-f5b1-4df8-8dcb-347bb53ecead
type: router
router-port: lrp-56a061e8-f5b1-4df8-8dcb-347bb53ecead
router 715fc656-e8f8-4328-aa2d-82b994bcfe2d (neutron-43435b65-0e5e-4bc0-90fa-5a01c1aa89c2) (aka router)
port lrp-56a061e8-f5b1-4df8-8dcb-347bb53ecead
mac: "fa:16:3e:28:2c:c3"
networks: ["172.16.1.1/24"]
port lrp-6a5c3ba2-df0f-4552-91f1-8eafcdd65da0
mac: "fa:16:3e:02:f7:16"
networks: ["192.168.46.249/24"]
gateway chassis: [e42ab135-4870-4bfd-8b90-47ad92732627]
nat d4d704be-2102-437b-bc4a-0be5504824aa
external ip: "192.168.46.249"
logical ip: "172.16.1.0/24"
type: "snat"
root@controller124:~# 安装Dashboard
安装组件
apt install openstack-dashboard 配置组件
vim /etc/openstack-dashboard/local_settings.py
OPENSTACK_HOST = "controller124"
ALLOWED_HOSTS = ['*']
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller124:11211',
}
}
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 3,
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
vim /etc/apache2/conf-available/openstack-dashboard.conf
# 不存在则添加
WSGIApplicationGroup %{GLOBAL}如果不能正常访问
python3 /usr/share/openstack-dashboard/manage.py compress重启服务
systemctl reload apache2.service接下来操作均可在web上操作
创建实例的计算、内存和存储容量的大小
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
openstack flavor create --id 1 --vcpus 1 --ram 256 --disk 1 m1.mini
openstack flavor create --id 2 --vcpus 1 --ram 384 --disk 1 m1.regular
openstack flavor create --id 3 --vcpus 1 --ram 512 --disk 1 m1.pro密钥设置
ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey设置安全组
openstack security group rule create --proto icmp default
openstack security group rule create --proto tcp --dst-port 22 default至此控制节点所做的操作已经全部完成。