当前位置: 首页 > news >正文

【OpenStack部署-1】

主机网络

各个节点操都要配置

配置网络接口

将第一个接口配置为管理网络接口

[root@controller ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

提供者网络接口使用一个特殊的配置,不分配给它IP地址。配置第二块网卡作为提供者网络

[root@controller ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

改完之后

[root@controller ~]# systemctl restart network

如果网卡名称不是eth0,加一条参数,重启生效

[root@controller ~]# vim /boot/grub2/grub.cfg

配置域名解析

[root@controller ~]# vim /etc/hosts

网络时间协议(NTP)

控制节点服务器

[root@controller ~]# yum install chrony

[root@controller ~]# vim /etc/chrony.conf

[root@controller ~]# systemctl enable --now chronyd.service

其它节点服务器

[root@compute1 ~]# yum install chrony
[root@compute1 ~]# vim /etc/chrony.conf

[root@compute1 ~]# systemctl enable --now chronyd.service

OpenStack包

主机必须包含最新版本的基础安装软件包

[root@controller ~]# tar xf mitaka.tar -C /opt/

[root@controller ~]# vim /etc/yum.repos.d/openstack.repo

[root@controller ~]# yum upgrade

如果更新了一个新内核,重启主机来使用新内核

安装 OpenStack 客户端

[root@controller ~]# yum install python-openstackclient

SQL数据库

[root@controller ~]# yum install mariadb mariadb-server python2-PyMySQL

[root@controller ~]# vim /etc/my.cnf.d/openstack.cnf

[root@controller ~]# systemctl enable --now mariadb.service

[root@controller ~]# mysql_secure_installation

消息队列

[root@controller ~]# yum install rabbitmq-server

[root@controller ~]# rabbitmq-plugins enable --now rabbitmq_management

[root@controller ~]# systemctl enable --now rabbitmq-server.service

[root@controller ~]# rabbitmqctl add_user openstack openstack

[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

http://192.168.247.171:15672/

用户/密码:guest/guest

Memcached

[root@controller ~]# yum install memcached python-memcached

[root@controller ~]# vim /etc/sysconfig/memcached

[root@controller ~]# systemctl enable --now memcached.service

认证服务

这一章描述如何在控制节点上安装和配置OpenStack身份认证服务,代码名称keystone。出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求

安装和配置

先决条件

[root@controller ~]# 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';

用合适的密码替换 KEYSTONE_DBPASS

生成一个随机值在初始的配置中作为管理员的令牌

[root@controller ~]# openssl rand -hex 10

安全并配置组件

[root@controller ~]# yum install openstack-keystone httpd mod_wsgi

[root@controller ~]# vim /etc/keystone/keystone.conf

admin_token = ADMIN_TOKEN

使用前面步骤生成的随机数替换``ADMIN_TOKEN`` 值。

connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

将``KEYSTONE_DBPASS``替换为你为数据库选择的密码

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

provider = fernet

[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

配置 Apache HTTP 服务器

[root@controller ~]# vim /etc/httpd/conf/httpd.conf

[root@controller ~]# vim /etc/httpd/conf.d/wsgi-keystone.conf

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>

[root@controller ~]# systemctl enable --now httpd.service

创建服务实体和API端点

export OS_TOKEN=ADMIN_TOKEN

将ADMIN_TOKEN替换为你生成的认证令牌。例如:

[root@controller ~]# export OS_TOKEN=32684dec9a19700d548f
[root@controller ~]# export OS_URL=http://controller:35357/v3
[root@controller ~]# export OS_IDENTITY_API_VERSION=3

$ openstack service create \ --name keystone --description "OpenStack Identity" identity
$ 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

创建域、项目、用户和角色

$ openstack domain create --description "Default Domain" default
$ openstack project create --domain default \ --description "Admin Project" admin
$ openstack user create --domain default \ --password-prompt admin
$ openstack role create admin
$ openstack role add --project admin --user admin admin
$ openstack project create --domain default \ --description "Service Project" service
$ openstack project create --domain default \ --description "Demo Project" demo
$ openstack user create --domain default \ --password-prompt demo
$ openstack role create user
$ openstack role add --project demo --user demo user

验证操作

重置``OS_TOKEN``和``OS_URL`` 环境变量:

$ unset OS_TOKEN OS_URL

作为 admin 用户,请求认证令牌:

$ openstack --os-auth-url http://controller:35357/v3 \ --os-project-domain-name default --os-user-domain-name default \ --os-project-name admin --os-username admin token issue

作为``demo`` 用户,请求认证令牌:

$ openstack --os-auth-url http://controller:5000/v3 \ --os-project-domain-name default --os-user-domain-name default \ --os-project-name demo --os-username demo token issue

创建 OpenStack 客户端环境脚本

[root@controller ~]# vim 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_PASS export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2

将 ADMIN_PASS 替换为你在认证服务中为 admin 用户选择的密码

[root@controller ~]# vim demo-openrc

export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=DEMO_PASS export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2

将 DEMO_PASS 替换为你在认证服务中为 demo 用户选择的密码

[root@controller ~]# chmod +x admin-openrc demo-openrc
[root@controller ~]# . admin-openrc

[root@controller ~]# openstack token issue


镜像服务

安装和配置

$ 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';

用一个合适的密码替换 GLANCE_DBPASS

退出数据库客户端

$ . admin-openrc
$ openstack user create --domain default --password-prompt 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

[root@controller ~]# yum install openstack-glance

编辑文件 /etc/glance/glance-api.conf 并完成如下动作

  • [database] ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

    将``GLANCE_DBPASS`` 替换为你为镜像服务选择的密码。

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

    [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS [paste_deploy] ... flavor = keystone

    将 GLANCE_PASS 替换为你为认证服务中你为 glance 用户选择的密码。

  • 在 [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`` 替换为你为镜像服务选择的密码。

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

    [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS [paste_deploy] ... flavor = keystone

写入镜像服务数据库:

# su -s /bin/sh -c "glance-manage db_sync" glance
  • 启动镜像服务、配置他们随机启动:

    # systemctl enable openstack-glance-api.service \ openstack-glance-registry.service # systemctl start openstack-glance-api.service \ openstack-glance-registry.service

验证操作

$ . admin-openrc
$ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
$ openstack image create "cirros" \ --file cirros-0.3.4-x86_64-disk.img \ --disk-format qcow2 --container-format bare \ --public

$ openstack image list

计算服务

安装并配置控制节点

先决条件

$ mysql -u root -p
CREATE DATABASE nova_api; CREATE DATABASE nova;
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';

用合适的密码代替 NOVA_DBPASS

退出数据库客户端

$ . admin-openrc
$ openstack user create --domain default \ --password-prompt nova

$ openstack role add --project service --user nova admin
$ openstack service create --name nova \ --description "OpenStack Compute" compute

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

安全并配置组件

yum install openstack-nova-api openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy \ openstack-nova-scheduler

[root@controller ~]# vim /etc/nova/nova.conf

[DEFAULT] ... enabled_apis = osapi_compute,metadata
[api_database] ... connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api [database] ... connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

用你为 Compute 数据库选择的密码来代替 NOVA_DBPASS。

[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS

用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

[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

使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``

[DEFAULT] ... my_ip = 192.168.247.171
[DEFAULT] ... use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc] ... vncserver_listen = $my_ip vncserver_proxyclient_address = $my_ip
[glance] ... api_servers = http://controller:9292
[oslo_concurrency] ... lock_path = /var/lib/nova/tmp

同步Compute 数据库:

# su -s /bin/sh -c "nova-manage api_db sync" nova # su -s /bin/sh -c "nova-manage db sync" nova
  • 启动 Compute 服务并将其设置为随系统启动:

    # 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

安装和配置计算节点

安全并配置组件

# yum install openstack-nova-compute
[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS

用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

[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

使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``

[DEFAULT] ... my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS

将其中的 MANAGEMENT_INTERFACE_IP_ADDRESS 替换为计算节点上的管理网络接口的IP 地址

[DEFAULT] ... use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc] ... enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = $my_ip novncproxy_base_url = http://controller:6080/vnc_auto.html
[glance] ... api_servers = http://controller:9292
[oslo_concurrency] ... lock_path = /var/lib/nova/tmp

完成安装

$ egrep -c '(vmx|svm)' /proc/cpuinfo

如果这个命令返回了 one or greater 的值,那么你的计算节点支持硬件加速且不需要额外的配置。

如果这个命令返回了 zero 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM

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

# systemctl enable libvirtd.service openstack-nova-compute.service # systemctl start libvirtd.service openstack-nova-compute.service

验证操作

在控制节点上执行这些命令

Networking 服务

安装并配置控制节点

$ mysql -u root -p
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';
$ . admin-openrc
$ openstack user create --domain default --password-prompt neutron

openstack role add --project service --user neutron admin
openstack service create --name neutron \ --description "OpenStack Networking" network

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

配置网络选项

yum install openstack-neutron openstack-neutron-ml2 \ openstack-neutron-linuxbridge ebtables

[root@controller ~]# vim /etc/neutron/neutron.conf

[database] ... connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron

使用你设置的数据库密码替换 NEUTRON_DBPASS

[DEFAULT] ... core_plugin = ml2 service_plugins =
[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS

用你在RabbitMQ中为``openstack``选择的密码替换 “RABBIT_PASS”

[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

将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码

[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

使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``

[oslo_concurrency] ... lock_path = /var/lib/neutron/tmp

[root@controller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini

[ml2] ... type_drivers = flat,vlan
[ml2] ... tenant_network_types =
[ml2] ... mechanism_drivers = linuxbridge
[ml2] ... extension_drivers = port_security
[ml2_type_flat] ... flat_networks = provider
[securitygroup] ... enable_ipset = True

[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge] physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

将``PUBLIC_INTERFACE_NAME`` 替换为底层的物理公共网络接口

[vxlan] enable_vxlan = False
[securitygroup] ... enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

[root@controller ~]# vim /etc/neutron/dhcp_agent.ini

[DEFAULT] ... interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = True

配置元数据代理

[root@controller ~]# vim /etc/neutron/metadata_agent.ini

[DEFAULT] ... nova_metadata_ip = controller metadata_proxy_shared_secret = METADATA_SECRET

用你为元数据代理设置的密码替换 METADATA_SECRET

为计算节点配置网络服务

[root@controller ~]# vim /etc/nova/nova.conf

[neutron] ... url = http://controller:9696 auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = NEUTRON_PASS service_metadata_proxy = True metadata_proxy_shared_secret = METADATA_SECRET

将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码。

使用你为元数据代理设置的密码替换``METADATA_SECRET``

完成安装

# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
# 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 openstack-nova-api.service
# systemctl enable neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service # systemctl start neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service

安装和配置计算节点

安装组件

# yum install openstack-neutron-linuxbridge ebtables ipset

配置通用组件

[root@compute1 ~]# vim /etc/neutron/neutron.conf

[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS

用你在RabbitMQ中为``openstack``选择的密码替换 “RABBIT_PASS”

[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

将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码

[oslo_concurrency] ... lock_path = /var/lib/neutron/tmp

配置网络选项

[root@compute1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge] physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

将``PUBLIC_INTERFACE_NAME`` 替换为底层的物理公共网络接口

[vxlan] enable_vxlan = False
[securitygroup] ... enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

为计算节点配置网络服务

[root@compute1 ~]# vim /etc/nova/nova.conf

[neutron] ... url = http://controller:9696 auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = NEUTRON_PASS

将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码

完成安装

# systemctl restart openstack-nova-compute.service
# systemctl enable neutron-linuxbridge-agent.service # systemctl start neutron-linuxbridge-agent.service

验证操作

在控制节点上执行这些命令

[root@controller ~]# neutron agent-list

输出结果应该包括控制节点上的三个代理和每个计算节点上的一个代理

启动一个实例

创建提供者网络

[root@controller ~]# . admin-openrc
[root@controller ~]# neutron net-create --shared --provider:physical_network provider \
> --provider:network_type flat provider

[root@controller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini

[ml2_type_flat] flat_networks = provider

[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge] physical_interface_mappings = provider:eth1

[root@controller ~]# neutron subnet-create --name provider \
> --allocation-pool start=192.168.247.101,end=192.168.247.120 \
> --dns-nameserver 114.114.114.114 --gateway 192.168.247.2 \
> provider 192.168.247.0/24

创建m1.nano规格的主机

[root@controller ~]# openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

生成一个键值对

[root@controller ~]# ssh-keygen -q -N ""
[root@controller ~]# openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

[root@controller ~]# openstack keypair list

增加安全组规则

[root@controller ~]# openstack security group rule create --proto icmp default

[root@controller ~]# openstack security group rule create --proto tcp --dst-port 22 default

在公有网络上创建实例

[root@controller ~]# . demo-openrc
[root@controller ~]# openstack flavor list

[root@controller ~]# openstack image list

[root@controller ~]# openstack network list

[root@controller ~]# openstack security group list

[root@controller ~]# openstack server create --flavor m1.nano --image cirros --nic net-id=fd33ce72-9eeb-40b9-9965-8f398f1ab893 --security-group default --key-name mykey provider-instance

[root@controller ~]# openstack server list

使用虚拟控制台访问实例

[root@controller ~]# openstack console url show provider-instance

如果你运行浏览器的主机无法解析``controller`` 主机名,你可以将 ``controller``替换为你控制节点管理网络的IP地址

验证能否连接到互联网

验证能否远程访问实例

验证控制节点或者其他公有网络上的主机能否ping通实例

[root@controller ~]# openstack server list

在控制节点或其他公有网络上的主机使用 SSH远程访问实例

[root@controller ~]# ssh cirros@192.168.247.101

Dashboard

安装和配置

[root@controller ~]# yum install openstack-dashboard
[root@controller ~]# vim /etc/openstack-dashboard/local_settings

OPENSTACK_HOST = "controller"
ALLOWED_HOSTS = ['*', ]
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'controller:11211', } }
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 2, }
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
OPENSTACK_NEUTRON_NETWORK = { ... 'enable_router': False, 'enable_quotas': False, 'enable_distributed_router': False, 'enable_ha_router': False, 'enable_lb': False, 'enable_firewall': False, 'enable_vpn': False, 'enable_fip_topology_check': False, }
TIME_ZONE = "Asia/Shanghai"

[root@controller ~]# systemctl restart httpd.service memcached.service

验证操作

http://192.168.247.171/dashboard

验证使用 admin 或者``demo``用户凭证和``default``域凭证

http://www.cnnetsun.cn/news/4260821.html

相关文章:

  • 【RAG】Qwen 本地 RAG 推理智能体案例讲解
  • Matplotlib图形绘制方法精讲:从面向对象架构到多子图布局实战
  • AI Agent 工程实践(33):Agent 如何监控
  • 动态规划实战:从最长公共子序列到蓝肽子序列问题解析
  • 【LLM】Qwen3-0.6B服务化部署、请求与性能测试
  • Pydantic 数据验证讲解
  • YOLO目标检测实战:从331张行人车辆数据集入门到部署
  • 充电桩产线 ATE 自动测试系统架构设计:上下料/测试/分拣怎么拼
  • RustFS 加入 NVIDIA Inception:AI 原生存储路线走到哪了
  • 本地LLM硬件需求怎么算?显存内存估算公式与配置指南
  • 2026年数据分类分级产品选型指南:七大厂商解决方案技术评测与行业优选解析
  • 从零构建AI文本检测系统:Wikipedia AI or Not Quiz实战
  • 概率张量分解与函数配准的统一框架:光滑重参数化实战
  • 荒岛求生1.1.6他来啦
  • 李宏毅机器学习课程学习指南:从基础到实战的完整路径
  • AI生成美术素材引争议:游戏团队必须建立流程责任与审查机制
  • Spring代理模式深度解析:从AOP原理到事务模拟实战
  • 从零构建LLM:打通训练与推理全流程的工程实践
  • effective modern C++- item 1: 理解模版类型推导
  • 零基础也能吃透!Python自动化办公全实操教程,告别加班效率翻倍
  • 学习Python图像处理库Pillow
  • 【29册即拍即发】折纸侦探团全系列PDF合集(1-29卷)|高清步骤图+动物/昆虫/人物全覆盖|折纸入门与进阶必备收藏版
  • 14.什么时候用pgvector什么时候单独部署Milvus
  • PCB缺陷检测VOC数据集实战避坑指南
  • 千问 LeetCode 11. 盛最多水的容器 Java实现
  • AI望远镜技术落地:从边缘推理到智能观测自建方案
  • 学术AI技术进阶:单一模型局限性与多模型协同架构在科研全流程的落地价值
  • 打架行为检测数据集:VOC+YOLO双格式2类别实战指南
  • 深入理解C++ std::enable_if_t的用法<一>做为函数返回值
  • 基于CNN的睡眠质量分析系统:从时间序列处理到健康应用实践