티스토리 뷰

728x90
반응형

본 포스팅은 OpenStack의 구성요소들을 수동으로 설치하는 방법에 대한 가이드입니다.


오픈스택은 Core 프로젝트 즉 주요 구성요소로 10가지를 채택하고 있습니다. 이들은 각자의 VM으로 구성되며 VM간의 연결을 위해 하이퍼바이저를 사용합니다. 본 포스팅에서는 각 구성요소들을 하나씩 수동으로 구성해 보고 연결과정에 대해 알아보겠습니다.


★Cloud★/OpenStack [OpenStack] Part 1. kestone (아이덴티티 서비스)

★Cloud★/OpenStack [OpenStack] Part 2. glance (이미지 서비스)

★Cloud★/OpenStack [OpenStack] Part 3. nova (컴퓨트)

★Cloud★/OpenStack [OpenStack] Part 4. neutron (네트워크)

★Cloud★/OpenStack [OpenStack] Part 5. horizon (대시보드)

★Cloud★/OpenStack [OpenStack] Part 6. cinder (블록스토리지)


일곱번째 시간으로 설치할 구성요소는 오브젝트 스토리지 swift입니다.

앞선 포스팅은 위 URL을 참고하세요.

OpenStack 오브젝트스토리지(swift)는 REST API를 통해 오브젝트 스토리지를 제공하고 검색할 수 있습니다.

사용자 환경 설정에 오브젝트 스토리지 배포전에 Identity 서비스를 포함해야 합니다.


swift는 다음과 같은 구성 요소가 포함되어 있습니다.


Proxy servers (swift-proxy-server)

OpenStack Object Storage API 및 Raw HTTP 요청을 수용하여 파일을 업로드하고 메타데이터를 수정하고 컨테이너를 만듭니다. 또한 웹 브라우저에 파일 또는 컨테이너 목록을 제공합니다. 성능을 향상시키기 위해 프록시 서버는 일반적으로 memcache와 함께 배포된 캐시를 사용할 수 있습니다.

Account servers (swift-account-server)

Object Storage로 정의된 계정을 관리합니다.

Container servers (swift-container-server)

개체 저장소 내에서 컨테이너 또는 폴더의 매핑을 관리합니다.

Object servers (swift-object-server)

스토리지 노드에서 파일과 같은 실제 개체를 관리합니다.

Various periodic processes

대용량 데이터 저장소에 대한 하우스키핑 작업 수행합니다. 복제 서비스는 클러스터를 통해 일관성 및 가용성을 보장합니다.

WSGI middleware

인증을 처리하며 일반적으로 OpenStack ID입니다.

- swift client

사용자가 관리자, reseller 사용자 또는 swift 사용자로 인증되었을 경우 CLI를 통해 REST API에 명령을 제출할 수 있습니다.

- swift-init

ring 파일 구성을 초기화하고, 데몬 이름을 매개 변수로 가져와 명령을 제공하는 스크립트입니다. 

swift-recon

swift-recon 미들웨어가 수집한 클러스터에 대한 다양한 메트릭과 원격 측정 정보를 검색하는 데 사용되는 cli 도구입니다.

- swift-ring-builder

스토리지 ring 빌드 및 재조정을 하는 유틸리티입니다.



OpenStack swift Service Installation

Object Storage Service는 swift라는 프로젝트로 개발되었습니다. OpenStack은 오픈소스로써 이러한 프로젝트들이 핵심프로젝트로 올라가면 이를 실제 OpenStack에 반영하여 사용하고 실제 프로젝트 Name은 Module Name 및 CLI 환경에서 Command로 사용할 수 있습니다.


- 본 테스트는 다음과 같은 환경에서 작성되었습니다.

[nrson@nrsonLinux~$]uname -a
Linux nrsonLinux 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[nrson@nrsonLinux~$]

- 본 포스팅에서는 다양한 설치가 이루어짐에 따라 필수로 설치되어야 하는 mysql, rabbitMQ등의 Install과정으 과감히 제거하였습니다. 별도의 포스팅에서 사전에 준비되야 하는 Package의 설치 과정을 설명드리겠습니다.

- 본 포스팅에서 설치되는 패키지들은 apt-get package manager를 통해 수행됩니다.


swift 설치 이전 선행 작업

1. admin 권한 부여


root@nrsonLinux:~# source nrsonOpenrc.sh

root@nrsonLinux:~#


2. swift User 생성


root@nrsonLinux:~# openstack user create --domain default --password-prompt swift

User Password:

Repeat User Password:

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

| Field     | Value                            |

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

| domain_id | default                          |

| enabled   | True                             |

| id        | 7ea40bf3e16949038c3f3bd1c811a662 |

| name      | swift                            |

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

root@nrsonLinux:~#


3. swift Role 부여


root@nrsonLinux:~# openstack role add --project service --user swift admin

root@nrsonLinux:~#


4. swift 서비스 엔티티 생성


root@nrsonLinux:~# openstack service create --name swift --description "OpenStack Object Storage" object-store

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

| Field       | Value                            |

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

| description | OpenStack Object Storage         |

| enabled     | True                             |

| id          | 0790c91ca09c4f4abb5aa01b864331a2 |

| name        | swift                            |

| type        | object-store                     |

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

root@nrsonLinux:~#


5. 오브젝트 스토리지 Service API 엔드포인트 생성


root@nrsonLinux:~# openstack endpoint create --region RegionOne object-store public http://controller:8080/v1/AUTH_%\(tenant_id\)s

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

| Field        | Value                                        |

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

| enabled      | True                                         |

| id           | 74ca802c03a542009031d40e0231fff1             |

| interface    | public                                       |

| region       | RegionOne                                    |

| region_id    | RegionOne                                    |

| service_id   | 0790c91ca09c4f4abb5aa01b864331a2             |

| service_name | swift                                        |

| service_type | object-store                                 |

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

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

root@nrsonLinux:~# openstack endpoint create --region RegionOne object-store internal http://controller:8080/v1/AUTH_%\(tenant_id\)s

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

| Field        | Value                                        |

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

| enabled      | True                                         |

| id           | 0d10091ceb3b4dfe8873f81e403b1f91             |

| interface    | internal                                     |

| region       | RegionOne                                    |

| region_id    | RegionOne                                    |

| service_id   | 0790c91ca09c4f4abb5aa01b864331a2             |

| service_name | swift                                        |

| service_type | object-store                                 |

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

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

root@nrsonLinux:~# openstack endpoint create --region RegionOne object-store admin http://controller:8080/v1

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

| Field        | Value                            |

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

| enabled      | True                             |

| id           | e20ec2d7218a4a24baad0e5069b332cc |

| interface    | admin                            |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 0790c91ca09c4f4abb5aa01b864331a2 |

| service_name | swift                            |

| service_type | object-store                     |

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

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

root@nrsonLinux:~#


cinder Controller Node 구성을 위한 선행조건

1. 구성요소 설치


root@nrsonLinux:~# apt-get install swift swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

...

...

python-keystoneclient is the newest version (1:2.3.1-2).

python-swiftclient is the newest version (1:3.0.0-0ubuntu1).

memcached is the newest version (1.4.25-2ubuntu1.4).

python-keystonemiddleware is the newest version (4.4.1-0ubuntu1).

swift-proxy is the newest version (2.7.1-0ubuntu2).

swift is the newest version (2.7.1-0ubuntu2).

root@nrsonLinux:~#


2. /etc/swift 디렉토리 생성 및 작성


root@nrsonLinux:~# mkdir /etc/swift

root@nrsonLinux:~# curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

100 49891  100 49891    0     0  39384      0  0:00:01  0:00:01 --:--:-- 39377

root@nrsonLinux:~#


3. /etc/swift/proxy-server.conf 수정


[DEFAULT]

...

# bind 포트, 사용자, 구성 디렉토리 셋팅

bind_port = 8080

# swift_dir = /etc/swift

swift_dir = /etc/swift

# user = swift

user = swift

...
# 모듈 활성화
[pipeline:main]

#pipeline = catch_errors gatekeeper healthcheck proxy-logging cache listing_formats container_sync bulk tempurl ratelimit tempauth copy container-quotas account-quotas slo dlo versioned_writes symlink proxy-logging proxy-server

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

...
# account에 대한 자동 생성을 활성화
[app:proxy-server]
use = egg:swift#proxy
...
# account_autocreate = false
account_autocreate = true

...

# operator 롤에 대한 구성

# [filter:keystoneauth]

[filter:keystoneauth]

# use = egg:swift#keystoneauth

use = egg:swift#keystoneauth

# operator_roles = admin, swiftoperator

operator_roles = admin, swiftoperator

...
# Identity 서비스 접근에 대한 구성
# [filter:authtoken]
[filter:authtoken]
# paste.filter_factory = keystonemiddleware.auth_token:filter_factory
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
...
# auth_url = http://keystonehost:35357
auth_uri = http://172.21.70.24:5000
auth_url = http://172.21.70.24:35357
# auth_plugin = password
auth_plugin = password
# project_domain_id = default
project_domain_id = default
# user_domain_id = default
user_domain_id = default
# project_name = service
project_name = service
# username = swift
username = swift
# password = password
password = swift
...
# delay_auth_decision = False
delay_auth_decision = True
...

# memcache 위치를 구성

[filter:cache]

use = egg:swift#memcache

...

# memcache_servers = 127.0.0.1:11211

memcache_servers = 127.0.0.1:11211



cinder Storage Node 구성

계정, 컨테이너, 오브젝트 서비스를 운영하는 스토리지 노드를 설치 및 구성하는 방법에 대해 알아보겠습니다.

오브젝트 스토리지가 extended attributes (xattr)에 기반한 파일 시스템을 지원하지만, 테스팅 및 벤치마킹에 따르면 XFS 에서 최상의 성능과 안정성을 발휘한다고 알려져 있습니다. 

1. 구성요소 설치

root@nrsonLinux:~# apt-get install xfsprogs rsync

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

...

...

rsync is the newest version (3.1.1-3ubuntu1.2).

xfsprogs is the newest version (4.3.0+nmu1ubuntu1.1).

root@nrsonLinux:~#


2. /dev/sda2 장비를 XFS로 포맷 변경 및 디렉토리 생성


root@nrsonLinux:~# mkfs.xfs -f /dev/sda2

meta-data=/dev/sda2              isize=512    agcount=4, agsize=65536 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=1, sparse=0

data     =                       bsize=4096   blocks=262144, imaxpct=25

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

log      =internal log           bsize=4096   blocks=2560, version=2

         =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

root@nrsonLinux:~# mkdir /srv/node/sda2

root@nrsonLinux:~#


3. /etc/fstab 파일 구성


...

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

/dev/mapper/cl_nrson-home /               ext4    errors=remount-ro 0       1

# /boot/efi was on /dev/sda1 during installation

UUID=3AB6-C42C  /boot/efi       vfat    umask=0077      0       1

/dev/mapper/cl_nrson-swap none            swap    sw              0       0

/dev/sda2 /srv/node/sda2 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2


4. 장치 마운트


root@nrsonLinux:~# mount /srv/node/sda2

root@nrsonLinux:~#


5. /etc/rsyncd.conf 생성


uid = swift

gid = swift

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

address = 172.21.70.24


[account]

max connections = 2

path = /srv/node/

read only = false

lock file = /var/lock/account.lock


[container]

max connections = 2

path = /srv/node/

read only = false

lock file = /var/lock/container.lock


[object]

max connections = 2

path = /srv/node/

read only = false

lock file = /var/lock/object.lock


6. /etc/default/rsync 수정


...

RSYNC_ENABLE=true

...


7. rsync 서비스 시작


root@nrsonLinux:/etc/default# service rsync start

root@nrsonLinux:/etc/default#


cinder Controller Node 구성

1. 구성요소 설치


root@nrsonLinux:/etc/default# apt-get install swift swift-account swift-container swift-object

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

...

...

swift-account is the newest version (2.7.1-0ubuntu2).

swift-container is the newest version (2.7.1-0ubuntu2).

swift-object is the newest version (2.7.1-0ubuntu2).

swift is the newest version (2.7.1-0ubuntu2).

root@nrsonLinux:/etc/default#


2. 오브젝트 스토리지 소스 저장소로부터 account, 컨테이너, 오브젝트 서비스 구성파일 저장


root@nrsonLinux:/etc/default# curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  2917    0  2917    0     0   2522      0 --:--:--  0:00:01 --:--:--  2521

root@nrsonLinux:/etc/default# curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  2917    0  2917    0     0   2445      0 --:--:--  0:00:01 --:--:--  2447

root@nrsonLinux:/etc/default# curl -o /etc/swift/object-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-server.conf-sample

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  2917  100  2917    0     0   3035      0 --:--:-- --:--:-- --:--:--  3035

root@nrsonLinux:/etc/default#


3. /etc/swift/account-server.conf 파일 수정


[DEFAULT]

...

# bind ip주소, bind 포트, 사용자, 구성 디렉토리, 마운트 포인트 디렉토리 구성

bind_ip = 172.21.70.22

bind_port = 6002

user = swift

swift_dir = /etc/swift

devices = /srv/node

mount_check = true

...

# 모듈 활성화

[pipeline:main]

pipeline = healthcheck recon account-server

...

# recon(meters)캐시 디렉토리 구성

[filter:recon]

use = egg:swift#recon

recon_cache_path = /var/cache/swift


4. /etc/swift/container-server.conf 파일 수정


[DEFAULT]

...

# bind ip주소, bind 포트, 사용자, 구성 디렉토리, 마운트 포인트 디렉토리 구성

bind_ip = 172.21.70.22

bind_port = 6001

user = swift

swift_dir = /etc/swift

devices = /srv/node

mount_check = true

...

# 모듈 활성화

[pipeline:main]

pipeline = healthcheck recon container-server

...

# recon(meters)캐시 디렉토리 구성

[filter:recon]

use = egg:swift#recon

recon_cache_path = /var/cache/swift


5. /etc/swift/object-server.conf 파일 수정


[DEFAULT]

..

# bind ip주소, bind 포트, 사용자, 구성 디렉토리, 마운트 포인트 디렉토리 구성

bind_ip = 172.21.70.22

bind_port = 6000

user = swift

swift_dir = /etc/swift

devices = /srv/node

mount_check = true

..

# 모듈 활성화

[pipeline:main]

pipeline = healthcheck recon object-server

...

recon(meters)캐시와 lock 디렉토리 구성

[filter:recon]

use = egg:swift#recon

recon_cache_path = /var/cache/swift

recon_lock_path = /var/lock


6. 마운트 지점 디렉토리 구조에 대한 적절한 소유권을 부여


root@nrsonLinux:/etc/default# chown -R swift:swift /srv/node

root@nrsonLinux:/etc/default#


7. recon 디렉토리를 생성한 후 적절한 소유권을 부여


root@nrsonLinux:/etc/default# mkdir -p /var/cache/swift

root@nrsonLinux:/etc/default# chown -R root:swift /var/cache/swift

root@nrsonLinux:/etc/default# 



초기 ring 생성과 분배

오브젝트 스토리지 서비스를 시작하기 전에, 초기 account, 컨테이너, 오브젝트 ring을 생성해야 합니다. ring 빌더는 각 노드가 스토리디 아키텍처를 결정하고 배포하는데 사용하는 구성 파일을 생성합니다. 하나의 region 및 2^10 (1024) 개의 최대 파티션을 갖는 zone을, 각 오브젝트는 3개의 replica를 사용합니다. 오브젝트 스토리지에서 파티션은 통상적인 파티션 테이블보다는 스토리지 장치에서의 디렉토리를 가리킵니다.


1. account ring 생성

계정 서버는 account ring을 사용하여 컨테이너에 대한 목록을 유지합니다.

a. /etc/swift 디렉토리를 변경

b. account.builder 파일을 기반으로 생성


root@nrsonLinux:/etc/default# swift-ring-builder account.builder create 10 3 1

root@nrsonLinux:/etc/default#


c. ring을 각 스토리지 노드에 추가


root@nrsonLinux:/etc/default# swift-ring-builder account.builder add --region 1 --zone 1 --ip 172.21.70.22 --port 6002 --device /dev/sda2 --weight 100

Device d0r1z1-172.21.70.22:6002R172.21.70.22:6002//dev/sda2_"" with 100.0 weight got id 0

root@nrsonLinux:/etc/default#


d. Ring 내용을 확인


root@nrsonLinux:/etc/default# swift-ring-builder account.builder

account.builder, build version 3

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

The minimum number of hours before a partition can be reassigned is 1 (0:00:00 remaining)

The overload factor is 0.00% (0.000000)

Ring file account.ring.gz not found, probably it hasn't been written yet

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

             0       1     1    172.21.70.22  6002    172.21.70.22              6002 /dev/sda2 100.00          0 -100.00

             1       1     1    172.21.70.22  6002    172.21.70.22              6002      sda2 100.00          0 -100.00

             2       1     1    172.21.70.22  6002    172.21.70.22              6002      sda3 100.00          0 -100.00

root@nrsonLinux:/etc/default#


e. Ring 재조정 (account.ring.gz 생성)


root@nrsonLinux:/etc/default# swift-ring-builder account.builder rebalance

Reassigned 3072 (300.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00
root@nrsonLinux:/etc/default#


2. container ring 생성

컨테이너 서버는 개체의 목록을 유지하기 위해 컨테이너 ring을 사용합니다. 오브젝트의 위치를 추적하지는 않습니다.

a. /etc/swift 디렉토리를 변경

b. container.builder 파일을 기반으로 생성


root@nrsonLinux:/etc/default# swift-ring-builder container.builder create 10 3 1

root@nrsonLinux:/etc/default#


c. ring을 각 스토리지 노드에 추가


root@nrsonLinux:/etc/default# swift-ring-builder container.builder add --region 1 --zone 1 --ip 172.21.70.22 --port 6001 --device sda2 --weight 100

Device d0r1z1-172.21.70.22:6001R172.21.70.22:6001/sda2_"" with 100.0 weight got id 0

root@nrsonLinux:/etc/default# swift-ring-builder container.builder add --region 1 --zone 1 --ip 172.21.70.22 --port 6001 --device sda3 --weight 100

Device d1r1z1-172.21.70.22:6001R172.21.70.22:6001/sda3_"" with 100.0 weight got id 1

root@nrsonLinux:/etc/default# swift-ring-builder container.builder add --region 1 --zone 1 --ip 172.21.70.22 --port 6001 --device sda1 --weight 100

Device d2r1z1-172.21.70.22:6001R172.21.70.22:6001/sda1_"" with 100.0 weight got id 2

root@nrsonLinux:/etc/default#


d. Ring 내용을 확인


root@nrsonLinux:/etc/default# swift-ring-builder container.builder

container.builder, build version 4

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

The minimum number of hours before a partition can be reassigned is 1 (0:49:37 remaining)

The overload factor is 0.00% (0.000000)

Ring file container.ring.gz is up-to-date

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

             0       1     1    172.21.70.22  6001    172.21.70.22              6001      sda2 100.00       1024    0.00

             1       1     1    172.21.70.22  6001    172.21.70.22              6001      sda3 100.00       1024    0.00

             2       1     1    172.21.70.22  6001    172.21.70.22              6001      sda1 100.00       1024    0.00

root@nrsonLinux:/etc/default#


e. Ring 재조정 (container.ring.gz 생성)


root@nrsonLinux:/etc/default# swift-ring-builder container.builder rebalance

Reassigned 3072 (300.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00

root@nrsonLinux:/etc/default#



3. object ring 생성

오브젝트 서버는 로컬 장치상에 오브젝트 위치 리스트를 유지하는 오브젝트 ring을 사용합니다.

a. /etc/swift 디렉토리를 변경

b. object.builder 파일을 기반으로 생성


root@nrsonLinux:/etc/default# swift-ring-builder object.builder create 10 3 1

root@nrsonLinux:/etc/default#


c. ring을 각 스토리지 노드에 추가


root@nrsonLinux:/etc/default# swift-ring-builder object.builder add --region 1 --zone 1 --ip 172.21.70.22 --port 6001 --device sda2 --weight 100

Device d0r1z1-172.21.70.22:6001R172.21.70.22:6001/sda2_"" with 100.0 weight got id 0

root@nrsonLinux:/etc/default# swift-ring-builder object.builder add --region 1 --zone 1 --ip 172.21.70.22 --port 6001 --device sda3 --weight 100

Device d1r1z1-172.21.70.22:6001R172.21.70.22:6001/sda3_"" with 100.0 weight got id 1

root@nrsonLinux:/etc/default# swift-ring-builder object.builder add --region 1 --zone 1 --ip 172.21.70.22 --port 6001 --device sda1 --weight 100

Device d2r1z1-172.21.70.22:6001R172.21.70.22:6001/sda1_"" with 100.0 weight got id 2

root@nrsonLinux:/etc/default#


d. Ring 내용을 확인


root@nrsonLinux:/etc/default# swift-ring-builder object.builder

object.builder, build version 3

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

The minimum number of hours before a partition can be reassigned is 1 (0:00:00 remaining)

The overload factor is 0.00% (0.000000)

Ring file object.ring.gz not found, probably it hasn't been written yet

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

             0       1     1    172.21.70.22  6001    172.21.70.22              6001      sda2 100.00          0 -100.00

             1       1     1    172.21.70.22  6001    172.21.70.22              6001      sda3 100.00          0 -100.00

             2       1     1    172.21.70.22  6001    172.21.70.22              6001      sda1 100.00          0 -100.00

root@nrsonLinux:/etc/default#


e. Ring 재조정 (object.ring.gz 생성)


root@nrsonLinux:/etc/default# swift-ring-builder object.builder rebalance

Reassigned 3072 (300.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00

root@nrsonLinux:/etc/default#



4. ring 설정파일 분산

- 모든 스토리지 노드와 프록시 서비스가 작동 중인 노드에서 /etc/swift 디렉토리에 있는 account.ring.gz, container.ring.gz, object.ring.gz 을 복사합니다.

설치 마무리

1. Object Storage 소스 저장소에서 /etc/swift/swift.conf 파일 생성


root@nrsonLinux:/etc/swift# curl -o /etc/swift/swift.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  7894  100  7894    0     0   5216      0  0:00:01  0:00:01 --:--:--  5214

root@nrsonLinux:/etc/swift#


2. /etc/swift/swift.conf 파일 수정


[swift-hash]

...

swift_hash_path_suffix = nrsonT

swift_hash_path_prefix = Tnosrn

...

[storage-policy:0]

name = Policy-0

default = yes

...


3. 권한 변경 및 서비스 재시작


root@nrsonLinux:/etc/swift# chown -R root:swift /etc/swift

root@nrsonLinux:/etc/swift# service memcached restart

root@nrsonLinux:/etc/swift# service swift-proxy restart

root@nrsonLinux:/etc/swift# 


4. Storage 노드에서 오브젝트 스토리지 서비스를 기동


root@nrsonLinux:~# swift-init all start

Starting container-updater...(/etc/swift/container-server.conf)

Starting account-auditor...(/etc/swift/account-server.conf)

Starting object-replicator...(/etc/swift/object-server.conf)

Starting container-sync...(/etc/swift/container-server.conf)

Starting container-replicator...(/etc/swift/container-server.conf)

Starting object-auditor...(/etc/swift/object-server.conf)

Unable to locate config for object-expirer

Starting container-auditor...(/etc/swift/container-server.conf)

Starting container-server...(/etc/swift/container-server.conf)

Starting object-reconstructor...(/etc/swift/object-server.conf)

Starting object-server...(/etc/swift/object-server.conf)

Starting account-reaper...(/etc/swift/account-server.conf)

Starting proxy-server...(/etc/swift/proxy-server.conf)

Starting account-replicator...(/etc/swift/account-server.conf)

Starting object-updater...(/etc/swift/object-server.conf)

Unable to locate config for container-reconciler

Starting account-server...(/etc/swift/account-server.conf)

root@nrsonLinux:~#


검증과정

오브젝트 스토리지 서비스에 대한 작동을 확인합니다.

1. 오브젝트 스토리지 서비스 클라이언트가 인증 API 버전 3을 사용하도록 반영


root@nrsonLinux:~# echo "export OS_AUTH_VERSION=3" | tee -a nrsonOpenrc.sh demoOpenrc.sh

export OS_AUTH_VERSION=3

root@nrsonLinux:~# source demoOpenrc.sh

root@nrsonLinux:~#


2. swift 검증과정

a. swift stat : 서비스 상태 확인

b. swift upload container1 FILE_NAME : 파일 업로드

c. swift list : container list

d. swift download container1 FILE_NAME : 파일 다운로드


지금까지 OpenStack 구성요소인 스위프트(swift) 오브젝트 스토리지를 구성해 보았습니다. 다음시간에는 히트(heat) 오케스트레이션에 대해 알아보겠습니다.

728x90
반응형