Kolla-Ansible 기반 OpenStack 초고결합형(HCI) 인프라 구축 가이드

1. 하드웨어 사양 및 네트워크 아키텍처

노드 명칭관리망 IP저장소/클러스터 IP테넌트 데이터 IP메모리CPU
node-hci-0110.10.10.6020.20.20.6030.30.30.6032GB12 Cores
node-hci-0210.10.10.6120.20.20.6130.30.30.6132GB12 Cores
node-hci-0310.10.10.6220.20.20.6230.30.30.6232GB12 Cores

초고결합형 환경에서는 각 노드에 최소 3개 이상의 SSD/HDD 물리 디스크를 할당하여 Ceph 저장소 풀을 구성해야 합니다. 테스트용 Windows 리소스는 메모리 64GB 이상을 권장합니다.

2. 운영체제 초기화 및 보안 정책 우회

모든 클러스터 노드에서 방화벽과 SELinux를 비활성화하여 호스트 간 통신 및 컨테이너 이동을 허용합니다.

sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3. 배포 툴리케이션 및 SSH 키 관리

마스터 노드에 필요한 배포 아카이브와 도메인 내 레지스트리를 추출한 후, Ansible 실행 환경을 준비합니다.

xz -d tar-tool.rpm.xz
rpm -ivh tar-tool.rpm
tar xvf ops-director-kolla-new.tar.gz
cd ops-director-kolla

키 쌍을 생성하고 모든 계산 노드 및 컨트롤 노드에 무口令 인증을 적용합니다.

ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa
for ip_seq in {0..2}; do ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.10.10.6${ip_seq}; done

Inventroy 파일 구조를 정의하고 외부 트래픽이 처리될 네트워크 인터페이스 변수를 설정합니다.

# inventory/deployment.ini
[deployment_servers]
10.10.10.60

[all:vars]
ansible_password='SecurePass123'

[control_nodes]
10.10.10.60 hostname=node-hci-01
10.10.10.61 hostname=node-hci-02
10.10.10.62 hostname=node-hci-03

[nova_compute_nodes]
10.10.10.60
10.10.10.61
10.10.10.62
# settings/init_env.sh
export EXTERNAL_NIC="eth2"
# 스크립트 실행 후 SSH 세션 재접속 필요
source ./init_env.sh
exit

4. Ceph 저장소 풀 프로비저닝

4.1 모니터 및 OSD 메타데이터 정의

# ceph-inventory/cluster.ini
[all:vars]
ansible_password='SecurePass123'

[monitor_nodes]
10.10.10.60
10.10.10.61
10.10.10.62

[osd_pools]
10.10.10.60 devices='["/dev/sdb", "/dev/sdc", "/dev/sdd"]'
10.10.10.61 devices='["/dev/sdb", "/dev/sdc", "/dev/sdd"]'
10.10.10.62 devices='["/dev/sdb", "/dev/sdc", "/dev/sdd"]'

4.2 글로벌 네트워킹 및 레지스트리 설정

# ceph-inventory/group_vars/cluster_globals.yaml
yum_mirror_addr: "10.10.10.60"
monitor_network_if: "eth0"
public_subnet_cidr: "10.10.10.0/24"
cluster_data_subnet_cidr: "20.20.20.0/24"
radosgw_binding_if: "eth0"
local_docker_registry: "10.10.10.60:8086"
insecure_registry_list: "10.10.10.60:8086"

4.3 OSD 디스크 경로 매핑

# ceph-inventory/group_vars/osd_vars.yaml
target_devices:
  - /dev/sdb
  - /dev/sdc
  - /dev/sdd
  # 반드시 형제 장치명이 동일해야 하며, lsblk 명령어로 확인 후 입력하십시오.

4.4 리소스 할당 제한 (선택 사항)

# mdss 자원 한계
ceph_mds_memory_limit: "4096m"
ceph_mds_cpu_limit: 4

# mgr 자원 한계
ceph_mgr_memory_limit: "4096m"
ceph_mgr_cpu_limit: 1

# mon 자원 한계
ceph_mon_memory_limit: "4096m"
ceph_mon_cpu_limit: 1

# rgw 자원 한계
ceph_rgw_memory_limit: "4096m"
ceph_rgw_cpu_limit: 8

4.5 플레이북 실행 및 검증

cd ceph-inventory
source run_ansible_playbook_docker.sh

컨테이너 상태 확인 및 인트라넷 대시보드 접근:

docker ps | grep ceph
docker exec -it $(docker ps -qf "name=ceph-mon-node-hci-01") bash
# 안전성을 위해 불안전한 ID 수락 차단
ceph config set mon auth_allow_insecure_global_id_reclaim false
ceph mgr services
  • 웹 UI 접속 주소: https://<MONITOR_IP>:8443
  • 기본 자격증명: admin / <dashboard_admin_password 값 조회>

5. OpenStack 플랫폼 빌드

Kolla 전역 설정 파일을 수정하여 VIP, 레지스트리 위치, 가상머신 하이퍼바이저 타입 등을 정의합니다.

# inventory/kolla_globals.yaml
kolla_internal_vip_address: "10.10.10.248"
docker_registry_server: "10.10.10.60:8086"
management_net_iface: "eth0"
tenant_external_iface: "eth2"
novacompute_virtualization_type: "kvm"

[주의] Ceph 백엔드 미사용 시 Cinder에 로컬 LVM 풀을 연결하려면 다음을 추가하세요:

vgcreate kolla-cinder-volumes /dev/sdd
echo 'cinder_volume_group: "kolla-cinder-volumes"' >> inventory/kolla_globals.yaml

[PG_NUM 최적화 참고]
Ceph의 Object Gateway 확장성을 위해 Placement Group 수치는 클러스터 규모에 따라 수동 조정되어야 합니다.

  • OSD < 5 : 128
  • 5 <= OSD <= 10 : 512
  • 10 <= OSD <= 50 : 4096
  • 상세 계산은 공식 pgcalc 도구를 활용하시기 바랍니다.

설치 자동화 스크립트를 실행합니다.

source apply_openstack_deploy.sh

도메인 네임 서비스 응답 후 포털 로그인:

openstack credentials check
# 관리자 비밀번호는 /etc/kolla/passwords.yml에서 keystone_admin_password 항목으로 확인 가능합니다.

6. 객체 및 블록 스토리지 연동 검증

6.1 Glance 이미징 백엔드

source /etc/kolla/admin-keystonerc.sh
openstack image create cirros-test --disk-format qcow2 --file cirros-0.5.1-x86_64-disk.raw
# RBD 풀에 이미지 등록 확인
docker exec -it ceph-mon-node-hci-01 bash -c "rbd ls images"

6.2 Cinder 볼륨 타입 및 생성

openstack volume type create ceph-backup --public --description "RBD-Based Storage"
openstack volume create test-volume-01 --size 20 --type ceph-backup
docker exec -it ceph-mon-node-hci-01 bash -c "rbd ls volumes"

6.3 Swift 호환 RGW 객체 스토리지

Keystone IDP와 연동된 S3/Swift 게이트웨이 서비스를 등록합니다.

openstack service create object-store --name rgw-swift-proxy --description "S3 & Swift Compatible Service"
openstack user create --domain default --password RGWAdminPass123 rgw-admin-user
openstack role add --project service --user rgw-admin-user admin
openstack endpoint create swift internal "http://10.10.10.60:8080/swift/v1" --region RegionOne
openstack endpoint create swift public "http://10.10.10.60:8080/swift/v1" --region RegionOne
openstack endpoint create swift admin "http://10.10.10.60:8080/swift/v1" --region RegionOne

RGW 인증 정보 및 캐싱 파라미터를 /etc/ceph/ceph.conf에 적용합니다.

# RGW Keystone 연동 및 버킷 동기화 설정
[client.rgw.node-hci-01]
rgw_keystone_url = http://10.10.10.248:5000
rgw_keystone_accepted_roles = admin,_member_,member
rgw_keystone_admin_project = admin
rgw_keystone_admin_user = admin
rgw_s3_auth_use_keystone = True
rgw_bucket_quota_sync_interval = 3600
docker restart $(docker ps -qf "name=ceph-rgw")
openstack container create shared-bucket --public
docker exec -it ceph-mon-node-hci-01 bash -c "radosgw-admin bucket list"

6.4 컴퓨팅 인스턴스 데이터 저장소

플랫(Flat) 또는 VXLAN overlay 네트워크 및 라우터를 생성한 후, 인스턴스를 부트합니다. 실제 VM 디스크 이미지는 RBD 풀에 다음과 같이 기록됩니다.

docker exec -it ceph-mon-node-hci-01 bash -c "rbd ls vms"

태그: kolla-ansible openstack ceph-storage hyperconverged RBD

8월 19일 00:36에 게시됨