目录

centos7进行openstack安装(基于N版)

前言

本文是参照openstack N版官方文档,进行部署学习测试,不涉及任何高可用,以及参数的探究,还有性能的优化等等。后续会在其他文章对使用中的细节进行分享

NTP配置

此例以master节点作为集群所有node节点的时钟同步源

安装

控制节点

  1. 安装yum install chrony

  2. vi /etc/chrony.conf

    1
    2
    
    server NTP_SERVER iburst
    allow 10.0.0.0/24
    
  3. 启动服务

    1
    2
    
    systemctl enable chronyd.service
    systemctl start chronyd.service
    

其他节点

  1. 安装yum install chrony
  2. vi /etc/chrony.conf
    1
    2
    
    server NTP_SERVER iburst
    allow 10.0.0.0/24
    
  3. 启动服务
    1
    2
    
    systemctl enable chronyd.service
    systemctl start chronyd.service
    

验证

控制节点

1
2
3
4
5
6
# chronyc sources
  210 Number of sources = 2
  MS Name/IP address         Stratum Poll Reach LastRx Last sample
  ===============================================================================
  ^- 192.0.2.11                    2   7    12   137  -2814us[-3000us] +/-   43ms
  ^* 192.0.2.12                    2   6   177    46    +17us[  -23us] +/-   68ms

其他节点

1
2
3
4
5
6
7
# chronyc sources

  210 Number of sources = 1

  MS Name/IP address         Stratum Poll Reach LastRx Last sample
  ===============================================================================
  ^* controller                    3    9   377   421    +15us[  -87us] +/-   15ms

准备工作

  1. 安装源 yum install centos-release-openstack-newton
  2. 安装需要的系统包 yum install vsftpd ftp ntp ntpdate net-tools
  3. 升级系统到最新 yum upgrade
  4. 安装openstack client yum install python-openstackclient
  5. 安装selinux自动管理工具 yum install openstack-selinux
  6. 配置相关hosts,这里不再赘述

SQL数据库安装

  1. 安装 yum install mariadb mariadb-server python2-PyMySQL

  2. 编辑vi /etc/my.cnf.d/openstack.cnf

    1
    2
    3
    4
    5
    6
    
    bind-address = 10.0.0.11
    default-storage-engine = innodb
    innodb_file_per_table
    max_connections = 4096
    collation-server = utf8_general_ci
    character-set-server = utf8
    
  3. 启动服务

    1
    2
    
    systemctl enable mariadb.service
    systemctl start mariadb.service
    
  4. 初始化 mysql_secure_installation

memcached安装

  1. 安装 yum install memcached python-memcached
  2. 启动服务
    1
    2
    
    systemctl enable memcached.service
    systemctl start memcached.service
    

rabbitmq安装

  1. 安装 yum install rabbitmq-server
  2. 启动服务 systemctl enable rabbitmq-server.service systemctl start rabbitmq-server.service
  3. 创建用户 rabbitmqctl add_user openstack openstack
  4. 修改权限 rabbitmqctl set_permissions openstack ".*" ".*" ".*"

keystone安装

创建数据库(更改密码)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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';
安装需求包
yum install openstack-keystone httpd mod_wsgi
编辑vi /etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token]
provider = fernet

同步数据库

su -s /bin/sh -c "keystone-manage db_sync" keystone

初始化fernet密钥库

1
2
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

启动keystone(更改密码)

keystone-manage bootstrap --bootstrap-password ADMIN_PASS --bootstrap-admin-url http://controller:35357/v3/ --bootstrap-internal-url http://controller:35357/v3/ --bootstrap-public-url http://controller:5000/v3/ --bootstrap-region-id RegionOne

配置http

  1. 写入配置文件

    vi /etc/httpd/conf/httpd.conf ServerName controller

  2. 创建软链接 ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

  3. 启动服务 systemctl enable httpd.service systemctl start httpd.service

  4. 插入环境变量

    1
    2
    3
    4
    5
    6
    7
    
    export OS_USERNAME=admin
    export OS_PASSWORD=ADMIN_PASS
    export OS_PROJECT_NAME=admin
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_AUTH_URL=http://controller:35357/v3
    export OS_IDENTITY_API_VERSION=3
    
  5. 创建project/user/role

    1
    2
    3
    4
    5
    
    penstack 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
    
  6. 禁用临时身份验证令牌机制 编辑vi /etc/keystone/keystone-paste.ini 移除[pipeline:public_api], [pipeline:admin_api], and [pipeline:api_v3]的admin_token_auth

  7. 验证

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    unset OS_URL
    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
       Password:
       +------------+-----------------------------------------------------------------+
       | Field      | Value                                                           |
       +------------+-----------------------------------------------------------------+
       | expires    | 2016-02-12T20:14:07.056119Z                                     |
       | id         | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
       |            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
       |            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
       | project_id | 343d245e850143a096806dfaefa9afdc                                |
       | user_id    | ac3377633149401296f6c0d92d79dc16                                |
       +------------+-----------------------------------------------------------------+
    
    
    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
    
    Password:
    +------------+-----------------------------------------------------------------+
    | Field      | Value                                                           |
    +------------+-----------------------------------------------------------------+
    | expires    | 2016-02-12T20:15:39.014479Z                                     |
    | id         | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
    |            | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
    |            | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U       |
    | project_id | ed0b60bf607743088218b0a533d5943f                                |
    | user_id    | 58126687cbcc4888bfa9ab73a2256f27                                |
    +------------+-----------------------------------------------------------------+
    
  8. 创建环境变量文件

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    vi 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
    
    vi 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
    
    openstack token issue
    

glance安装

  1. 创建数据库(修改密码)

    1
    2
    3
    4
    
    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';
    
  2. 应用环境变量

    source admin-openrc

  3. 创建用户等

    1
    2
    3
    4
    5
    6
    
    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
    
  4. 安装

    1
    
    yum install openstack-glance
    
  5. 编辑vi /etc/glance/glance-api.conf(注释掉其他任何[keystone_authtoken] )

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    [database]
    connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
    [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_store]
    stores = file,http
    default_store = file
    filesystem_store_datadir = /var/lib/glance/images/
    
  6. 编辑 vi /etc/glance/glance-registry.conf(注释掉其他任何[keystone_authtoken] )

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    [database]
    connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
    [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
    
  7. 同步数据库

    1
    
    su -s /bin/sh -c "glance-manage db_sync" glance
    
  8. 启动服务

    1
    2
    
    systemctl enable openstack-glance-api.service openstack-glance-registry.service
    systemctl start openstack-glance-api.service openstack-glance-registry.service
    
  9. 验证

    1
    2
    
    openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
    openstack image list
    

nova安装

控制节点部分

  1. d创建数据库

    1
    2
    3
    4
    5
    6
    7
    
    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';
    
  2. 应用环境变量

    1
    
    source admin-openrc
    
  3. 创建用户

    1
    2
    3
    4
    5
    6
    
    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
    
  4. 安装 yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler

  5. 编辑vi /etc/nova/nova.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    [DEFAULT]
    enabled_apis = osapi_compute,metadata
    rpc_backend = rabbit
    auth_strategy = keystone
    my_ip = 10.0.0.11
    use_neutron = True
    firewall_driver = nova.virt.firewall.NoopFirewallDriver
    [api_database]
    connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
    [database]
    connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
    [oslo_messaging_rabbit]
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS
    [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
    [vnc]
    vncserver_listen = $my_ip
    vncserver_proxyclient_address = $my_ip
    [glance]
    api_servers = http://controller:9292
    [oslo_concurrency]
    lock_path = /var/lib/nova/tmp
    
  6. 同步数据库

    1
    2
    
    su -s /bin/sh -c "nova-manage api_db sync" nova
    su -s /bin/sh -c "nova-manage db sync" nova
    
  7. 启动服务

    1
    2
    
    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
    

计算节点部分

  1. 安装

    1
    
    yum install openstack-nova-compute
    
  2. 编辑vi /etc/nova/nova.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    [DEFAULT]
    enabled_apis = osapi_compute,metadata
    rpc_backend = rabbit
    auth_strategy = keystone
    my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
    use_neutron = True
    firewall_driver = nova.virt.firewall.NoopFirewallDriver
    [oslo_messaging_rabbit]
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS
    [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
    [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
    
  3. egrep -c ‘(vmx|svm)’ /proc/cpuinfo如果为0,上述配置还需添加如下文件

    1
    2
    
    [libvirt]
    virt_type = qemu
    
  4. 启动服务

    1
    2
    
    systemctl enable libvirtd.service openstack-nova-compute.service
    systemctl start libvirtd.service openstack-nova-compute.service
    

验证

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ openstack compute service list

+----+--------------------+------------+----------+---------+-------+----------------------------+
| Id | Binary             | Host       | Zone     | Status  | State | Updated At                 |
+----+--------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-consoleauth   | controller | internal | enabled | up    | 2016-02-09T23:11:15.000000 |
|  2 | nova-scheduler     | controller | internal | enabled | up    | 2016-02-09T23:11:15.000000 |
|  3 | nova-conductor     | controller | internal | enabled | up    | 2016-02-09T23:11:16.000000 |
|  4 | nova-compute       | compute1   | nova     | enabled | up    | 2016-02-09T23:11:20.000000 |
+----+--------------------+------------+----------+---------+-------+----------------------------+

neutron安装

控制节点部分

  1. 创建数据库

    1
    2
    3
    4
    
    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';
    
  2. 创建用户

    1
    2
    3
    4
    5
    6
    
    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
    

第一网络

  1. 安装

    1
    2
    
    yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
    
    
  2. 编辑vi /etc/neutron/neutron.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    [database]
    connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
    [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
    [oslo_messaging_rabbit]
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS
    [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
    [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
    [oslo_concurrency]
    lock_path = /var/lib/neutron/tmp
    
  3. 编辑vi /etc/neutron/plugins/ml2/ml2_conf.ini

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [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
    
  4. 编辑vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

    1
    2
    3
    4
    5
    6
    7
    
    [linux_bridge]
    physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
    [vxlan]
    enable_vxlan = False
    [securitygroup]
    enable_security_group = True
    firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
    
  5. 编辑vi /etc/neutron/dhcp_agent.ini

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

第二网络

  1. 安装

    1
    2
    
    yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
    
    
  2. 编辑vi /etc/neutron/neutron.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    [database]
    connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
    [DEFAULT]
    core_plugin = ml2
    service_plugins = router
    allow_overlapping_ips = True
    rpc_backend = rabbit
    auth_strategy = keystone
    notify_nova_on_port_status_changes = True
    notify_nova_on_port_data_changes = True
    [oslo_messaging_rabbit]
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS
    [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
    [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
    [oslo_concurrency]
    lock_path = /var/lib/neutron/tmp
    
  3. 编辑vi /etc/neutron/plugins/ml2/ml2_conf.ini

    1
    2
    3
    4
    5
    6
    7
    8
    
    [ml2]
    type_drivers = flat,vlan,vxlan
    tenant_network_types = vxlan
    mechanism_drivers = linuxbridge,l2population
    extension_drivers = port_security
    flat_networks = provider
    vni_ranges = 1:1000
    enable_ipset = True
    
  4. 编辑vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [linux_bridge]
    physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
    [vxlan]
    enable_vxlan = True
    local_ip = OVERLAY_INTERFACE_IP_ADDRESS
    l2_population = True
    [securitygroup]
    enable_security_group = True
    firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
    
  5. 编辑vi /etc/neutron/l3_agent.ini

    1
    2
    3
    
    [DEFAULT]
    interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
    external_network_bridge =
    
  6. 编辑vi /etc/neutron/dhcp_agent.ini

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

计算节点部分

  1. 安装

    1
    2
    
    yum install openstack-neutron-linuxbridge ebtables ipset
    
    
  2. 编辑vi /etc/neutron/neutron.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    [DEFAULT]
    rpc_backend = rabbit
    auth_strategy = keystone
    [oslo_messaging_rabbit]
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS
    [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
    [oslo_concurrency]
    lock_path = /var/lib/neutron/tmp
    

网络类型1

  1. 编辑vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

    1
    2
    3
    4
    5
    6
    7
    
    [linux_bridge]
    physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
    [vxlan]
    enable_vxlan = False
    [securitygroup]
    enable_security_group = True
    firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
    

网络类型2

  1. 编辑vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [linux_bridge]
    physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
    [vxlan]
    enable_vxlan = True
    local_ip = OVERLAY_INTERFACE_IP_ADDRESS
    l2_population = True
    [securitygroup]
    enable_security_group = True
    firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
    
  2. 编辑vi /etc/nova/nova.conf 添加

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    [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
    

启动服务

1
2
3
systemctl restart openstack-nova-compute.service
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service

验证

1
neutron ext-list

cinder安装

控制节点

  1. 创建数据库

    1
    2
    3
    4
    
    mysql -u root -p
    CREATE DATABASE cinder;
    GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';
    GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS';
    
  2. 应用环境变量

    1
    
    source admin-openrc
    
  3. 创建用户

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    openstack user create --domain default --password-prompt cinder
    openstack role add --project service --user cinder admin
    openstack service create --name cinder --description "OpenStack Block Storage" volume
    openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
    openstack endpoint create --region RegionOne volume public http://controller:8776/v1/%\(tenant_id\)s
    openstack endpoint create --region RegionOne volume internal http://controller:8776/v1/%\(tenant_id\)s
    openstack endpoint create --region RegionOne volume admin http://controller:8776/v1/%\(tenant_id\)s
    openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(tenant_id\)s
    openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
    openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
    
  4. 安装

    1
    
    yum install openstack-cinder
    
  5. 编辑vi /etc/cinder/cinder.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    [database]
    connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
    [DEFAULT]
    rpc_backend = rabbit
    auth_strategy = keystone
    my_ip = 10.0.0.11
    [oslo_messaging_rabbit]
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS
    [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 = cinder
    password = CINDER_PASS
    [oslo_concurrency]
    lock_path = /var/lib/cinder/tmp
    
  6. 同步数据库

    1
    
    su -s /bin/sh -c "cinder-manage db sync" cinder
    
  7. 编辑vi /etc/nova/nova.conf

    1
    2
    
    [cinder]
    os_region_name = RegionOne
    
  8. 重启服务

    1
    2
    3
    
    systemctl restart openstack-nova-api.service
    systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
    systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
    

存储节点

  1. 安装

    1
    
    yum install lvm2
    
  2. 启动服务

    1
    2
    
    systemctl enable lvm2-lvmetad.service
    systemctl start lvm2-lvmetad.service
    
  3. 创建vg

    1
    2
    
    pvcreate /dev/sdb
    vgcreate cinder-volumes /dev/sdb
    
  4. 编辑vi /etc/lvm/lvm.conf

    1
    2
    3
    
    devices {
    ...
    filter = [ "a/sdb/", "r/.*/"]
    
  5. 安装

    1
    
    yum install openstack-cinder targetcli python-keystone
    
  6. 编辑vi /etc/cinder/cinder.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    [database]
    connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
    [DEFAULT]
    rpc_backend = rabbit
    auth_strategy = keystone
    my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
    volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
    volume_group = cinder-volumes
    iscsi_protocol = iscsi
    iscsi_helper = lioadm
    enabled_backends = lvm
    glance_api_servers = http://controller:9292
    [oslo_messaging_rabbit]
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS
    [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 = cinder
    password = CINDER_PASS
    [oslo_concurrency]
    lock_path = /var/lib/cinder/tmp
    
  7. 启动服务

    1
    2
    
    systemctl enable openstack-cinder-volume.service target.service
    systemctl start openstack-cinder-volume.service target.service
    

验证

1
2
3
4
5
6
7
8
cinder service-list

+------------------+-------------+------+---------+-------+----------------------------+-----------------+
| Binary           | Host        | Zone | Status  | State | Updated_at                 | Disabled Reason |
+------------------+-------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler | hst-os1ctl1 | nova | enabled | up    | 2016-09-30T02:27:41.000000 | -               |
| cinder-volume    | block@lvm   | nova | enabled | up    | 2016-09-30T02:27:46.000000 | -               |
+------------------+-------------+------+---------+-------+----------------------------+-----------------+

horizon安装

  1. 安装

    1
    
    yum install openstack-dashboard
    
  2. 编辑vi /etc/openstack-dashboard/local_settings

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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"
  1. 启动服务

    1
    
    systemctl restart httpd.service memcached.service