본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
자기발전소/# Manually Install OpenStack

Openstack Swift on Centos (Rocky) 2 [Storage Node]

by iamlucia 2020. 8. 23.

 

Swift : Object Storage  Service (오브젝트 스토리지 서비스) 


 Prerequisties .
스토리지 노드 생성 후
오픈스택 기본 환경설정 구성 필요 (or swift 패키지 다운로드 불가능
스토리지 노드 생성 절차 (feat. VM workstation)
1. 가상머신 생성 (1 CPU, HDD 40GB, RAM 2GB)
2. NIC 은 외부용(yum install 하기 위해 일시적), 내부용 총 2개 
3. 생성 후 POWER OFF
4. EDIT 를 통해 가상머신에 NEW HDD(20GB) 새로 붙이기
(사족: 두 개 붙인채로 만들면 모두 파티션된 상태로 추가되어 손 쓰기 어려웠음, MKFS.XFS busy 오류만..)
5. 가상 머신 RESUME

 

🟢 스토리지 노드 초기 구성 

 

# yum -y install xfsprogs

# fdisk -l                                              // 추가된 새 디스크 확인 
# mkfs.xfs /dev/sdb                      // 디스크 포맷 
# mkdir -p /srv/node/sdb          // 마운트 포인터 생성 
# blkid                                  // 디바이스 UUID 번호 확인 
# vi /etc/fstab                  // 아래 내용을 추가하여 마운트 정보 영구 적용하기 
UUID="[확인한 디바이스 uuid 번호]" /srv/node/sdb xfs noatime 0 2
# mount /srv/node/sdb

# vi /etc/rsyncd.conf                // conf 파일 다음과 같이 수정 

더보기

uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = MANAGEMENT_INTERFACE_IP_ADDRESS

[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

 

 

 

 

🟢 rsyncd.service 활성화 및 실행 :

 

# systemctl enable rsyncd.service
# systemctl start rsyncd.service

 

 

🟢 스토리지 노드의 오픈스택 초기 구성 :

 

yum -y install chrony
# echo "server
[컨트롤러 노드의 관리용 ip] iburst" >> /etc/chrony.conf
# systemctl enable chronyd.service
systemctl start chronyd.service
yum -y install centos-release-openstack-rocky
yum -y install python-openstackclient
yum -y install openstack-selinux
yum -y upgrade
vi /etc/hosts 수정         // 스토리지 노드명 추가 


🔨 구성요소 설치 

 

🟢 관련 패키지 설치  :

 

# yum -y install openstack-swift-account  openstack-swift-container openstack-swift-object

 

 

🟢 각 소스 저장소로부터 설정 파일 다운 :

 

# curl -o /etc/swift/account-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/account-server.conf-sample
# curl -o /etc/swift/container-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/container-server.conf-sample 

# curl -o /etc/swift/object-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/object-server.conf-sample

 

 

🟢 account-server  설정 파일 수정 :

 

# vi /etc/swift/account-server.conf

 

더보기

[DEFAULT]
bind_ip = [스토리지 노드의 관리용 IP]
bind_port = 6202
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True

[pipeline:main] //모듈 활성화 
pipeline = healthcheck recon account-server

[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift

 

 

🟢 container-server 설정 파일 수정 :

 

# vi /etc/swift/container-server.conf

 

더보기

[DEFAULT] 
bind_ip = [스토리지 노드의 관리용 IP]
bind_port = 6201
user = swift 
swift_dir = /etc/swift 
devices = /srv/node 
mount_check = True

[pipeline:main] 
pipeline = healthcheck recon container-server

[filter:recon] 
use = egg:swift#recon 
recon_cache_path = /var/cache/swift

 

 

🟢 object-server 설정 파일 수정 :

 

# vi /etc/swift/object-server.conf

 

더보기

[DEFAULT] 
bind_ip = [스토리지 노드의 관리용 IP]
bind_port = 62020
user = swift 
swift_dir = /etc/swift 
devices = /srv/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

 

🟢 마운트 포인터 디렉토리에 대한 소유권 설정 : 

 

# chown -R swift:swift /srv/node

 

 

🟢recon (캐시) 디렉토리를 생성하고, 이 디렉토리에 해당 디렉토리에 대한 소유권과 권한 설정 :

 

# mkdir -p /var/cache/swift
# chown -R root:swift /var/cache/swift
# chmod -R 775 /var/cache/swift