
目录OpenStack Mitaka 三节点部署实操复盘从环境搭建到实例启动全流程踩坑记录一、环境准备虚拟机与基础网络打底1.1 虚拟机资源配置1.2 节点网络与主机名映射1.3 本地离线YUM源搭建二、三大基础服务部署MariaDBRabbitMQMemcached2.1 MariaDB数据库初始化与安全配置2.2 RabbitMQ消息队列与用户权限2.3 Memcached缓存服务监听地址踩坑三、Keystone身份认证整个云平台的入口3.1 数据库创建与授权3.2 主配置文件核心参数3.3 数据库同步与Fernet密钥3.4 Apache WSGI服务配置3.5 服务注册与端点创建3.6 用户角色体系与环境脚本四、Glance镜像服务虚拟机模板管理4.1 服务注册与数据库准备4.2 双配置文件逐项配置4.3 镜像上传与验证五、Nova计算服务控制计算双节点联动5.1 控制节点数据库与服务端点5.2 控制节点Nova核心配置5.3 控制节点服务启动与状态验证5.4 计算节点Nova-Compute部署5.5 计算节点加入集群验证六、Neutron网络服务ML2LinuxBridge方案6.1 控制节点服务注册与主配置6.2 控制节点Neutron主配置6.3 ML2插件与各类Agent配置6.4 数据库同步与服务启动6.5 计算节点网络代理配置6.6 Provider网络创建与Agent验证七、云主机实例创建端到端功能验证7.1 前置资源准备规格、密钥、安全组7.2 命令行创建云主机实例7.3 连通性测试与VNC控制台验证八、Dashboard仪表盘图形化管理界面8.1 安装与本地化配置8.2 界面操作与功能验证实操总结最容易翻车的6个坑OpenStack Mitaka 三节点部署实操复盘从环境搭建到实例启动全流程踩坑记录一、环境准备虚拟机与基础网络打底这次实操是基于CentOS 7系统搭建OpenStack Mitaka版本的三节点集群包含控制节点controller、计算节点compute1和存储节点block1。整个过程在配置细节上踩了不少坑我会把完整操作流程和排错思路都梳理出来。1.1 虚拟机资源配置三个节点统一用VMware虚拟机创建基础硬件配置保持一致内存4GB处理器2核硬盘50GB SCSI双网卡均为NAT模式分别承载管理网络和数据平面流量内存配置界面处理器配置添加一个网络适配器。1.2 节点网络与主机名映射首先配置控制节点的固定管理IP编辑eth0网卡配置文件TYPEEthernet BOOTPROTOnone NAMEeth0 DEVICEeth0 ONBOOTyes IPADDR192.168.48.191 PREFIX24 GATEWAY192.168.48.2 DNS1114.114.114.114配置完成后重启网络服务查看网卡状态确认配置生效systemctl restart network ip a可以看到eth0已经绑定了192.168.48.191eth1暂时不配置IP留作后面Flat网络的物理桥接接口。接下来设置主机名并配置hosts解析三个节点必须全部同步配置不然后面服务之间调用会报域名解析错误。hostnamectl set-hostname controller编辑/etc/hosts文件添加所有节点的解析记录192.168.48.191 controller 192.168.48.192 compute1 192.168.48.193 block11.3 本地离线YUM源搭建因为是离线实验环境我们用本地镜像包搭建Mitaka的软件源。先把安装包解压到/opt目录tar xf mitaka.tar -C /opt/ cd /opt/ ls然后创建repo配置文件/etc/yum.repos.d/openstack.repo[openstack] namemitaka baseurlfile:///opt/mitaka gpgcheck0配置完成后执行yum upgrade更新系统确认源可用后就可以开始部署核心服务了。二、三大基础服务部署MariaDBRabbitMQMemcachedOpenStack所有组件都依赖数据库、消息队列和缓存这三个基础服务必须先部署完成。2.1 MariaDB数据库初始化与安全配置安装数据库服务和Python驱动yum install mariadb mariadb-server python2-PyMySQL -y创建OpenStack专属的数据库配置文件/etc/my.cnf.d/openstack.cnf[mysqld] bind-address 192.168.48.191 default-storage-engine innodb innodb_file_per_table max_connections 4096 collation-server utf8_general_ci character-set-server utf8⚠️ 踩坑提醒bind-address必须填写控制节点的管理IP不能写127.0.0.1否则其他节点的服务根本连不上数据库。启动数据库并设置开机自启systemctl enable --now mariadb.service执行安全初始化脚本设置root密码为123456mysql_secure_installation一路按y确认配置完成后验证登录mysql -p123456 show databases;2.2 RabbitMQ消息队列与用户权限OpenStack服务之间通过消息队列通信这里用RabbitMQyum install rabbitmq-server -y systemctl enable --now rabbitmq-server.service创建OpenStack专用账号并配置读写权限rabbitmqctl add_user openstack openstack rabbitmqctl set_permissions openstack .* .* .*启用Web管理插件方便后续查看队列状态rabbitmq-plugins enable rabbitmq_management启用后访问15672端口即可进入管理界面默认账号密码为guest/guest。2.3 Memcached缓存服务监听地址踩坑安装Memcached和Python客户端yum install memcached python-memcached -y systemctl enable --now memcached.service默认配置下Memcached只监听127.0.0.1:11211这是本次部署第一个大坑后面Keystone、Neutron等服务都会连接Memcached做缓存只监听本地的话其他节点完全连不上。编辑/etc/sysconfig/memcached移除OPTIONS里的本地监听限制PORT11211 USERmemcached MAXCONN1024 CACHESIZE64 OPTIONS重启服务后验证端口监听systemctl restart memcached.service netstat -antlp | grep :11211看到0.0.0.0:11211就说明配置生效了。三、Keystone身份认证整个云平台的入口Keystone是OpenStack的第一个核心服务负责身份认证、服务注册、权限管理所有其他服务都要在Keystone里注册。3.1 数据库创建与授权先登录MariaDB创建Keystone数据库并授权CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO keystonelocalhost IDENTIFIED BY keystone; GRANT ALL PRIVILEGES ON keystone.* TO keystone% IDENTIFIED BY keystone; FLUSH PRIVILEGES;⚠️ 这里必须同时授权localhost和%不然本地同步数据库和远程服务连接必有一个报错。我一开始只写了%本地执行db_sync的时候一直连不上踩了好久的坑。3.2 主配置文件核心参数安装Keystone和Apache WSGI依赖yum install openstack-keystone httpd mod_wsgi -y先生成一个管理员令牌用于初始化阶段的认证openssl rand -hex 10我这里生成的令牌是6694c0efe0840d7d1450【图21】。编辑主配置文件/etc/keystone/keystone.conf分三段配置[DEFAULT] 部分配置管理员令牌[DEFAULT] admin_token 6694c0efe0840d7d1450[database] 部分配置数据库连接串[database] connection mysqlpymysql://keystone:keystonecontroller/keystone注意连接串格式主机名controller必须能通过hosts解析。[token] 部分配置令牌提供者[token] provider fernet3.3 数据库同步与Fernet密钥同步数据库表结构su -s /bin/sh -c keystone-manage db_sync keystone初始化Fernet密钥对cd /etc/keystone keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone执行完成后会生成fernet-keys密钥目录。3.4 Apache WSGI服务配置Keystone通过Apache的WSGI模块对外提供服务先修改Apache主配置文件设置ServerNamevim/etc/httpd/conf/httpd.confServerName controller创建WSGI配置文件/etc/httpd/conf.d/wsgi-keystone.conf分别配置5000公共端口和35357管理端口vim/etc/httpd/conf.d/wsgi-keystone.confListen 5000 Listen 35357 VirtualHost *:5000 WSGIDaemonProcess keystone-public processes5 threads1 userkeystone groupkeystone display-namekeystone-public 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 processes5 threads1 userkeystone groupkeystone display-namekeystone-admin WSGIProcessGroup keystone-admin WSGIScriptAlias / /usr/bin/keystone-wsgi-admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat %{cu}t %M ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined Directory /usr/bin Require all granted /Directory /VirtualHost启动Apache并设置开机自启systemctl enable --now httpd.service查看端口状态确认5000和35357都处于监听状态。3.5 服务注册与端点创建先配置临时环境变量用管理员令牌进行认证export OS_TOKEN6694c0efe0840d7d1450 export OS_URLhttp://controller:35357/v3 export OS_IDENTITY_API_VERSION3创建Keystone服务实体openstack service create --name keystone --description OpenStack Identity identity创建三个访问端点public公共端点、internal内部端点、admin管理端点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执行完成后查看服务和端点列表确认创建成功。3.6 用户角色体系与环境脚本创建域、项目、用户和角色搭建基础权限体系# 创建默认域 openstack domain create --description Default Domain default # 创建管理员项目 openstack project create --domain default --description Admin Project admin # 创建管理员用户 openstack user create --domain default --password admin 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 demo demo openstack role create user openstack role add --project demo --user demo user为了方便后续切换身份创建两个环境变量脚本admin-openrc管理员身份export OS_PROJECT_DOMAIN_NAMEdefault export OS_USER_DOMAIN_NAMEdefault export OS_PROJECT_NAMEadmin export OS_USERNAMEadmin export OS_PASSWORDadmin export OS_AUTH_URLhttp://controller:35357/v3 export OS_IDENTITY_API_VERSION3 export OS_IMAGE_API_VERSION2demo-openrc普通用户身份export OS_PROJECT_DOMAIN_NAMEdefault export OS_USER_DOMAIN_NAMEdefault export OS_PROJECT_NAMEdemo export OS_USERNAMEdemo export OS_PASSWORDdemo export OS_AUTH_URLhttp://controller:5000/v3 export OS_IDENTITY_API_VERSION3 export OS_IMAGE_API_VERSION2给脚本添加执行权限chmod x admin-openrc demo-openrc验证权限source管理员脚本后可以正常查看用户列表切换到demo用户后查看用户列表会返回403无权限这是正常现象普通用户没有全局用户管理权限。管理员视角下完整验证角色、服务、端点、项目、域全部正常Keystone部分就部署完成了。四、Glance镜像服务虚拟机模板管理Glance负责云主机镜像的存储、查询和管理创建虚拟机时需要从Glance拉取镜像模板。4.1 服务注册与数据库准备先创建Glance数据库并授权CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO glancelocalhost IDENTIFIED BY glance; GRANT ALL PRIVILEGES ON glance.* TO glance% IDENTIFIED BY glance; FLUSH PRIVILEGES;在Keystone中创建Glance用户并绑定管理员角色source admin-openrc openstack user create --domain default --password glance glance openstack role add --project service --user glance admin创建Glance服务实体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查看端点列表确认Glance的三个端点都已注册。4.2 双配置文件逐项配置安装Glance服务yum install openstack-glance -yGlance有两个核心配置文件需要修改glance-api.conf和glance-registry.conf。先编辑/etc/glance/glance-api.conf数据库连接配置[database] connection mysqlpymysql://glance:glancecontroller/glance认证方式配置[paste_deploy] flavor keystoneKeystone认证信息[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镜像存储配置[glance_store] stores file,http default_store file filesystem_store_datadir /var/lib/glance/images再编辑/etc/glance/glance-registry.conf数据库和认证配置与api配置保持一致。4.3 镜像上传与验证启动Glance API服务systemctl enable --now openstack-glance-api查看9292端口确认服务正常监听。下载Cirros测试镜像轻量Linux系统适合做实验wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img上传镜像到Glancesource admin-openrc glance image-create --name cirros --disk-format qcow2 --container-format bare --public --progress cirros-0.3.4-x86_64-disk.img查看镜像列表确认上传成功openstack image list五、Nova计算服务控制计算双节点联动Nova是计算核心服务分为控制节点和计算节点两部分控制节点运行API、调度器等管理服务计算节点运行nova-compute进程负责真正创建虚拟机。5.1 控制节点数据库与服务端点Nova需要两个数据库nova_api存API相关数据nova存核心业务数据CREATE DATABASE nova_api; CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova_api.* TO novalocalhost IDENTIFIED BY nova; GRANT ALL PRIVILEGES ON nova_api.* TO nova% IDENTIFIED BY nova; GRANT ALL PRIVILEGES ON nova.* TO novalocalhost IDENTIFIED BY nova; GRANT ALL PRIVILEGES ON nova.* TO nova% IDENTIFIED BY nova; FLUSH PRIVILEGES;创建Nova用户和服务实体openstack user create --domain default --password nova 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注意URL里的%(tenant_id)s要加转义符不然Shell会当成变量解析为空。5.2 控制节点Nova核心配置安装控制节点的Nova组件包yum install openstack-nova-api openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy \ openstack-nova-scheduler -y编辑/etc/nova/nova.conf这是配置项最多的文件分段逐一配置[DEFAULT] 全局配置[DEFAULT] enabled_apis osapi_compute,metadata rpc_backend rabbit auth_strategy keystone my_ip 192.168.48.191 use_neutron True firewall_driver nova.virt.firewall.NoopFirewallDrivermy_ip填写当前节点的管理IP控制节点和计算节点不一样。数据库连接配置[api_database] connection mysqlpymysql://nova:novacontroller/nova_api [database] connection mysqlpymysql://nova:novacontroller/novaKeystone认证配置[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 novaRabbitMQ消息队列配置[oslo_messaging_rabbit] rabbit_host controller rabbit_userid openstack rabbit_password openstack锁路径配置[oslo_concurrency] lock_path /var/lib/nova/tmpVNC控制台配置[vnc] vncserver_listen $my_ip vncserver_proxyclient_address $my_ipGlance服务地址[glance] api_servers http://controller:92925.3 控制节点服务启动与状态验证同步两个数据库的表结构su -s /bin/sh -c nova-manage api_db sync nova su -s /bin/sh -c nova-manage db sync nova同步过程中会出现几个重复索引的Warning属于版本兼容问题不影响正常使用。启动所有Nova控制节点服务并设置开机自启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查看计算服务列表控制节点的三个服务应该都是up状态openstack compute service list5.4 计算节点Nova-Compute部署先配置compute1节点的网络和hosts和控制节点操作一致管理IP为192.168.48.192。安装计算节点服务yum install openstack-nova-compute -y同样编辑/etc/nova/nova.conf大部分配置和控制节点一致只有my_ip和VNC部分有区别[DEFAULT] rpc_backend rabbit auth_strategy keystone my_ip 192.168.48.192 use_neutron True firewall_driver nova.virt.firewall.NoopFirewallDriver [oslo_messaging_rabbit] rabbit_host controller rabbit_userid openstack rabbit_password openstack [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 [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启动计算服务并设置开机自启systemctl enable --now openstack-nova-compute.service5.5 计算节点加入集群验证回到控制节点再次查看计算服务列表应该能看到compute1节点的nova-compute服务已经注册上来状态为up。六、Neutron网络服务ML2LinuxBridge方案Neutron负责整个云平台的网络管理提供网络、子网、端口、安全组等功能。本次实验采用ML2核心插件Linux Bridge代理的方案。6.1 控制节点服务注册与主配置先创建Neutron数据库这里很容易忘我一开始漏了建库同步数据库的时候一直报错CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO neutronlocalhost IDENTIFIED BY neutron; GRANT ALL PRIVILEGES ON neutron.* TO neutron% IDENTIFIED BY neutron; FLUSH PRIVILEGES;创建Neutron用户和服务实体openstack user create --domain default --password neutron 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:96966.2 控制节点Neutron主配置安装Neutron相关组件yum install openstack-neutron openstack-neutron-ml2 \ openstack-neutron-linuxbridge ebtables -y编辑主配置文件/etc/neutron/neutron.conf[DEFAULT] 全局配置[DEFAULT] core_plugin ml2 service_plugins rpc_backend rabbit auth_strategy keystone notify_nova_on_port_status_changes True notify_nova_on_port_data_changes True数据库连接[database] connection mysqlpymysql://neutron:neutroncontroller/neutron消息队列配置[oslo_messaging_rabbit] rabbit_host controller rabbit_userid openstack rabbit_password openstackKeystone认证[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 neutronNova联动配置[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 nova6.3 ML2插件与各类Agent配置编辑ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini[ml2] type_drivers flat,vlan tenant_network_types mechanism_drivers linuxbridge extension_drivers port_security [ml2_type_flat] flat_networks provider [securitygroup] enable_ipset True编辑Linux Bridge代理配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini[linux_bridge] physical_interface_mappings provider:eth1 [vxlan] enable_vxlan False [securitygroup] enable_security_group True firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver这里provider:eth1要和上面flat_networks的名称对应而且eth1必须是up状态不然后面代理启动失败。编辑DHCP代理配置/etc/neutron/dhcp_agent.ini[DEFAULT] interface_driver linuxbridge dhcp_driver neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata True编辑元数据代理配置/etc/neutron/metadata_agent.ini[DEFAULT] nova_metadata_ip controller metadata_proxy_shared_secret westos6.4 数据库同步与服务启动建立软链接让Neutron加载ML2插件配置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执行开头会出现一句No handlers could be found for logger oslo_config.cfg我一开始以为是报错查了半天其实就是日志提示最后跑完会输出OK不用管。启动所有Neutron服务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.service6.5 计算节点网络代理配置计算节点不需要部署Neutron服务端只需要安装Linux Bridge代理yum install openstack-neutron-linuxbridge ebtables -y配置/etc/neutron/neutron.conf只保留消息队列和认证配置[DEFAULT] rpc_backend rabbit auth_strategy keystone [oslo_messaging_rabbit] rabbit_host controller rabbit_userid openstack rabbit_password openstack [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配置Linux Bridge代理和控制节点完全一致vim/etc/neutron/plugins/ml2/linuxbridge_agent.ini[linux_bridge] physical_interface_mappings provider:eth1 [vxlan] enable_vxlan False [securitygroup] enable_security_group True firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver最后还要在Nova配置里加上Neutron联动项不然Nova和Neutron无法对接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重启Nova计算服务启动Neutron代理systemctl restart openstack-nova-compute.service systemctl enable --now neutron-linuxbridge-agent.service6.6 Provider网络创建与Agent验证回到控制节点查看所有Agent状态四个代理都应该是up状态neutron agent-list创建一个Flat类型的Provider网络直接桥接物理网卡neutron net-create --shared --provider:physical_network provider \ --provider:network_type flat provider创建对应子网配置地址池和网关neutron subnet-create --name provider-subnet \ --allocation-pool start192.168.48.101,end192.168.48.150 \ --dns-nameserver 114.114.114.114 --gateway 192.168.48.2 \ provider 192.168.48.0/24七、云主机实例创建端到端功能验证核心服务全部部署完成后创建一台云主机验证整个链路是否通顺。7.1 前置资源准备规格、密钥、安全组先创建一个最小规格的云主机类型openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano查看所有可用规格openstack flavor list创建SSH密钥对用于远程登录云主机ssh-keygen -q -N openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey给默认安全组放通ICMP和22端口方便测试连通性openstack security group rule create --proto icmp default openstack security group rule create --proto tcp --dst-port 22 default7.2 命令行创建云主机实例切换到demo用户创建云主机实例source demo-openrc openstack server create --flavor m1.nano --image cirros \ --nic net-id50edba0d-3b99-4a72-823e-e93d167f4369 \ --security-group default --key-name mykey provider-instancenet-id需要替换成你自己的网络ID用neutron net-list可以查询。说明中间因为部分配置错误上述操作我重新执行了一遍部分资源ID和截图中不一致只要操作步骤正确ID差异不影响功能。等待实例状态从BUILD变为ACTIVE过程中可以通过VNC控制台查看启动日志。7.3 连通性测试与VNC控制台验证实例启动后查看分配的IP地址openstack server list我这里分配到的IP是192.168.48.102。SSH连接云主机默认密码为cubswin:)ssh cirros192.168.48.102登录后查看网卡信息确认IP配置正确。ping百度测试外网连通性ping baidu.com能正常通就说明从虚拟机到物理网络的整条链路都没问题了。八、Dashboard仪表盘图形化管理界面最后部署Horizon仪表盘提供Web图形化管理界面。8.1 安装与本地化配置安装Dashboard包yum install openstack-dashboard -y编辑配置文件/etc/openstack-dashboard/local_settings逐项配置Keystone服务地址OPENSTACK_HOST controller OPENSTACK_KEYSTONE_URL http://%s:5000/v3 % OPENSTACK_HOST OPENSTACK_KEYSTONE_DEFAULT_ROLE user允许所有主机访问ALLOWED_HOSTS [*]Memcached缓存配置SESSION_ENGINE django.contrib.sessions.backends.cache CACHES { default: { BACKEND: django.core.cache.backends.memcached.MemcachedCache, LOCATION: controller:11211, } }多域支持OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT True OPENSTACK_KEYSTONE_DEFAULT_DOMAIN defaultNeutron网络选项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, }因为我们用的是Flat Provider网络没有路由器这些功能全部关掉不然Dashboard会报错。时区设置TIME_ZONE Asia/Shanghai8.2 界面操作与功能验证重启Apache和Memcached使配置生效systemctl restart httpd.service memcached.service浏览器访问http://192.168.48.191/dashboard用admin账号登录即可进入管理界面。在Dashboard中可以完成项目管理、用户管理、网络创建、云主机管理等操作和命令行功能完全对应。我也测试了通过界面创建网络、子网、云主机类型和实例图形化操作比命令行直观很多适合日常运维。删除云主机删除子网以管理员身份删除网络以图形化的方式创建网络实操总结最容易翻车的6个坑这次三节点部署从头到尾踩了不少配置细节的坑总结几个最高发的问题Hosts解析必须全节点同步OpenStack服务之间几乎都通过主机名调用少一个节点没配都会出现奇奇怪怪的连通问题。服务监听地址别用127.0.0.1MariaDB、Memcached默认都只监听本地一定要改成管理IP或者0.0.0.0否则跨节点访问必失败。数据库授权双写localhost和%每个服务的数据库都要同时授权本地和远程不然db_sync和远程访问必有一个报错。配置文件注意格式和拼写OpenStack对配置文件的空格、缩进、参数拼写非常敏感复制粘贴的时候一定要检查。服务部署顺序不能乱必须严格按照Keystone→Glance→Nova→Neutron的顺序后面的服务强依赖前面的服务注册。Neutron别忘记建库部署Neutron的时候很容易跳过创建数据库的步骤同步的时候才发现连不上库。整体下来Mitaka版本的部署逻辑非常清晰每个服务都是「建库建用户→修改配置→同步数据库→启动服务→验证」的固定套路摸清楚这个范式后后续扩展Cinder、Swift等服务都会快很多。