Swift : Object Storage Service (오브젝트 스토리지 서비스)
1.비정형성 데이터를 저장하기에 적합 : 멀티미디어(동영상, 이미지), 디스크 이미지, ...
단위: 오브젝트 (파일 +메타 데이터)
2. 각 오브젝트들은 고유한 UTL(http://swift ... ) 을 가지고 API로 제어된다 : 외부 어플리케이션, 웹 등에서 직접 동시에 접근 가능
프로토콜: HTTP(REST, SOAP)
3. Multi-tenant 로 구현 가능하며 저장공간에 제약이 없다 : 계정마다 저장공간을 할당받는 것이 아니라 모든 저장공간을 함께 사용
4. 오픈스택의 다른 컴포넌트와의 관련성이 낮아서 다른 구성요소에 종속적이지 않고, 개별환경구축이 가능하다
- 참고 : https://www.slideshare.net/ssuser5ad078/swift-overview -
Swift는 다음의 요소들로 구성된다 :
-
Proxy 서버: 스토리지에 접근하기 위한 api를 제공하거나 각 서비스를 관리
-
Object 서버: 개체 관리
-
Contatiner 서버 : 컨테이너 관리
-
Account 서버: 계정 관리
-
WSGI middleware : 인증을 처리, 대체로 오픈스택 Identity
-
Swift-Client : 사용자가 CLI를 통해 REST API로 명령어를 보낼 수 있게 한다.
-
Swift-init : ring 파일 생성(building)을 초기화하는 스크립트, 파라미터명으로 daemon 이름을 사용하며 명령어를 제공한다.
-
swift-recon : 다양한 메트릭스와 swift-recon 미들웨어에 의해 모여진 클러스터에 대한 telemetry 정보를 받는 데 사용하는 CLI 도구
-
swift-ring-builder : 스토리지 ring을 만들고(build), 리밸런싱한다.
Account | Container | Object | |
관리 대상 | Acoount의 상태 정보 Container 리스트 |
Container의 상태 정보 Object의 리스트 |
실질적인 오브젝트 파일 |
ACL | 다수의 사용자들이 권한(ACL))에 따라 사용을 정의 가능함 | 사용자 권한(ACL)에 따라 사용가능 여부가 결정되는 폴더 |
Container ACL에 적용되어 사용가능 여부 결정 |
=> Proxy Server가 사용자의 URL 요청을 받아서 스토리지 서버 중 한 곳을 선택한 다음, 해당 요청을 어떤 물리적 서버에서 처리해야 할지 Ring으로 결정 후 스토리지 서버로 전달
=> 3종류의 데이터를 각각 Account, Container, Object 의 서버가 관리하며 동일한 로직으로 Ring에서 접근된다
Swift의 논리적 위계관계 :
zone(데이터를 안전하게 보관하기 위한 단위; 서버)
> device (증설 혹은 제거를 위한 단위; 디스크)
> partition (복제와 균등분배를 위한 단위; 디렉토리)
> object (실제 파일과 메타데이터로 파티션에 담겨 복제됨)
<< ⭕ 본 설치 내용은 controller 노드에서 진행 >>
✋ Prerequisties .
pyton 및 rsync 버전 확인
# python --version
# rsync --version
🔨 데이터 베이스 생성 및 접근 권한 설정
이전까지 모든 서비스는 컨트롤러 노드의 SQL데이터 베이스를 활용하여 설치했지만,
Swift는 SQLite데이터 베이스를 활용
🟢 admin credential 스크립트 실행 :
# source key_adminrc
🟢 Swift 서비스 Credential 생성 1 - swift 계정 생성 후 프로젝트 및 role에 추가 :
# openstack user create --domain default --password-prompt swift
# openstack role add --project service --user swift admin
🟢 Swift 서비스 Credential 생성 2 - swift 서비스 생성 :
# openstack service create --name swift --description "OpenStack Object Storage" object-store
🟢 Object Storage API 서비스 endpoint 생성 :
# openstack endpoint create --region RegionOne object-store public http://[컨트롤러 노드 관리용 ip]:8080/v1/AUTH_%(project_id\)s
# openstack endpoint create --region RegionOne object-store internal http://[컨트롤러 노드 관리용 ip]:8080/v1/AUTH_%(project_id\)s
# openstack endpoint create --region RegionOne object-store admin http://[컨트롤러 노드 관리용 ip]:8080/v1
🔨 구성요소 설치
프록시 서버는 컨트롤러 노드와 스토리지 노드 외의 다른 노드에 설치할 수 있고,
또는 성능 향상을 위해 여러 개의 노드에 프록시도 설치 가능
🟢 관련 패키지 설치:
# yum -y install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached
🟢 오브젝트 스토리지 소스 저장소로부터 프록시 서비스 환경 설정 파일을 가져오기 :
# curl -o /etc/swift/proxy-server.conf https://opendev.org/openstack/swift/raw/branch/stable/rocky/etc/proxy-server.conf-sample
🟢 프록시 서비스 환경 설정 파일 수정 :
# vi /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 // FALSE인 상태로 주석처리되어있었음
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
www_authenticate_uri = http://[컨트롤러 노드 관리용 ip]:5000
auth_url = http://[컨트롤러 노드 관리용 ip]:5000
memcached_servers = [컨트롤러 노드 관리용 ip]:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = swift
password = [swift 계정 비밀번호]
delay_auth_decision = True
[filter:keystoneauth]
use = egg:swift#keystoneauth
operator_roles = admin,user //swiftoperator를 user로 수정
[filter:cache]
use = egg:swift#memcache
memcache_servers = [컨트롤러 노드 관리용 ip]:11211
* tempurl & tempauth 모듈 삭제
**symlink 와 copy 모듈 삭제후
***해당 섹션에 pipeline이 두 개 있는데 주석처리가 안되어 있는 윗부분과 주석처리가 되어 있는 하단의 pipeline이 있음
하단의 pipeline을 주석처리 해제 후 수정한다 (윗부분은 주석처리로 변경)
'자기발전소 > # Manually Install OpenStack' 카테고리의 다른 글
Openstack Swift on Centos (Rocky) 3 [Ring] (1) | 2020.08.23 |
---|---|
Openstack Swift on Centos (Rocky) 2 [Storage Node] (0) | 2020.08.23 |
Openstack Horizon on Centos (Rocky) (0) | 2020.08.22 |
Openstack Neutron on Centos (Rocky) 2 [Compute Node] (0) | 2020.08.22 |
Openstack Neutron on Centos (Rocky) 1 [Controller Node] (0) | 2020.08.22 |