【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``域凭证

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值