在centos7上装置openstack mitaka版别51CTO博客 - 牛牛娱乐

在centos7上装置openstack mitaka版别51CTO博客

2019年02月28日14时29分40秒 | 作者: 昊磊 | 标签: 装置,装备,创立 | 浏览: 1899

前语:openstack真是一个庞然大物,想要吃透还真不容易,所以在对openstack大约有了一个了解的时分,就应该是布置,尽管openstack的装置方法有rdo或许devstack等一键装置东西,可是最好浅尝辄止,有了大约的运用经历之后就应该是自始至终的装置一遍了,否则关于那些报错,以及毛病的处理一定是不够气定神闲的,因而,当你有了openstack的根本知道后,开端装置吧~


注:openstack的官方文档写得真的是,好的不要不要的,可是看英文总是感觉有点不溜,因而在官方文档的基础上写得这篇笔记。

参阅:http://docs.openstack.org/mitaka/install-guide-rdo/


首要应该是大约的规划,需求几个节点,挑选什么操作体系,网络怎样区分~

下面是我的大约规划

  节点数:2 (操控节点,核算节点)

  操作体系:CentOS Linux release 7.2.1511 (Core)

  网络装备:

    操控节点:  10.0.0.101 192.168.15.101  

    结算节点:  10.0.0.102 192.168.15.102


先决条件:

The following minimum requirements should support a proof-of-concept environment with core services and several CirrOS instances:

Controller Node: 1 processor, 4 GB memory, and 5 GB storage

Compute Node: 1 processor, 2 GB memory, and 10 GB storage

官方主张概念验证的最小硬件需求。

   操控节点 1 处理器,4 GB内存,5 GB硬盘

   核算节点 1 处理器,2 GB内存,10 GB硬盘

参阅:http://docs.openstack.org/mitaka/install-guide-rdo/environment.html


注:假如你是用手动一步一步的创立操作体系,装备网络,那么笔者就得好好的轻视你了~~研讨研讨vagrant吧,经过下面的装备文件你就能一条指令生成两个虚拟机,并装备好网络了,vagrant简易教程参阅: ># -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config|     config.vm.box = "centos7"     node_servers = { :control => [10.0.0.101,192.168.15.101],                      :compute => [10.0.0.102,192.168.15.102]                 }     node_servers.each do |node_name,node_ip|         config.vm.define node_name do |node_config|             node_config.vm.host_name = node_name.to_s             node_config.vm.network :private_network,ip: node_ip[0]             node_config.vm.network :private_network,ip: node_ip[1],virtualbox_inet: true         config.vm.boot_timeout = 300             node_config.vm.provider "virtualbox" do |v|                 v.memory = 4096                 v.cpus = 1             end         end     end end


经过vagrant up一条指令,稍等一会,两个热腾腾的虚拟机就出炉了,咱们的环境就OK了~~

环境如下

  操作体系:CentOS Linux release 7.2.1511 (Core)

  网络装备:

    操控节点:  10.0.0.101 192.168.15.101  

    结算节点:  10.0.0.102 192.168.15.102


留意:上面的config.vm.box = "centos7",首要需求有个centos7的box


在开端布置前,咱们先捋一捋openstack装置过程

首要是软件环境预备,咱们需求将一些通用的软件以及源库房等进行装备,根本如下

  NTP效劳器

      操控节点,其他节点

  openstack 装置包库房

  通用组件:

    SQL 数据库 => MariaDB

    NoSQL 数据库 > MongoDB(根本组件不需求,)

    音讯行列 > RabbitMQ

    Memcached


再就是openstack整个结构下的各个组件,根本组件如下

  认证效劳 => Keystone

  镜像效劳 => Glance

  核算资源效劳 => Nova

  网络资源效劳 => Neutron

  Dashboard => Horizon

  块存储效劳 => Cinder


其他存储效劳,如下

  文件同享效劳 => Manila

  目标存储效劳 => Swift


其他组件,如下

  编列效劳 => Heat

  遥测效劳 => Ceilometer

  数据库效劳 =>  Trove


环境预备

域名解析:

在各个节点修改hosts文件,参加以下装备

    10.0.0.101 controller

    10.0.0.102 compute


ntp时刻效劳器

操控节点

    1) 装置chrony软件包

    yum install chrony


    2) 修改装备文件 /etc/chrony.conf,添加以下内容,202.108.6.95可根据自己需求自行更改。

    server 202.108.6.95 iburst

    allow 10.0.0.0/24


   3)参加自发动,并发动

    # systemctl enable chronyd.service

    # systemctl start chronyd.service


其他节点

    1) 装置chrony软件包

    yum install chrony


    2) 修改装备文件 /etc/chrony.conf,添加以下内容

    server controller iburst

    allow 10.0.0.0/24


   3)参加自发动,并发动

    # systemctl enable chronyd.service

    # systemctl start chronyd.service


验证:

操控节点

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   


其他节点

# 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



openstack 装置包库房

  装置相应openstack版别yum源

yum install centos-release-openstack-mitaka

  体系更新

yum upgrade

  注:假如体系内核有更新,需求重启


装置openstackclient,openstack-selinux

yum install python-openstackclient
yum install openstack-selinux


注:假如报什么 Package does not match intended download,则yum clean all或许直接下载rpm包装置吧。

参阅下载地址:http://ftp.usf.edu/pub/centos/7/cloud/x86_64/openstack-kilo/common/


SQL数据库

  装置

yum install mariadb mariadb-server python2-PyMySQL

创立/etc/my.cnf.d/openstack.cnf装备文件,参加以下内容

#绑定IP
[mysqld]
bind-address = 10.0.0.11
#设置字符集等
default-storage-engine = innodb     .
innodb_file_per_table
collation-server = utf8_general_ci  
character-set-server = utf8


  装备发动项,发动等  

systemctl enable mariadb.service  
systemctl start mariadb.service


  数据库初始化,创立root暗码等,操作如下

mysql_secure_installation

    Enter current password for root (enter for none):[Enter]  

    Set root password? [Y/n] Y  

    New password: openstack  

    Re-enter new password:openstack  

    Remove anonymous users? [Y/n] Y  

    Disallow root login remotely? [Y/n] n  

    Remove test database and access to it? [Y/n] Y  

    Reload privilege tables now? [Y/n] Y


音讯行列rabbitmq

  装置

yum install rabbitmq-server

  装备发动项,发动

systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

  添加openstack用户

rabbitmqctl add_user openstack RABBIT_PASS

  设置openstack用户的权限,顺次分别为写,读,拜访

rabbitmqctl set_permissions openstack ".*"".*"".*"


NoSQL Mongodb

装置

yum install mongodb-server mongodb

装备/etc/mongod.conf装备文件

bind_ip = 10.0.0.11
#smallfile=true可选
smallfiles = true

装备发动项,发动

# systemctl enable mongod.service
# systemctl start mongod.service


Memcached

装置

# yum install memcached python-memcached

装备发动项,发动

# systemctl enable memcached.service
# systemctl start memcached.service


至此,openstack整个结构的软件环境根本搞定,下面就是各组件了。

装置各组件很有意思,除了keystone根本上是差不多的过程,仅有的差异就是创立时指定的姓名不同罢了,根本是一般以下过程。


1)装备数据库

create database xxx
GRANT ALL PRIVILEGES ON keystone.* TO xxxx@localhost \
  IDENTIFIED BY XXXX_DBPASS;
GRANT ALL PRIVILEGES ON keystone.* TO xxxx@% \
  IDENTIFIED BY XXXX_DBPASS;

2)装置

yum install xxx

3)装备文件

装备各项效劳的衔接,比方数据库,rabbitmq等

认证装备

特定装备

5)数据库同步

创立需求的表

4)参加发动项,发动

# systemctl enable openstack-xxx.service
# systemctl start openstack-xxxx.service

5)创立用户,service,endpoint等

openstack user create xxx
openstack service create xxx
openstack endpoint create xxx

6)验证效劳是否成功


注:装备文件的装备主张首要备份,然后为了省掉不必要的篇幅,在此阐明装备文件的修改方法,如下。

[DEFAULT]

... 

admin_token = ADMIN_TOKEN

上面的内容,指明在[DEFAULT]的阶段参加admin_token = ADMIN_TOKEN内容。


各组件装置

认证效劳 Keystone

装备数据库

$ 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


装备文件/etc/keystone/keystone.conf

admin令牌

[DEFAULT]
... 
admin_token = ADMIN_TOKEN

数据库

[database]
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

令牌生成方法

[token]
...
provider = fernet


注:上面的ADMIN_TOKEN可用openssl rand -hex 10指令生成,或许填入一串自定义的字符串


数据库同步

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


初始化fernet秘钥。

令牌的生成方法参阅:http://blog.csdn.net/miss_yang_cloud/article/details/49633719

# keystone-manage fernet_setup keystone-user keystone keystone-group keystone


装备Apache

修改/etc/httpd/conf/httpd.conf

更改一下内容

ServerName controller


创立/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>


装备发动项,发动

# systemctl enable httpd.service
# systemctl start httpd.service


创立service,API endpoint

为了防止不必要的篇幅,将admin_token,endpoint url装备到环境变量。

$ export OS_TOKEN=ADMIN_TOKEN
$ export OS_URL=http://controller:35357/v3
$ export OS_IDENTITY_API_VERSION=3


创立service

$ openstack service create \
  name keystone description "OpenStack Identity" identity


创立endpoint,顺次有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


创立域,项目,用户,人物 domain,project,user,role

创立domain

openstack domain create description "Default Domain" default

创立project

openstack user create domain default \
  password-prompt admin

创立admin role

openstack role create admin

将admin人物参加admin项目中

openstack role add project admin user admin admin

创立service项目

openstack project create domain default \
  description "Service Project" service

创立demo项目

openstack project create domain default \
  description "Demo Project" demo

创立demo用户

openstack user create domain default \
  password-prompt demo

创立user人物

openstack role create user

将user人物参加到demo项目中

openstack role add project demo user demo user


注:记住创立用户时的暗码。

验证admin用户

unset OS_TOKEN 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                                |

++-+

验证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

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                                |

++-+

假如有以上格局回来,验证经过


admin,demo用户的环境变量脚本

正常情况下,当然吧比如os-xxxx的参数放在环境变量中,为了更快的在admin,demo用户之间切换,创立环境脚本

创立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

创立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


在此验证admin

首要 . admin-openrc

$ openstack token issue

++-+

| Field      | Value                                                           |

++-+

| expires    | 2016-02-12T20:44:35.659723Z                                     |

| id         | gAAAAABWvjYj-Zjfg8WXFaQnUd1DMYTBVrKw4h3fIagi5NoEmh21U72SrRv2trl |

|            | JWFYhLi2_uPR31Igf6A8mH2Rw9kv_bxNo1jbLNPLGzW_u5FC7InFqx0yYtTwa1e |

|            | eq2b0f6-18KZyQhs7F3teAta143kJEWuNEYET-y7u29y0be1_64KYkM7E       |

| project_id | 343d245e850143a096806dfaefa9afdc                                |

| user_id    | ac3377633149401296f6c0d92d79dc16                                |

++-+



镜像效劳 Glance

装备数据库

$ mysql -u root -p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO glance@localhost \
  IDENTIFIED BY GLANCE_DBPASS;
GRANT ALL PRIVILEGES ON glance.* TO glance@% \
  IDENTIFIED BY GLANCE_DBPASS;


创立service,user,role

$ . admin-openrc
$ openstack user create domain default password-prompt glance
$ openstack role add project service user glance admin


创立endpoint,顺次有public,internal,admin

$ openstack service create name glance \
  description "OpenStack Image" p_w_picpath
$ openstack endpoint create region RegionOne \
  p_w_picpath public http://controller:9292
$ openstack endpoint create region RegionOne \
  p_w_picpath internal http://controller:9292
$ openstack endpoint create region RegionOne \
  p_w_picpath admin http://controller:9292


装置

# yum install openstack-glance


装备文件/etc/glance/glance-api.conf 

数据库

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

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 = glance
password = GLANCE_PASS
[paste_deploy]
...
flavor = keystone

glance存储

[glance_store]
...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/p_w_picpaths/


装备文件/etc/glance/glance-registry.conf

数据库

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

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 = 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

下载cirros镜像

$ wget
 
http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img


创立镜像

$ openstack p_w_picpath create "cirros" \
  file cirros-0.3.4-x86_64-disk.img \
  disk-format qcow2 container-format bare \
  public


假如履行以下指令,显现如下,则成功

$ openstack p_w_picpath list
+++
| ID                                   | Name   |
+++
| 38047887-61a7-41ea-9b49-27987d5e8bb9 | cirros |
+++


核算资源效劳 nova

操控节点

数据库

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


创立service,user,role

$ . 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


创立endpoint,顺次有public,internal,admin

$ 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

 装备文件/etc/nova/nova.conf 

启用的api

[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

rabbitmq行列

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

keystone认证

[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

绑定ip

[DEFAULT]
...
my_ip = 10.0.0.101


支撑neutron

[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

vnc装备

[vnc]
...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

glance装备

[glance]
...
api_servers = http://controller:9292

并发锁

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


同步数据库

# su -s /bin/sh -c "nova-manage api_db sync" nova
# su -s /bin/sh -c "nova-manage db sync" 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


核算节点

装置

# yum install openstack-nova-compute


装备文件/etc/nova/nova.conf 

rabbitmq行列

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

keystone认证

[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

绑定ip

[DEFAULT]
...
my_ip = 10.0.0.102

支撑neutron

[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

装备VNC

[vnc]
...
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

装备Glance

[glance]
...
api_servers = http://controller:9292

并发锁

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

虚拟化驱动

[libvirt]
...
virt_type = qemu


发动

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


验证

$ . admin-openrc
$ 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

操控节点

数据库

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



创立service,user,role

$ . 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


创立endpoint,顺次有public,internal,admin

$ 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


装备提供者网络 provider network,

参阅:http://docs.openstack.org/mitaka/install-guide-rdo/neutron-controller-install-option1.html


装置

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


装备文件/etc/neutron/neutron.conf 

数据库

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

启用二层插件,禁用其他插件

[DEFAULT]
...
core_plugin = ml2
service_plugins =

rabbitmq行列

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

keystone认证

[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

并发锁

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


装备文件/etc/neutron/plugins/ml2/ml2_conf.ini

驱动

[ml2]
...
type_drivers = flat,vlan

禁用个人(selfservice)网络

[ml2]
...
tenant_network_types =

启用linux网桥

[ml2]
...
mechanism_drivers = linuxbridge

端口装置扩展

[ml2]
...
extension_drivers = port_security

flat网络

[ml2_type_flat]
...
flat_networks = provider

启用ipset

[securitygroup]
...
enable_ipset = True

装备文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[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

注:PROVIDER_INTERFACE_NAME为网络接口,如eth 1之类的


装备文件/etc/neutron/dhcp_agent.ini

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
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 = METADATA_SECRET


装备文件/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


软衔接

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


重启nova-api

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
  
# systemctl enable neutron-l3-agent.service
# systemctl start neutron-l3-agent.service



核算节点

装置

yum install openstack-neutron-linuxbridge ebtables


装备文件 /etc/neutron/neutron.conf

rabbitmq行列

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

keystone认证

[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

并发锁

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


装备文件/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


重启nova-compute

# systemctl restart openstack-nova-compute.service


发动

# systemctl enable neutron-linuxbridge-agent.service
# systemctl start neutron-linuxbridge-agent.service



验证

$ . admin-openrc
$ neutron ext-list

+-+-+

| alias                     | name                                          |

+-+-+

| default-subnetpools       | Default Subnetpools                           |

| network-ip-availability   | Network IP Availability                       |

| network_availability_zone | Network Availability Zone                     |

| auto-allocated-topology   | Auto Allocated Topology Services              |

| ext-gw-mode               | Neutron L3 Configurable external gateway mode |

| binding                   | Port Binding                                  |

............



Dashboard horizon

注:必须在操控节点

装置

# yum install openstack-dashboard


装备文件/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,
    "p_w_picpath": 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_***: False,
    enable_fip_topology_check: False,
}
TIME_ZONE = "Asia/Shanghai"


发动

# systemctl restart httpd.service memcached.service


验证

拜访http://controller/dashboard



块存储 cinder

数据库

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


创立service,user,role

$ . admin-openrc
$ openstack user create domain default password-prompt cinder
$ openstack role add project service user cinder admin


留意,这儿创立两个service

$ openstack service create name cinder \
  description "OpenStack Block Storage" volume
$ openstack service create name cinderv2 \
  description "OpenStack Block Storage" volumev2


创立endpoint,顺次有public,internal,admin

$ 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


留意,每个service对应三个endpoint

$ 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


装置

操控节点

# yum install openstack-cinder


装备文件/etc/cinder/cinder.conf 

数据库

[database]
...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

rabbitmq行列

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

keystone认证

[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 = cinder
password = CINDER_PASS

绑定ip

[DEFAULT]
...
my_ip = 10.0.0.11

并行锁

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

同步数据库

# su -s /bin/sh -c "cinder-manage db sync" cinder


装备文件/etc/nova/nova.conf

[cinder]
os_region_name = RegionOne


重启nova-api

# 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


其他节点,可在核算节点加一块硬盘

注:需求别的一块硬盘

装置

# yum install lvm2
# systemctl enable lvm2-lvmetad.service
# systemctl start lvm2-lvmetad.service


创立逻辑卷

# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
# vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created


装备文件/etc/lvm/lvm.conf

devices {
...
filter = [ "a/sdb/", "r/.*/"]


注:新添加的硬盘一般为sdb,假如有sdc,sde等,则为filter = [ "a/sdb/", "a/sdb/","a/sdb/","r/.*/"],以此类推


装置

# yum install openstack-cinder targetcli


装备文件/etc/cinder/cinder.conf 

数据库

[database]
...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

rabbitmq行列

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

keystone认证

[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 = cinder
password = CINDER_PASS

绑定ip

[DEFAULT]
...
my_ip = 10.0.0.102


添加[lvm]及其内容

[lvm]
...
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm

后端启用lvm

[DEFAULT]
...
enabled_backends = lvm

装备Glance API

[DEFAULT]
...
glance_api_servers = http://controller:9292

并行锁

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


发动

# systemctl enable openstack-cinder-volume.service target.service
# systemctl start openstack-cinder-volume.service target.service


验证

$ . admin-openrc
$ cinder service-list

++++-+-++-+

|      Binary      |    Host    | Zone |  Status | State |         Updated_at         | Disabled Reason |

++++-+-++-+

| cinder-scheduler | controller | nova | enabled |   up  | 2014-10-18T01:30:54.000000 |       None      |

| cinder-volume    | block1@lvm | nova | enabled |   up  | 2014-10-18T01:30:57.000000 |       None      |


至此。根本上完成了,一切的装置,你能够在dashboard上首要用admin用户创立一个网络,然后用新建一个实例



跋文:尽管手动装置一整套真实有点夸大,这儿仍是用yum的呢~可是至少得这么手动来一次,其他时分就脚本或许装置东西吧,仿制粘贴都把我仿制的眼花了~

其他组件就另起一篇文章了,值得留意的是,官方文档才是最好的文档

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3
  • 4
  • 5

    MySQL EventITeye

    功用,句子,频率
  • 6

    MySQL EventITeye

    功用,句子,频率
  • 7
  • 8

    Sql疑难问题ITeye

    数学家,部分,薪酬
  • 9

    主键与外键ITeye

    主键,数据库,数据
  • 10

    Oracle学习笔记(三)ITeye

    用户,权限,命令