OpenStack - liberty CentOS 7

OpenStack私有云部署

 

 

Controller Node:       em1(10.6.17.11),em2()

 

Computer Node:         em1(10.6.17.12),em2()

 

Block Storage Node:    em1(10.6.17.13)

 

Object Storage Node:   em1(10.6.17.14)

 

 

 

 

 

1. Controller 修改网络配置

 

 

em1  =  

 

IPADDR=10.6.17.11

NETMASK=255.255.255.0

GATEWAY=10.6.17.1

 

 

em2  =   (HWADDR  与  UUID 不变)

 

BOOTPROTO=none

ONBOOT=yes

 

 

 

Computer 修改网络配置

 

 

em1  =  

 

IPADDR=10.6.17.12

NETMASK=255.255.255.0

GATEWAY=10.6.17.1

 

 

em2  =   (HWADDR  与  UUID 不变)

 

BOOTPROTO=none

ONBOOT=yes

 

 

 

 

2. 修改节点 主机名 方便后续查看

 

centos 7 使用如下命令修改:

 

hostnamectl --static set-hostname <主机名>

 

-----------------------------------------------------

 

3. 修改 host 文件  四台主机分别修改

 

vi /etc/hosts

 

10.6.17.11 controller

10.6.17.12 computer1

10.6.17.13 block1

10.6.17.14 object1

 

----------------------------------------------------

 

修改完毕,使用 ping -c 4 openstack.org   以及    controller   computer1   block1   object1 是否可以通

 

 

4. controller 安装ntp服务!

 

centos 7 使用 chrony 来做时间服务器.

 

[root@controller ~]#  yum install chrony

 

##修改配置文件

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

 

server cn.pool.ntp.org iburst

 

 

allow 10.6.17.0/24

 

 

 

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

[root@controller ~]# systemctl start chronyd.service

[root@controller ~]# systemctl stop firewalld.service

[root@controller ~]# systemctl disable firewalld.service

 

##其他节点 也分别安装 chrony

 

yum install chrony

 

 

##修改 配置文件

 

vi /etc/chrony.conf

 

server controller iburst

 

 

systemctl enable chronyd.service

systemctl start chronyd.service

systemctl stop firewalld.service

systemctl disable firewalld.service

 

 

##验证时间

 

 

[root@controller ~]# chronyc sources

210 Number of sources = 1

MS Name/IP address         Stratum Poll Reach LastRx Last sample

===============================================================================

^* news.neu.edu.cn               2   6    17    44   -795us[ -812us] +/-   31ms

 

 

 

 

[root@computer1 ~]# chronyc sources

210 Number of sources = 1

MS Name/IP address         Stratum Poll Reach LastRx Last sample

===============================================================================

^* controller                    3   6    17    35  -1007ns[ -300us] +/-   33ms

 

 

 

[root@block1 ~]# chronyc sources 

210 Number of sources = 1

MS Name/IP address         Stratum Poll Reach LastRx Last sample

===============================================================================

^* controller                    3   6    37     5     -8ns[ -385us] +/-   30ms

 

 

 

[root@object1 ~]# chronyc sources 

210 Number of sources = 1

MS Name/IP address         Stratum Poll Reach LastRx Last sample

===============================================================================

^* controller                    3   6    37     6   -707ns[ -548us] +/-   31ms

 

 

 

 

 

 

5. 添加 yum ELPL 源 以及 openstack-liberty 源

 

 

# yum install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

 

# yum install centos-release-openstack-liberty

 

 

# yum upgrade

 

# reboot

 

# yum install python-openstackclient

 

# yum install openstack-selinux

 

 

 

 

6. controller 安装 mariadb 数据库

 

使用 yum 安装,或者使用 源码安装

 

[root@controller ~]# yum install mariadb mariadb-server MySQL-python

 

 

my.conf 中添加如下配置 以支持 utf8 

 

[mysqld]

...

bind-address = 10.6.17.11

 

 

 

[mysqld]

...

default-storage-engine = innodb

innodb_file_per_table

collation-server = utf8_general_ci

init-connect = 'SET NAMES utf8'

character-set-server = utf8

 

 

 

# systemctl enable mariadb.service

# systemctl start mariadb.service

 

 

 

7. controller 安装 rabbitMQ 消息队列

 

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

 

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

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

 

## 添加 openstack 用户 ( RABBIT_PASS 替换为 自己的密码 )

 

[root@controller ~]# rabbitmqctl add_user openstack RABBIT_PASS

Creating user "openstack" ...

...done.

 

 

 

## 授权帐号

 

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

Setting permissions for user "openstack" in vhost "/" ...

...done.

 

 

 

二、 配置 Identity service 服务

 

## 创建 OpenStack Identity service 的 管理员 帐号

 

[root@controller ~]# mysql -u root -p

 

MariaDB [(none)]> CREATE DATABASE keystone;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \

    -> IDENTIFIED BY 'keystone';

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \

    -> IDENTIFIED BY 'keystone';

 

 

## 创建 管理员 token 

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

d22ea88344b5d4fa864f

 

 

## 安装openstack-keystone 组件

 

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

 

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

[root@controller ~]# systemctl start memcached.service

 

 

## 编辑 /etc/keystone/keystone.conf 文件 修改 token

 

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

 

#admin_token = ADMIN

 

修改为 刚才生成的 token

 

admin_token = d22ea88344b5d4fa864f

 

 

[database]

...

connection = mysql://keystone:keystone@controller/keystone

 

 

[memcache]

...

servers = localhost:11211

 

 

[token]

...

provider = uuid

driver = memcache

 

 

[revoke]

...

driver = sql

 

 

[DEFAULT]

...

verbose = True

 

 

## 同步Identity service 数据库

 

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

 

提示 No handlers could be found for logger "oslo_config.cfg"   但是查看keystone.log 日志,发现已经同步完成。

 

 

 

 

## 配置 httpd 文件

 

[root@controller ~]# vim /etc/httpd/conf/httpd.conf            修改如下:

 

 

ServerName controller

 

 

## 创建一个 wsgi-keystone.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

    <IfVersion >= 2.4>

      ErrorLogFormat "%{cu}t %M"

    </IfVersion>

    ErrorLog /var/log/httpd/keystone-error.log

    CustomLog /var/log/httpd/keystone-access.log combined

 

    <Directory /usr/bin>

        <IfVersion >= 2.4>

            Require all granted

        </IfVersion>

        <IfVersion < 2.4>

            Order allow,deny

            Allow from all

        </IfVersion>

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

    <IfVersion >= 2.4>

      ErrorLogFormat "%{cu}t %M"

    </IfVersion>

    ErrorLog /var/log/httpd/keystone-error.log

    CustomLog /var/log/httpd/keystone-access.log combined

 

    <Directory /usr/bin>

        <IfVersion >= 2.4>

            Require all granted

        </IfVersion>

        <IfVersion < 2.4>

            Order allow,deny

            Allow from all

        </IfVersion>

    </Directory>

</VirtualHost>

 

 

------------------------------------------------------------------------------------------------------------------------------------

 

## 启动 httpd 

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

[root@controller ~]# systemctl start httpd.service

 

 

 

 

## 配置 身份验证 token:              

 

[root@controller ~]# export OS_TOKEN=d22ea88344b5d4fa864f

[root@controller ~]# export OS_URL=http://controller:35357/v3

[root@controller ~]# export OS_IDENTITY_API_VERSION=3

 

 

## 创建API用户

 

[root@controller ~]# openstack service create \

> --name keystone --description "OpenStack Identity" identity

 

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Identity               |

| enabled     | True                             |

| id          | 528702ea888749d8b91cdf303cbec285 |

| name        | keystone                         |

| type        | identity                         |

+-------------+----------------------------------+

 

 

## 创建 API访问节点

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> identity public http://controller:5000/v2.0

 

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 6d1d13e2a74940338337e2faeb404291 |

| interface    | public                           |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 528702ea888749d8b91cdf303cbec285 |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://controller:5000/v2.0      |

+--------------+----------------------------------+

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> identity internal http://controller:5000/v2.0

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 1a6e4df9f7fb444f98da5274c4b45916 |

| interface    | internal                         |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 528702ea888749d8b91cdf303cbec285 |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://controller:5000/v2.0      |

+--------------+----------------------------------+

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> identity admin http://controller:35357/v2.0

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 08e839319e5143229abc893e413e0dcc |

| interface    | admin                            |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 528702ea888749d8b91cdf303cbec285 |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://controller:35357/v2.0     |

+--------------+----------------------------------+

 

 

## 创建 admin 项目

 

[root@controller ~]# openstack project create --domain default \

> --description "Admin Project" admin

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Admin Project                    |

| domain_id   | default                          |

| enabled     | True                             |

| id          | 0d1a69b17e444cb3b4884529b6bdb372 |

| is_domain   | False                            |

| name        | admin                            |

| parent_id   | None                             |

+-------------+----------------------------------+

 

 

## 创建 管理员 用户

 

[root@controller ~]# openstack user create --domain default \

> --password-prompt admin

User Password:

Repeat User Password:

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | default                          |

| enabled   | True                             |

| id        | 28c24be804a649cb825a8349ca3e6ce3 |

| name      | admin                            |

+-----------+----------------------------------+

 

 

## 创建 管理员 role

 

[root@controller ~]# openstack role create admin

+-------+----------------------------------+

| Field | Value                            |

+-------+----------------------------------+

| id    | c378be38e9574421a54d90e62ee2d0aa |

| name  | admin                            |

+-------+----------------------------------+

 

 

## 关联 管理员用户 到 项目与role 中

 

[root@controller ~]# openstack role add --project admin --user admin admin

 

 

 

## 创建 service 项目

 

[root@controller ~]# openstack project create --domain default \

> --description "Service Project" service

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Service Project                  |

| domain_id   | default                          |

| enabled     | True                             |

| id          | 90b44e1c63104b92a1fadccc2258bbd1 |

| is_domain   | False                            |

| name        | service                          |

| parent_id   | None                             |

+-------------+----------------------------------+

 

 

 

 

 

## 验证账户

 

编辑 /usr/share/keystone/keystone-dist-paste.ini 文件

 

[root@controller ~]# vim /usr/share/keystone/keystone-dist-paste.ini

 

 

[pipeline:public_api]

 

[pipeline:admin_api]

 

[pipeline:api_v3]

 

中的

 

admin_token_auth   删除

 

 

 

## 清除环境变量

[root@controller ~]# unset OS_TOKEN OS_URL

 

 

## 以管理员身份 创建一个 token

 

[root@controller ~]# openstack --os-auth-url http://controller:35357/v3 \

> --os-project-domain-id default --os-user-domain-id default \

> --os-project-name admin --os-username admin --os-auth-type password \

> token issue

Password: 

+------------+----------------------------------+

| Field      | Value                            |

+------------+----------------------------------+

| expires    | 2015-12-03T04:03:34.754196Z      |

| id         | cba3fce8d9dc4bc7956f3b4aa566051c |

| project_id | 0d1a69b17e444cb3b4884529b6bdb372 |

| user_id    | 28c24be804a649cb825a8349ca3e6ce3 |

+------------+----------------------------------+

 

 

 

## 创建完成,表示验证通过

 

 

 

## 创建一个 客户端 脚本,方便操作

 

[root@controller ~]# vim admin-openrc.sh

 

添加如下环境变量:

 

 

export OS_PROJECT_DOMAIN_ID=default

export OS_USER_DOMAIN_ID=default

export OS_PROJECT_NAME=admin

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

export OS_AUTH_URL=http://controller:35357/v3

export OS_IDENTITY_API_VERSION=3

 

 

 

## 导入 脚本,并测试

 

[root@controller ~]# source admin-openrc.sh

 

[root@controller ~]# openstack token issue

+------------+----------------------------------+

| Field      | Value                            |

+------------+----------------------------------+

| expires    | 2015-12-03T04:07:26.391998Z      |

| id         | 24a890cc24b443dc9658a34aba8462d8 |

| project_id | 0d1a69b17e444cb3b4884529b6bdb372 |

| user_id    | 28c24be804a649cb825a8349ca3e6ce3 |

+------------+----------------------------------+

 

 

## 验证通过

 

 

 

三、安装配置 image server 

 

## 创建并导入数据库

 

[root@controller ~]# mysql -u root -p

Enter password: 

 

MariaDB [(none)]> CREATE DATABASE glance;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \

    -> IDENTIFIED BY 'glance'; 

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \

    -> IDENTIFIED BY 'glance';

 

 

## 导入 脚本 创建用户

 

[root@controller ~]# source admin-openrc.sh

 

 

## 创建 glance  用户

 

[root@controller ~]# openstack user create --domain default --password-prompt glance

User Password:

Repeat User Password:

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | default                          |

| enabled   | True                             |

| id        | 19121c440d77403e8b66f197381c68e9 |

| name      | glance                           |

+-----------+----------------------------------+

 

 

 

## 关联到 项目 与 admin 用户

 

[root@controller ~]# openstack role add --project service --user glance admin

 

 

 

## 创建 glance 服务

 

[root@controller ~]# openstack service create --name glance \

> --description "OpenStack Image service" image

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Image service          |

| enabled     | True                             |

| id          | bb8f3d6386cb423eb682147cf2b5ab92 |

| name        | glance                           |

| type        | image                            |

+-------------+----------------------------------+

 

 

## 创建 image API

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> image public http://controller:9292

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | ac858877305542679883df3afb974a95 |

| interface    | public                           |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | bb8f3d6386cb423eb682147cf2b5ab92 |

| service_name | glance                           |

| service_type | image                            |

| url          | http://controller:9292           |

+--------------+----------------------------------+

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> image internal http://controller:9292

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 290dc30efb6b45c9bb654252aaf8b878 |

| interface    | internal                         |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | bb8f3d6386cb423eb682147cf2b5ab92 |

| service_name | glance                           |

| service_type | image                            |

| url          | http://controller:9292           |

+--------------+----------------------------------+

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> image admin http://controller:9292

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 04fac23ce557445d92d77ca53cf4c620 |

| interface    | admin                            |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | bb8f3d6386cb423eb682147cf2b5ab92 |

| service_name | glance                           |

| service_type | image                            |

| url          | http://controller:9292           |

+--------------+----------------------------------+

 

 

 

## 安装配置 glance 相关软件

 

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

 

 

 

## 编辑 /etc/glance/glance-api.conf 配置文件

 

[root@controller ~]# vim /etc/glance/glance-api.conf

 

[database]

...

connection = mysql://glance:glance@controller/glance

 

 

[keystone_authtoken]

...

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = glance

password = glance

 

[paste_deploy]

...

flavor = keystone

 

 

[glance_store]

...

default_store = file

filesystem_store_datadir = /opt/glance/images/

 

 

[DEFAULT]

...

notification_driver = noop

 

 

[DEFAULT]

...

verbose = True

 

 

 

## 编辑 /etc/glance/glance-registry.conf 配置文件

 

[root@controller ~]# vim /etc/glance/glance-registry.conf

 

 

[database]

...

connection = mysql://glance:glance@controller/glance

 

 

[keystone_authtoken]

...

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = glance

password = glance

 

 

[paste_deploy]

...

flavor = keystone

 

 

[DEFAULT]

...

notification_driver = noop

 

 

[DEFAULT]

...

verbose = True

 

 

## 同步 glance 数据库 

 

[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance

 

 

 

## 启动服务

 

[root@controller ~]# systemctl enable openstack-glance-api.service \

> openstack-glance-registry.service

 

[root@controller ~]# systemctl start openstack-glance-api.service \

> openstack-glance-registry.service

 

 

 

## 验证 glance 服务

 

添加一个环境变量到 脚本中

 

[root@controller ~]# echo "export OS_IMAGE_API_VERSION=2" \

> | tee -a admin-openrc.sh

 

[root@controller ~]# source admin-openrc.sh 

 

 

## 下载一个测试镜像

 

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

 

 

## 上传镜像到 服务中

[root@controller ~]# glance image-create --name "cirros" \

> --file cirros-0.3.4-x86_64-disk.img \

> --disk-format qcow2 --container-format bare \

> --visibility public --progress

 

[=============================>] 100%

+------------------+--------------------------------------+

| Property         | Value                                |

+------------------+--------------------------------------+

| checksum         | ee1eca47dc88f4879d8a229cc70a07c6     |

| container_format | bare                                 |

| created_at       | 2015-12-03T05:05:33Z                 |

| disk_format      | qcow2                                |

| id               | 3846ec1a-ad85-4b4d-88d9-17f2374ed41d |

| min_disk         | 0                                    |

| min_ram          | 0                                    |

| name             | cirros                               |

| owner            | 0d1a69b17e444cb3b4884529b6bdb372     |

| protected        | False                                |

| size             | 13287936                             |

| status           | active                               |

| tags             | []                                   |

| updated_at       | 2015-12-03T05:05:33Z                 |

| virtual_size     | None                                 |

| visibility       | public                               |

+------------------+--------------------------------------+

 

 

[root@controller ~]# glance image-list

+--------------------------------------+--------+

| ID                                   | Name   |

+--------------------------------------+--------+

| 3846ec1a-ad85-4b4d-88d9-17f2374ed41d | cirros |

+--------------------------------------+--------+

 

 

 

 

 

四、安装配置 Computer server 

 

 

## 添加数据库 与 用户

 

[root@controller ~]# mysql -u root -p

Enter password: 

 

MariaDB [(none)]> CREATE DATABASE nova;

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \

    -> IDENTIFIED BY 'nova'; 

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \

    -> IDENTIFIED BY 'nova'; 

 

 

## 创建 nova 用户

 

[root@controller ~]# source admin-openrc.sh

 

[root@controller ~]# openstack user create --domain default --password-prompt nova

User Password:

Repeat User Password:

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | default                          |

| enabled   | True                             |

| id        | 05dfb9b8091b4d708455281540a030d1 |

| name      | nova                             |

+-----------+----------------------------------+

 

## 关联 到 role

 

[root@controller ~]# openstack role add --project service --user nova admin

 

 

## 创建 nova service 

[root@controller ~]# openstack service create --name nova \

> --description "OpenStack Compute" compute

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Compute                |

| enabled     | True                             |

| id          | 1f73377bd0bc4f208ca6c904a71e6279 |

| name        | nova                             |

| type        | compute                          |

+-------------+----------------------------------+

 

 

## 创建 Compute service API 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> compute public http://controller:8774/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | b545b7bd81ed4b64b559b905dd3b4532        |

| interface    | public                                  |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 1f73377bd0bc4f208ca6c904a71e6279        |

| service_name | nova                                    |

| service_type | compute                                 |

| url          | http://controller:8774/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> compute internal http://controller:8774/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 5b23e9f26e094f8f99a4416a085b6fc8        |

| interface    | internal                                |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 1f73377bd0bc4f208ca6c904a71e6279        |

| service_name | nova                                    |

| service_type | compute                                 |

| url          | http://controller:8774/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

 

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> compute admin http://controller:8774/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 77638cfde23049cd9bf1c06347385562        |

| interface    | admin                                   |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 1f73377bd0bc4f208ca6c904a71e6279        |

| service_name | nova                                    |

| service_type | compute                                 |

| url          | http://controller:8774/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

 

 

 

##  controller 安装软件

 

[root@computer1 ~]# yum install openstack-nova-api openstack-nova-cert \

> openstack-nova-conductor openstack-nova-console \

> openstack-nova-novncproxy openstack-nova-scheduler \

> python-novaclient

 

 

## 编辑 /etc/nova/nova.conf  配置文件

 

 

[database]

...

connection = mysql://nova:nova@controller/nova

 

 

[DEFAULT]

...

rpc_backend = rabbit

my_ip = 10.6.17.11

auth_strategy = keystone

network_api_class = nova.network.neutronv2.api.API

security_group_api = neutron

linuxnet_interface_driver = nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver

firewall_driver = nova.virt.firewall.NoopFirewallDriver

enabled_apis=osapi_compute,metadata

verbose = True

 

 

[oslo_messaging_rabbit]

...

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = openstack

 

 

[keystone_authtoken]

...

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = nova

password = nova

 

 

 

[glance]

...

host = controller

 

 

 

[oslo_concurrency]

...

lock_path = /var/lib/nova/tmp

 

 

 

 

 

## 同步数据库

 

su -s /bin/sh -c "nova-manage db sync" nova

 

 

## 启动服务

 

[root@controller ~]# systemctl enable openstack-nova-api.service \

> openstack-nova-cert.service openstack-nova-consoleauth.service \

> openstack-nova-scheduler.service openstack-nova-conductor.service \

> openstack-nova-novncproxy.service

 

 

[root@controller ~]# systemctl start openstack-nova-api.service \

> openstack-nova-cert.service openstack-nova-consoleauth.service \

> openstack-nova-scheduler.service openstack-nova-conductor.service \

> openstack-nova-novncproxy.service

 

 

 

 

## 安装配置 计算机节点 Compute 节点

 

yum install openstack-nova-compute sysfsutils

 

 

## 编辑 /etc/nova/nova.conf 配置文件

 

 

 

[DEFAULT]

...

rpc_backend = rabbit

auth_strategy = keystone

my_ip = 10.6.17.12

network_api_class = nova.network.neutronv2.api.API

security_group_api = neutron

linuxnet_interface_driver = nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver

firewall_driver = nova.virt.firewall.NoopFirewallDriver

verbose = True

 

 

[oslo_messaging_rabbit]

...

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = openstack

 

 

[keystone_authtoken]

...

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = nova

password = nova

 

 

[glance]

...

host = controller

 

 

[oslo_concurrency]

...

lock_path = /var/lib/nova/tmp

 

 

 

## 查看否支持 虚拟化 大于0 表示支持, 大于0 不需要添加配置支持

 

[root@computer1 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo

8

 

 

## 如果 硬件不支持虚拟化 则添加虚拟化支持

 

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

 

[libvirt]

...

virt_type = qemu

 

 

 

 

## 启动服务

 

[root@computer1 ~]# systemctl enable libvirtd.service openstack-nova-compute.service

[root@computer1 ~]# systemctl start libvirtd.service openstack-nova-compute.service

 

 

 

## 验证 服务 

 

[root@controller ~]# nova service-list

+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+

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

+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+

| 1  | nova-consoleauth | controller | internal | enabled | up    | 2015-12-03T07:06:27.000000 | -               |

| 2  | nova-conductor   | controller | internal | enabled | up    | 2015-12-03T07:06:27.000000 | -               |

| 5  | nova-cert        | controller | internal | enabled | up    | 2015-12-03T07:06:27.000000 | -               |

| 6  | nova-scheduler   | controller | internal | enabled | up    | 2015-12-03T07:06:27.000000 | -               |

| 7  | nova-compute     | computer1  | nova     | enabled | up    | 2015-12-03T07:06:31.000000 | -               |

+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+

 

 

[root@controller ~]# nova endpoints

 

+-----------+------------------------------------------------------------+

| nova      | Value                                                      |

+-----------+------------------------------------------------------------+

| id        | 5b23e9f26e094f8f99a4416a085b6fc8                           |

| interface | internal                                                   |

| region    | RegionOne                                                  |

| region_id | RegionOne                                                  |

| url       | http://controller:8774/v2/0d1a69b17e444cb3b4884529b6bdb372 |

+-----------+------------------------------------------------------------+

+-----------+------------------------------------------------------------+

| nova      | Value                                                      |

+-----------+------------------------------------------------------------+

| id        | 77638cfde23049cd9bf1c06347385562                           |

| interface | admin                                                      |

| region    | RegionOne                                                  |

| region_id | RegionOne                                                  |

| url       | http://controller:8774/v2/0d1a69b17e444cb3b4884529b6bdb372 |

+-----------+------------------------------------------------------------+

+-----------+------------------------------------------------------------+

| nova      | Value                                                      |

+-----------+------------------------------------------------------------+

| id        | b545b7bd81ed4b64b559b905dd3b4532                           |

| interface | public                                                     |

| region    | RegionOne                                                  |

| region_id | RegionOne                                                  |

| url       | http://controller:8774/v2/0d1a69b17e444cb3b4884529b6bdb372 |

+-----------+------------------------------------------------------------+

 

 

+-----------+----------------------------------+

| keystone  | Value                            |

+-----------+----------------------------------+

| id        | 08e839319e5143229abc893e413e0dcc |

| interface | admin                            |

| region    | RegionOne                        |

| region_id | RegionOne                        |

| url       | http://controller:35357/v2.0     |

+-----------+----------------------------------+

+-----------+----------------------------------+

| keystone  | Value                            |

+-----------+----------------------------------+

| id        | 1a6e4df9f7fb444f98da5274c4b45916 |

| interface | internal                         |

| region    | RegionOne                        |

| region_id | RegionOne                        |

| url       | http://controller:5000/v2.0      |

+-----------+----------------------------------+

+-----------+----------------------------------+

| keystone  | Value                            |

+-----------+----------------------------------+

| id        | 6d1d13e2a74940338337e2faeb404291 |

| interface | public                           |

| region    | RegionOne                        |

| region_id | RegionOne                        |

| url       | http://controller:5000/v2.0      |

+-----------+----------------------------------+

 

 

+-----------+----------------------------------+

| glance    | Value                            |

+-----------+----------------------------------+

| id        | 04fac23ce557445d92d77ca53cf4c620 |

| interface | admin                            |

| region    | RegionOne                        |

| region_id | RegionOne                        |

| url       | http://controller:9292           |

+-----------+----------------------------------+

+-----------+----------------------------------+

| glance    | Value                            |

+-----------+----------------------------------+

| id        | 290dc30efb6b45c9bb654252aaf8b878 |

| interface | internal                         |

| region    | RegionOne                        |

| region_id | RegionOne                        |

| url       | http://controller:9292           |

+-----------+----------------------------------+

+-----------+----------------------------------+

| glance    | Value                            |

+-----------+----------------------------------+

| id        | ac858877305542679883df3afb974a95 |

| interface | public                           |

| region    | RegionOne                        |

| region_id | RegionOne                        |

| url       | http://controller:9292           |

+-----------+----------------------------------+

 

 

[root@controller ~]# nova image-list

+--------------------------------------+--------+--------+--------+

| ID                                   | Name   | Status | Server |

+--------------------------------------+--------+--------+--------+

| 3846ec1a-ad85-4b4d-88d9-17f2374ed41d | cirros | ACTIVE |        |

+--------------------------------------+--------+--------+--------+

 

 

 

 

 

五、安装配置 Network server 

 

## 添加数据库、用户

 

[root@controller ~]# mysql -u root -p

Enter password: 

 

MariaDB [(none)]> CREATE DATABASE neutron;

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \

    -> IDENTIFIED BY 'neutron'; 

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \

    -> IDENTIFIED BY 'neutron';

 

 

## 添加 openstack 用户

 

[root@controller ~]# openstack user create --domain default --password-prompt neutron

User Password:

Repeat User Password:

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | default                          |

| enabled   | True                             |

| id        | 04b2950e0b96451494a4391c5c7bcd2e |

| name      | neutron                          |

+-----------+----------------------------------+

 

 

[root@controller ~]# openstack role add --project service --user neutron admin

 

 

 

## 添加 neutron service

 

[root@controller ~]# openstack service create --name neutron \

> --description "OpenStack Networking" network

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Networking             |

| enabled     | True                             |

| id          | b9ca3cbea4df4966bbfff153e676d404 |

| name        | neutron                          |

| type        | network                          |

+-------------+----------------------------------+

 

 

## 添加 network server API

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> network public http://controller:9696

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | e741a15b8f4f424d8ac605083d079911 |

| interface    | public                           |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | b9ca3cbea4df4966bbfff153e676d404 |

| service_name | neutron                          |

| service_type | network                          |

| url          | http://controller:9696           |

+--------------+----------------------------------+

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> network internal http://controller:9696

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | ba9df6bd296f4f42bd24588b292ed54b |

| interface    | internal                         |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | b9ca3cbea4df4966bbfff153e676d404 |

| service_name | neutron                          |

| service_type | network                          |

| url          | http://controller:9696           |

+--------------+----------------------------------+

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> network admin http://controller:9696

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | ba86430058a243da8c50ab9d42178eab |

| interface    | admin                            |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | b9ca3cbea4df4966bbfff153e676d404 |

| service_name | neutron                          |

| service_type | network                          |

| url          | http://controller:9696           |

+--------------+----------------------------------+

 

 

## 安装配置 network 软件  ( 我这里选择的是 Networking Option 1: Provider networks  这种网络方式 )

 

 

[root@controller ~]# yum install openstack-neutron openstack-neutron-ml2 \

> openstack-neutron-linuxbridge python-neutronclient ebtables ipset

 

 

## 修改配置文件 /etc/neutron/neutron.conf 

 

 

[database]

...

connection = mysql://neutron:neutron@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

nova_url = http://controller:8774/v2

verbose = True

 

 

[oslo_messaging_rabbit]

...

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = openstack

 

 

 

## 检查 [keystone_authtoken] 下面配置,注释掉其他所有的选项只使用下面

 

[keystone_authtoken]

...

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = neutron

password = neutron

 

 

 

 

[nova]

...

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

region_name = RegionOne

project_name = service

username = nova

password = nova

 

 

 

[oslo_concurrency]

...

lock_path = /var/lib/neutron/tmp

 

 

 

##  配置 Layer 2 (ML2) 插件

 

编辑 /etc/neutron/plugins/ml2/ml2_conf.ini  配置文件

 

[root@controller ~]# vim /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 = public

 

 

 

[securitygroup]

...

enable_ipset = True

 

 

 

## 配置Linux bridge

 

编辑 /etc/neutron/plugins/ml2/linuxbridge_agent.ini  配置文件

 

 

 

[linux_bridge]

physical_interface_mappings = public:em2

 

 

 

[vxlan]

enable_vxlan = False

 

 

 

[agent]

...

prevent_arp_spoofing = True

 

 

 

[securitygroup]

...

enable_security_group = True

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

 

 

 

## 配置 DHCP 服务

 

编辑 /etc/neutron/dhcp_agent.ini 配置文件

 

 

[DEFAULT]

...

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata = True

verbose = True

 

 

 

## 配置 metadata 服务

 

编辑 /etc/neutron/metadata_agent.ini 配置文件  注释掉 [DEFAULT] 下面的选项,添加如下选项

[metadata_proxy_shared_secret = METADATA_SECRET   # METADATA_SECRET 替换为自己的密码 ]

 

[DEFAULT]

...

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_region = RegionOne

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = neutron

password = neutron

nova_metadata_ip = controller

metadata_proxy_shared_secret = metadata

verbose = True

 

 

 

## 配置 Networking 服务

 

编辑 /etc/nova/nova.conf 配置文件

[metadata_proxy_shared_secret = METADATA_SECRET   # METADATA_SECRET 替换为自己的密码 ]

 

 

[neutron]

...

url = http://controller:9696

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

region_name = RegionOne

project_name = service

username = neutron

password = neutron

 

service_metadata_proxy = True

metadata_proxy_shared_secret = metadata

 

 

 

## 创建一些链接

 

[root@controller ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

 

 

## 同步数据库

 

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

 

 

INFO  [alembic.runtime.migration] Context impl MySQLImpl.

........

  OK

  

 

  

## 重启 api 服务

 

[root@controller ~]# systemctl restart openstack-nova-api.service

 

 

## 启动 network 服务

 

 

[root@controller ~]# systemctl enable neutron-server.service \

> neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

> neutron-metadata-agent.service

 

 

[root@controller ~]# systemctl start neutron-server.service \

> neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

> neutron-metadata-agent.service

 

 

 

## 配置 Compute 节点的 network 服务

 

## 安装 network 软件

 

[root@computer1 ~]# yum install openstack-neutron openstack-neutron-linuxbridge ebtables ipset

 

 

 

## 编辑 /etc/neutron/neutron.conf 配置文件

 

注释掉 [database] 部分的所有选项,计算节点 不连接 数据库

 

 

[DEFAULT]

...

rpc_backend = rabbit

auth_strategy = keystone

verbose = True

 

 

[oslo_messaging_rabbit]

...

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = openstack

 

 

 

[keystone_authtoken]

...

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = neutron

password = neutron

 

 

注释掉 [keystone_authtoken]  其他部分的选项。

 

 

[oslo_concurrency]

...

lock_path = /var/lib/neutron/tmp

 

 

 

##  安装 network 服务

 

## 配置 Linux bridge 服务

 

编辑  /etc/neutron/plugins/ml2/linuxbridge_agent.ini 配置文件

 

 

[linux_bridge]

physical_interface_mappings = public:em2

 

 

[vxlan]

enable_vxlan = False

 

 

[agent]

...

prevent_arp_spoofing = True

 

 

[securitygroup]

...

enable_security_group = True

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

 

 

 

## 配置 Networking 服务

 

## 编辑 /etc/nova/nova.conf 配置文件

 

 

[neutron]

...

url = http://controller:9696

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

region_name = RegionOne

project_name = service

username = neutron

password = neutron

 

 

 

 

## 配置链接, 并启动服务

 

[root@computer1 ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

[root@computer1 ~]# systemctl restart openstack-nova-compute.service

[root@computer1 ~]# systemctl enable neutron-linuxbridge-agent.service

[root@computer1 ~]# systemctl start neutron-linuxbridge-agent.service

 

 

 

## 最后 验证服务

 

[root@controller ~]# source admin-openrc.sh

 

[root@controller ~]# neutron ext-list

+-----------------------+--------------------------+

| alias                 | name                     |

+-----------------------+--------------------------+

| flavors               | Neutron Service Flavors  |

| security-group        | security-group           |

| dns-integration       | DNS Integration          |

| net-mtu               | Network MTU              |

| port-security         | Port Security            |

| binding               | Port Binding             |

| provider              | Provider Network         |

| agent                 | agent                    |

| quotas                | Quota management support |

| subnet_allocation     | Subnet Allocation        |

| dhcp_agent_scheduler  | DHCP Agent Scheduler     |

| rbac-policies         | RBAC Policies            |

| external-net          | Neutron external network |

| multi-provider        | Multi Provider Network   |

| allowed-address-pairs | Allowed Address Pairs    |

| extra_dhcp_opt        | Neutron Extra DHCP opts  |

+-----------------------+--------------------------+

 

 

[root@controller ~]# neutron agent-list

+--------------------------------------+--------------------+------------+-------+----------------+---------------------------+

| id                                   | agent_type         | host       | alive | admin_state_up | binary                    |

+--------------------------------------+--------------------+------------+-------+----------------+---------------------------+

| 3083cb45-f248-4de5-828e-38d9bc961814 | Linux bridge agent | controller | :-)   | True           | neutron-linuxbridge-agent |

| 3b2564c7-e797-4e20-a257-166ade425655 | Linux bridge agent | computer1  | :-)   | True           | neutron-linuxbridge-agent |

| b61a8667-416d-4ed5-b14d-87d568bab59f | Metadata agent     | controller | :-)   | True           | neutron-metadata-agent    |

| f87d6cc0-4277-4259-96ed-638294503236 | DHCP agent         | controller | :-)   | True           | neutron-dhcp-agent        |

+--------------------------------------+--------------------+------------+-------+----------------+---------------------------+

 

 

 

 

 

六、安装配置 dashboard

 

[root@controller ~]# yum install openstack-dashboard -y

 

## 编辑/etc/openstack-dashboard/local_settings 配置文件

 

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

 

OPENSTACK_HOST = "controller"

 

ALLOWED_HOSTS = ['*', ]

 

CACHES = {

    'default': {

         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',

         'LOCATION': '127.0.0.1:11211',

    }

}

 

 

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

 

TIME_ZONE = "Asia/Shanghai"

 

 

## 启动服务

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

 

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

 

 

## 验证服务

 

浏览器 访问 http://controller/dashboard 

 

帐号密码为 admin 

 

 

 

 

七、 安装配置 Block Storage service

 

控制端

 

## 添加数据库

 

[root@controller ~]# mysql -u root -p

Enter password: 

 

MariaDB [(none)]> CREATE DATABASE cinder;

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \

    -> IDENTIFIED BY 'cinder'; 

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \

    -> IDENTIFIED BY 'cinder';

 

 

## 添加 openstack  cinder用户

 

[root@controller ~]# source admin-openrc.sh

 

[root@controller ~]# openstack user create --domain default --password-prompt cinder

User Password:

Repeat User Password:

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | default                          |

| enabled   | True                             |

| id        | 212ced82b0a844f099a80a712786740c |

| name      | cinder                           |

+-----------+----------------------------------+

 

 

[root@controller ~]# openstack role add --project service --user cinder admin

 

 

## 添加 cinder v2 service 服务

 

[root@controller ~]# openstack service create --name cinder \

> --description "OpenStack Block Storage" volume

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Block Storage          |

| enabled     | True                             |

| id          | 6af1b2a1843f42058b03368960ae6b09 |

| name        | cinder                           |

| type        | volume                           |

+-------------+----------------------------------+

 

 

[root@controller ~]# openstack service create --name cinderv2 \

> --description "OpenStack Block Storage" volumev2

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Block Storage          |

| enabled     | True                             |

| id          | 3e42f0d7868745579ce658d88eef4c67 |

| name        | cinderv2                         |

| type        | volumev2                         |

+-------------+----------------------------------+

 

 

## 添加 Block Storage service API

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> volume public http://controller:8776/v1/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 14ee6bd40f08489bb314e5cc5fa39a80        |

| interface    | public                                  |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 6af1b2a1843f42058b03368960ae6b09        |

| service_name | cinder                                  |

| service_type | volume                                  |

| url          | http://controller:8776/v1/%(tenant_id)s |

+--------------+-----------------------------------------+

 

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> volume internal http://controller:8776/v1/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 5895f13f971a4ee390ef104ddbe7422b        |

| interface    | internal                                |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 6af1b2a1843f42058b03368960ae6b09        |

| service_name | cinder                                  |

| service_type | volume                                  |

| url          | http://controller:8776/v1/%(tenant_id)s |

+--------------+-----------------------------------------+

 

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> volume admin http://controller:8776/v1/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | e4993535c6504f95862cab4f7ab7cccb        |

| interface    | admin                                   |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 6af1b2a1843f42058b03368960ae6b09        |

| service_name | cinder                                  |

| service_type | volume                                  |

| url          | http://controller:8776/v1/%(tenant_id)s |

+--------------+-----------------------------------------+

 

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> volumev2 public http://controller:8776/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 8696e7142c17488e973c653713c14379        |

| interface    | public                                  |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 3e42f0d7868745579ce658d88eef4c67        |

| service_name | cinderv2                                |

| service_type | volumev2                                |

| url          | http://controller:8776/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

 

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> volumev2 internal http://controller:8776/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | da6b9e902a4d413dadd951ec751b1082        |

| interface    | internal                                |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 3e42f0d7868745579ce658d88eef4c67        |

| service_name | cinderv2                                |

| service_type | volumev2                                |

| url          | http://controller:8776/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

 

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> volumev2 admin http://controller:8776/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 0cfa27d0a5b946e8b35901d242ac165f        |

| interface    | admin                                   |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 3e42f0d7868745579ce658d88eef4c67        |

| service_name | cinderv2                                |

| service_type | volumev2                                |

| url          | http://controller:8776/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

 

 

 

## 安装以及配置

 

[root@controller ~]# yum install openstack-cinder python-cinderclient -y

 

 

## 编辑 /etc/cinder/cinder.conf 配置文件

 

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

 

 

 

[database]

...

connection = mysql://cinder:cinder@controller/cinder

 

 

 

[DEFAULT]

...

rpc_backend = rabbit

auth_strategy = keystone

my_ip = 10.6.17.11

verbose = True

 

 

 

[oslo_messaging_rabbit]

...

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = openstack

 

 

 

注释掉 [keystone_authtoken] 其他部分的选项。添加如下内容:

 

[keystone_authtoken]

...

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = cinder

password = cinder

 

 

 

[oslo_concurrency]

...

lock_path = /var/lib/cinder/tmp

 

 

 

 

 

## 同步数据库

 

[root@controller ~]# su -s /bin/sh -c "cinder-manage db sync" cinder

 

 

 

## 编辑  /etc/nova/nova.conf 配置文件

 

[cinder]

os_region_name = RegionOne

 

 

 

## 启动服务

 

[root@controller ~]# systemctl restart openstack-nova-api.service

 

 

[root@controller ~]# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service

[root@controller ~]# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

 

 

 

 

## Storage 节点操作

 

## 安装软件

[root@block1 ~]# yum install lvm2

 

 

 

## 启动 LVM2 服务

[root@block1 ~]# systemctl enable lvm2-lvmetad.service

[root@block1 ~]# systemctl start lvm2-lvmetad.service

 

 

## 创建分区

 

[root@block1 ~]# fdisk -l

 

磁盘 /dev/sda:599.6 GB, 599550590976 字节,1170997248 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x000e0185

 

   设备 Boot      Start         End      Blocks   Id  System

/dev/sda1   *        2048     2099199     1048576   83  Linux

/dev/sda2         2099200   211814399   104857600   83  Linux

/dev/sda3       211814400   211830783        8192   82  Linux swap / Solaris

 

 

## 使用 parted 软件,查看分区

[root@block1 ~]# parted /dev/sda

GNU Parted 3.1

使用 /dev/sda

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) p                                                                

Model: Dell Virtual Disk (scsi)

Disk /dev/sda: 600GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags: 

 

Number  Start   End     Size    Type     File system     标志

 1      1049kB  1075MB  1074MB  primary  xfs             启动

 2      1075MB  108GB   107GB   primary  xfs

 3      108GB   108GB   8389kB  primary  linux-swap(v1)

 

 

## 使用 parted 软件, 创建分区

 

(parted) mkpart primary 108GB 208GB                                       

(parted) p                                                                

Model: Dell Virtual Disk (scsi)

Disk /dev/sda: 600GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags: 

 

Number  Start   End     Size    Type     File system     标志

 1      1049kB  1075MB  1074MB  primary  xfs             启动

 2      1075MB  108GB   107GB   primary  xfs

 3      108GB   108GB   8389kB  primary  linux-swap(v1)

 4      108GB   208GB   99.5GB  primary

 

 

[root@block1 ~]# fdisk -l

 

磁盘 /dev/sda:599.6 GB, 599550590976 字节,1170997248 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x000e0185

 

   设备 Boot      Start         End      Blocks   Id  System

/dev/sda1   *        2048     2099199     1048576   83  Linux

/dev/sda2         2099200   211814399   104857600   83  Linux

/dev/sda3       211814400   211830783        8192   82  Linux swap / Solaris

/dev/sda4       211830784   406249471    97209344   83  Linux

 

 

[root@block1 ~]# pvcreate /dev/sda4 

  Physical volume "/dev/sda4" successfully created

  

 

[root@block1 ~]# vgcreate cinder-volumes /dev/sda4

  Volume group "cinder-volumes" successfully created

 

 

## 编辑 /etc/lvm/lvm.conf  配置文件,添加分区

 

devices {

...

filter = [ "a/sda4/", "r/.*/"]

 

 

 

 

 

## 安装 openstack 软件

 

[root@block1 ~]# yum install openstack-cinder targetcli python-oslo-policy -y

 

 

 

## 编辑 /etc/cinder/cinder.conf 配置文件

 

 

 

[database]

...

connection = mysql://cinder:cinder@controller/cinder

 

 

[DEFAULT]

...

rpc_backend = rabbit

auth_strategy = keystone

my_ip = 10.6.17.13

enabled_backends = lvm

glance_host = controller

verbose = True

volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

volume_group = cinder-volumes

iscsi_protocol = iscsi

iscsi_helper = lioadm

 

 

[oslo_messaging_rabbit]

...

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = openstack

 

 

 

# 注释掉[keystone_authtoken]下其他所有的选项 只使用下面

 

[keystone_authtoken]

...

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = cinder

password = cinder

 

 

 

 

[oslo_concurrency]

...

lock_path = /var/lib/cinder/tmp

 

 

 

 

## 启动 服务

 

[root@block1 ~]# systemctl enable openstack-cinder-volume.service target.service

 

[root@block1 ~]# systemctl start openstack-cinder-volume.service target.service

 

 

 

## 验证服务

 

[root@controller ~]# source admin-openrc.sh

 

[root@controller ~]# cinder service-list

+------------------+------------+------+---------+-------+----------------------------+-----------------+

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

+------------------+------------+------+---------+-------+----------------------------+-----------------+

| cinder-scheduler | controller | nova | enabled |   up  | 2015-12-04T07:35:57.000000 |        -        |

|  cinder-volume   | block1@lvm | nova | enabled |   up  | 2015-12-04T07:36:03.000000 |        -        |

+------------------+------------+------+---------+-------+----------------------------+-----------------+

 

 

 

八、 安装配置 Object Storage 服务

 

 

## 创建 openstack 帐号

 

[root@controller ~]# openstack user create --domain default --password-prompt swift

User Password:

Repeat User Password:

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | default                          |

| enabled   | True                             |

| id        | 7a2915af03464268ab80ef732aa5ba93 |

| name      | swift                            |

+-----------+----------------------------------+

 

 

[root@controller ~]# openstack role add --project service --user swift admin

 

 

## 创建 swift service 

 

[root@controller ~]# openstack service create --name swift \

> --description "OpenStack Object Storage" object-store

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Object Storage         |

| enabled     | True                             |

| id          | f7b97bc04bd24d67b12694bb3004843b |

| name        | swift                            |

| type        | object-store                     |

+-------------+----------------------------------+

 

 

## 创建 Object Storage service API 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> object-store public http://controller:8080/v1/AUTH_%\(tenant_id\)s

+--------------+----------------------------------------------+

| Field        | Value                                        |

+--------------+----------------------------------------------+

| enabled      | True                                         |

| id           | f8d7a017753947d981e0f42aa5fe4bde             |

| interface    | public                                       |

| region       | RegionOne                                    |

| region_id    | RegionOne                                    |

| service_id   | f7b97bc04bd24d67b12694bb3004843b             |

| service_name | swift                                        |

| service_type | object-store                                 |

| url          | http://controller:8080/v1/AUTH_%(tenant_id)s |

+--------------+----------------------------------------------+

 

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> object-store internal http://controller:8080/v1/AUTH_%\(tenant_id\)s

+--------------+----------------------------------------------+

| Field        | Value                                        |

+--------------+----------------------------------------------+

| enabled      | True                                         |

| id           | 6d125e48860b4f948300b412f744b23f             |

| interface    | internal                                     |

| region       | RegionOne                                    |

| region_id    | RegionOne                                    |

| service_id   | f7b97bc04bd24d67b12694bb3004843b             |

| service_name | swift                                        |

| service_type | object-store                                 |

| url          | http://controller:8080/v1/AUTH_%(tenant_id)s |

+--------------+----------------------------------------------+

 

 

 

[root@controller ~]# openstack endpoint create --region RegionOne \

> object-store admin http://controller:8080/v1

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | cdbea58743c946cca41c98682ea98793 |

| interface    | admin                            |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | f7b97bc04bd24d67b12694bb3004843b |

| service_name | swift                            |

| service_type | object-store                     |

| url          | http://controller:8080/v1        |

+--------------+----------------------------------+

 

 

 

## 安装配置软件

 

[root@controller ~]# yum install openstack-swift-proxy python-swiftclient \

> python-keystoneclient python-keystonemiddleware \

> memcached

 

 

 

## 下载swift配置文件

 

[root@controller ~]# curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/liberty

 

 

##编辑 /etc/swift/proxy-server.conf 配置文件

 

 

[DEFAULT]

...

bind_port = 8080

user = swift

swift_dir = /etc/swift

 

 

[pipeline:main]

pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server

 

 

[app:proxy-server]

use = egg:swift#proxy

...

account_autocreate = true

 

 

[filter:keystoneauth]

use = egg:swift#keystoneauth

...

operator_roles = admin,user

 

 

#注释掉[filter:authtoken] 其他所有的选项只使用下面

 

[filter:authtoken]

paste.filter_factory = keystonemiddleware.auth_token:filter_factory

...

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = swift

password = swift

delay_auth_decision = true

 

 

 

[filter:cache]

use = egg:swift#memcache

...

memcache_servers = 127.0.0.1:11211

 

 

 

## Object storage 节点配置

 

## 安装配置软件

 

[root@object1 ~]# yum install xfsprogs rsync -y

 

 

[root@object1 ~]# fdisk -l

 

磁盘 /dev/sda:599.6 GB, 599550590976 字节,1170997248 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x000bbc86

 

   设备 Boot      Start         End      Blocks   Id  System

/dev/sda1   *        2048   204802047   102400000   83  Linux

/dev/sda2       204802048   221186047     8192000   82  Linux swap / Solaris

/dev/sda3       221186048   611327999   195070976   83  Linux

/dev/sda4       611328000  1170997247   279834624   83  Linux

 

 

[root@object1 ~]# mkfs.xfs -f /dev/sda3

[root@object1 ~]# mkfs.xfs -f /dev/sda4

 

[root@object1 ~]# mkdir -p /opt/node/sda3

[root@object1 ~]# mkdir -p /opt/node/sda4

 

 

## 编辑 /etc/fstab  让系统启动自动加载

 

/dev/sda3 /opt/node/sda3 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

/dev/sda4 /opt/node/sda4 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

 

 

## 挂载硬盘

[root@object1 ~]# mount -a

 

 

 

[root@object1 ~]# df -h

文件系统        容量  已用  可用 已用% 挂载点

/dev/sda1        98G  1.2G   97G    2% /

devtmpfs        7.8G     0  7.8G    0% /dev

tmpfs           7.8G     0  7.8G    0% /dev/shm

tmpfs           7.8G  8.4M  7.8G    1% /run

tmpfs           7.8G     0  7.8G    0% /sys/fs/cgroup

/dev/sda3       186G   33M  186G    1% /opt/node/sda3

/dev/sda4       267G   33M  267G    1% /opt/node/sda4

 

 

 

 

## 编辑 /etc/rsyncd.conf 配置文件

 

[root@object1 ~]# vim /etc/rsyncd.conf

 

--------------------------------------------------------

uid = swift

gid = swift

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

address = 10.6.17.14

 

[account]

max connections = 2

path = /opt/node/

read only = false

lock file = /var/lock/account.lock

 

[container]

max connections = 2

path = /opt/node/

read only = false

lock file = /var/lock/container.lock

 

[object]

max connections = 2

path = /opt/node/

read only = false

lock file = /var/lock/object.lock

 

--------------------------------------------------------

 

 

 

 

## 启动服务

 

[root@object1 ~]# systemctl enable rsyncd.service

[root@object1 ~]# systemctl start rsyncd.service

 

 

 

## 安装配置软件

[root@object1 ~]# yum install openstack-swift-account openstack-swift-container \

> openstack-swift-object

 

 

## 下载配置文件

[root@object1 ~]# curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample?h=stable/liberty

 

[root@object1 ~]# curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample?h=stable/liberty

 

[root@object1 ~]# curl -o /etc/swift/object-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-server.conf-sample?h=stable/liberty

 

 

## 编辑/etc/swift/account-server.conf 配置文件

 

 

[DEFAULT]

...

bind_ip = 10.6.17.14

bind_port = 6002

user = swift

swift_dir = /etc/swift

devices = /opt/node

mount_check = true

 

 

[pipeline:main]

pipeline = healthcheck recon account-server

 

 

[filter:recon]

use = egg:swift#recon

...

recon_cache_path = /var/cache/swift

 

 

 

 

## 编辑/etc/swift/container-server.conf 配置文件

 

 

[DEFAULT]

...

bind_ip = 10.6.17.14

bind_port = 6001

user = swift

swift_dir = /etc/swift

devices = /opt/node

mount_check = true

 

 

 

[pipeline:main]

pipeline = healthcheck recon container-server

 

 

 

[filter:recon]

use = egg:swift#recon

...

recon_cache_path = /var/cache/swift

 

 

 

 

 

## 编辑/etc/swift/object-server.conf 配置文件

 

 

[DEFAULT]

...

bind_ip = 10.6.17.14

bind_port = 6000

user = swift

swift_dir = /etc/swift

devices = /opt/node

mount_check = true

 

 

[pipeline:main]

pipeline = healthcheck recon object-server

 

 

[filter:recon]

use = egg:swift#recon

...

recon_cache_path = /var/cache/swift

recon_lock_path = /var/lock

 

 

 

## 授权目录

 

[root@object1 ~]# chown -R swift:swift /opt/node

 

 

 

## 创建 swift 缓存 目录 cache/swift

 

[root@object1 ~]# mkdir -p /var/cache/swift

[root@object1 ~]# chown -R swift:swift /var/cache/swift

 

 

 

## 在controller 上创建 ring 帐号

 

 

## 创建 account.builder 文件

 

[root@controller ~]# cd /etc/swift/

 

[root@controller swift]# swift-ring-builder account.builder create 10 2 1

 

 

 

 

 

## 添加 object 节点

 

[root@controller swift]# swift-ring-builder account.builder add \

> --region 1 --zone 1 --ip 10.6.17.14 --port 6002 --device sda3 --weight 100

 

输出:

Device d0r1z1-10.6.17.14:6002R10.6.17.14:6002/sda3_"" with 100.0 weight got id 0

 

 

[root@controller swift]# swift-ring-builder account.builder add \

> --region 1 --zone 2 --ip 10.6.17.14 --port 6002 --device sda4 --weight 100

 

输出:

Device d1r1z2-10.6.17.14:6002R10.6.17.14:6002/sda4_"" with 100.0 weight got id 1

 

 

 

## 验证ring

 

[root@controller swift]# swift-ring-builder account.builder

 

account.builder, build version 2

1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 2 devices, 100.00 balance, 0.00 dispersion

The minimum number of hours before a partition can be reassigned is 1

The overload factor is 0.00% (0.000000)

Devices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta

             0       1     1      10.6.17.14  6002      10.6.17.14              6002      sda3 100.00          0 -100.00 

             1       1     2      10.6.17.14  6002      10.6.17.14              6002      sda4 100.00          0 -100.00 

 

 

# 平衡 ring

[root@controller swift]# swift-ring-builder account.builder rebalance

 

.......

Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00

 

 

 

 

## 创建容器 ring

 

 

[root@controller ~]# cd /etc/swift/

 

[root@controller swift]# swift-ring-builder container.builder create 10 2 1

 

 

 

## 创建存储节点ring

 

[root@controller swift]# swift-ring-builder container.builder add \

> --region 1 --zone 1 --ip 10.6.17.14 --port 6001 --device sda3 --weight 100

 

输出:

Device d0r1z1-10.6.17.14:6001R10.6.17.14:6001/sda3_"" with 100.0 weight got id 0

 

 

 

 

 

[root@controller swift]# swift-ring-builder container.builder add \

> --region 1 --zone 2 --ip 10.6.17.14 --port 6001 --device sda4 --weight 100

 

输出:

Device d1r1z2-10.6.17.14:6001R10.6.17.14:6001/sda4_"" with 100.0 weight got id 1

 

 

 

## 验证容器 ring

 

[root@controller swift]# swift-ring-builder container.builder

 

container.builder, build version 2

1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 2 devices, 100.00 balance, 0.00 dispersion

The minimum number of hours before a partition can be reassigned is 1

The overload factor is 0.00% (0.000000)

Devices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta

             0       1     1      10.6.17.14  6001      10.6.17.14              6001      sda3 100.00          0 -100.00 

             1       1     2      10.6.17.14  6001      10.6.17.14              6001      sda4 100.00          0 -100.00 

 

 

# 平衡 容器 ring

[root@controller swift]# swift-ring-builder container.builder rebalance

 

....

Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00

 

 

 

 

## 创建 object ring

 

[root@controller ~]# cd /etc/swift/

 

[root@controller swift]# swift-ring-builder object.builder create 10 2 1

 

[root@controller swift]# swift-ring-builder object.builder add \

> --region 1 --zone 1 --ip 10.6.17.14 --port 6001 --device sda3 --weight 100

 

 

输出:

Device d0r1z1-10.6.17.14:6001R10.6.17.14:6001/sda3_"" with 100.0 weight got id 0

 

 

 

 

 

[root@controller swift]# swift-ring-builder object.builder add \

> --region 1 --zone 2 --ip 10.6.17.14 --port 6001 --device sda4 --weight 100

 

 

输出:

Device d1r1z2-10.6.17.14:6001R10.6.17.14:6001/sda4_"" with 100.0 weight got id 1

 

 

 

 

## 验证 object ring

 

[root@controller swift]# swift-ring-builder object.builder

 

object.builder, build version 2

1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 2 devices, 100.00 balance, 0.00 dispersion

The minimum number of hours before a partition can be reassigned is 1

The overload factor is 0.00% (0.000000)

Devices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta

             0       1     1      10.6.17.14  6001      10.6.17.14              6001      sda3 100.00          0 -100.00 

             1       1     2      10.6.17.14  6001      10.6.17.14              6001      sda4 100.00          0 -100.00

 

 

 

 

 

## 平衡 object ring

 

[root@controller swift]# swift-ring-builder object.builder rebalance

 

...

Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00

 

 

 

## 查看生成的文件

 

[root@controller swift]# ls

account.builder  backups            container-reconciler.conf  container-server       object.builder       object.ring.gz  proxy-server.conf

account.ring.gz  container.builder  container.ring.gz          container-server.conf  object-expirer.conf  proxy-server    swift.conf

 

 

 

## 复制 account.ring.gz  container.ring.gz    object.ring.gz  到 其他 运行 代理服务 的节点/etc/swift 目录中  ,然后启动 openstack-swift-proxy.service 服务

 

 

 

 

 

## Object Storage 下载 swift.conf 配置文件

 

[root@object1 swift]# curl -o /etc/swift/swift.conf \

> https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample?h=stable/liberty

 

 

 

## 编辑 /etc/swift/swift.conf 配置文件

 

[root@object1 swift]# vim /etc/swift/swift.conf

 

 

 

[swift-hash]

...

swift_hash_path_suffix = changeme

swift_hash_path_prefix = changeme

 

 

[storage-policy:0]

...

name = Policy-0

default = yes

 

 

 

 

## 授权 目录

 

[root@object1 swift]# chown -R root:swift /etc/swift

 

 

 

 

## 在controller 以及 其他代理节点中 启动 代理服务

 

 

[root@controller ~]# systemctl enable openstack-swift-proxy.service memcached.service

 

[root@controller ~]# systemctl start openstack-swift-proxy.service memcached.service

 

 

 

## 在 Object Storage 节点中 启动服务

 

[root@object1 ~]# systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service \

> openstack-swift-account-reaper.service openstack-swift-account-replicator.service

 

 

[root@object1 ~]# systemctl start openstack-swift-account.service openstack-swift-account-auditor.service \

> openstack-swift-account-reaper.service openstack-swift-account-replicator.service

 

 

[root@object1 ~]# systemctl enable openstack-swift-container.service \

> openstack-swift-container-auditor.service openstack-swift-container-replicator.service \

> openstack-swift-container-updater.service

 

 

[root@object1 ~]# systemctl start openstack-swift-container.service \

> openstack-swift-container-auditor.service openstack-swift-container-replicator.service \

> openstack-swift-container-updater.service

 

 

 

[root@object1 ~]# systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service \

> openstack-swift-object-replicator.service openstack-swift-object-updater.service

 

[root@object1 ~]# systemctl start openstack-swift-object.service openstack-swift-object-auditor.service \

> openstack-swift-object-replicator.service openstack-swift-object-updater.service

 

 

 

 

## 验证服务

 

[root@controller ~]# echo "export OS_AUTH_VERSION=3" \

> | tee -a admin-openrc.sh

 

[root@controller ~]# source admin-openrc.sh

 

 

## 查看 swift 状态

 

[root@controller ~]# swift stat

 

 

        Account: AUTH_0d1a69b17e444cb3b4884529b6bdb372

     Containers: 0

        Objects: 0

          Bytes: 0

X-Put-Timestamp: 1449222121.42343

    X-Timestamp: 1449222121.42343

     X-Trans-Id: tx20d0064672a74cd88723f-0056615fe9

   Content-Type: text/plain; charset=utf-8

   

  

## 测试 上传 文件

 

[root@controller ~]# touch FILE

 

 

[root@controller ~]# swift upload container1 FILE

posted @ 2016-06-01 09:45  丶小炒肉  阅读(523)  评论(0编辑  收藏  举报