Server/OpenStack

OpenStack - 오픈스택 갖고 놀기 - 설치부터 인스턴스 생성까지

TerianP 2023. 5. 21.
728x90

1. 시작하면서

진짜 정말 오랜만에 새 글을 쓰는거 같습니다ㅠ.ㅠ 

사실 바빴던 것 보다는 오픈스택을 얼른 구축하고 인스턴스 얼른 만들고, 글을 쓰고 싶었는데 우와...이거 생각보다 어렵더라구요

단순히 구축하는 것도 어렵긴했는데 뭣보다 네트워크 설정하고 이것저것하는데 생각보다 오래걸렸습니다.

 

사실 이번 갖고 놀기 프로젝트에서는 아쉬운게 좀 많습니다. 제가 원했던 것은 인스턴스 생성 - 내부 네트워크와 외부 네트워크를 라우터를 통한 연결 - 인스턴스에 쿠버네티스 설치까지...였는데 결국 제가 한 것은ㅠㅠ

 

이번 포스팅에서는 오픈스택 전체 설치 과정에 대한 부분은 생략하고, 어떻게 구성했는지와 네트워크 구성 정도만 짧막하게 적도록 하겠습니다.

 

2. 프로젝트 구성, 목표와 결과

0) 서비스 구성

물리 서버는 총 2대 : 라즈베리파이 Ram 8GB, 용량 64GB

Controller Node : 라즈베리파 파이 8GB 1대
Compute Node : 라즈베리파이 8GB 1대

 

 

1) 목표

이번 프로젝트의 원 목표는 오픈스택 구축 및 인스턴스 생성 및 활용, 정확히는 인스턴스에서 쿠버네티스를 활용하는 것까지!!

 

2) 프로젝트 성공점

- 오픈스택 구축 성공!! : 구축 후 horizon 을 통한 웹 상에서 여러 설정 구성이 가능

- 인스턴스 생성 성공!! : horizon 에서 gui 로 인스턴스 생성 가능

- 오픈스택의 여러 서버스 활용 : 대표적으로 아래의 여러 서비스들이 있는데 이 중에서 노란색으로 표시해둔 애들은 모두 설치 및 활용해보았다

서비스 서비스 이름(코드) 설명
Identity Service Keystone 사용자 관리 수행
Compute Service Nova 가상 머신 관리
Image Service Glance 커널 이미지 및 디스크 이미지와 같은 가상 이미지를 관리합니다.
Dashboard Horizon 웹 브라우저를 통해 관리 및 조작할 수 있는 GUI 콘솔 제공
Object Storage Swift 클라우드 스토리지 제공
Block Storage Cinder 가상 머신이 사용하는 스토리지 관리
Network Service Neutron 가상 네트워크 관리
Load Balancing Service Octavia 부하 분산 기능 제공
Orchestration Service Heat 가상 머신 인스턴스의 오케스트레이션 기능 제공
Metering Service Ceilometer 과금용 사용량 측정 기능 제공
Database Service Trove 데이터베이스 리소스 관리
Container Service Magnum 컨테이너 오케스트레이션 기능 제공
Data Processing Service Sahara 데이터 처리 기능 제공
Bare Metal Provisioning Ironic 베어메탈 프로비저닝 기능 제공
Shared File System Manila 파일 공유 기능 제공
DNS Service Designate DNS 서버 기능 제공
Key Manager Service Barbican 다양한 키의 관리 기능 제공

- 인스턴스 생성 및 접속 : 가상 인스턴스 생성과 접속을 확인했다! 그렇게 오랜시간을 들여서 결국 생성하고 접속하니까 기분이 너무 좋더라. 다만...문제가 아주아주 많았다ㅠㅠ

3) 프로젝트 실패점

- 네트워크 연결 문제 : 역시나 네트워크가 내 발목을 잡았다. 특히 10 번대로 설정해둔 내부 네트워크와 192 번대로 설정해둔 외부 네트워크 간 통신 문제도 있었고, 라우터를 생성 후 연결하면서 네트워크끼리 연결하고 싶었는데 문제가 많았다.

- 인스턴스 접속과 네트워크 문제 : 역시나 네트워크가 문제인지 인스턴스 접속에서도 많은 문제가 있었다. 다행히 인스턴스 접속까지는 가능했는데 아래와 같은 문제를 확인했다.

  • 접속 시 느려짐 : ssh 접속 자체를 포함해서 명령어를 실행하기까지 정말정말 많이 느리더라ㅠㅠ 문제는 이것이 네트워크의 문제인지, 아니면 라즈베리 파이에 올려서 생성했기에 즉, 컴퓨터 노드의 문제인지 감이 안잡히는 부분.
  • 패키지 업데이트 문제 : 아주아주 큰 문제. 이것 역시 네트워크와 관련된 문제인 듯 한데, apt-get update 가 계속 에러가 난다. 문제는 패키지 리포지토리를 다른것으로 바꿔도 계속 이런 점.

time out 에러가...ㅠㅠ

  • 라우터 문제 : 라우터에서 10번대 네트워크와 192 번대 네트워크를 연결해주는 즉 라우팅해주는 작업이 필요했는데...당연히 이 부분이 잘 안되었고, 결국 대안책으로 Floating IP 기능을 사용해서 연결까지는 어찌어찌 성공했다.

4) 앞으로 고려 사항

네트워크 공부 꼭 하자!

사실 정말 오랜만에 네트워크에 대해서 접하고 만져볼 수 있었다. 네트워크가 이렇게 어려웠구나...하고 다시 느낀 것도 있고, 정말 공부를 많이해야겠다고 다시 느꼈다. 사실 '개발자가 네트워크를 그렇게 공부할 필요가 있는가?' 혹은 '굳이 네트워크를 왜 공부해? 코딩만 잘하면 되지' 라고 이야기할 수 는 있을 것 같다. 오픈스택을 공부하면서도 스스로도 괜히 시간낭비하는게 아닌가 하는 의문이 들었던 점이기도 하다. 

하지만 '서버 백엔드 개발자' 로서 서비스가 어떤 환경에서 운영되는지, 운영되는 환경의 트렌트는 무엇인지, 그에 따른 네트워크가 어디서 들어와서 어디로 나가는지 정도는 알아두면 좋지 않을까해서 오픈스택을 시작하기도 했고, 실제로 많은 공부를 한 것 같다.

 

3.  그래서 오픈 스택이란 무엇인가?

 

오픈스택은 클라우드 컴퓨팅 플랫폼으로, 사용자가 가상 서버와 다른 리소스를 관리하고 제공할 수 있게 해주는 오픈 소스 소프트웨어이다. 이 플랫폼은 인프라스트럭처를 서비스(IaaS) 모델을 제공하며, 공개적인 클라우드와 사설 클라우드 모두에서 사용될 수 있다.

쉽게 생각하자면 클라우드 서비스. 개인이 오픈스택을 설치하면 개인용 클라우드 서비스 구축! 이 가능하다

 

2) 오픈스택의 주요 구성요소

오픈스택은 여러 개의 구성요소로 이루어져 있으며, 각각은 특정한 클라우드 컴퓨팅 기능을 담당합니다. 주요 구성요소는 다음과 같다

Nova: 이는 오픈스택의 주요 부분으로, 가상 머신을 생성하고 관리하는 역할을 합니다.
Swift: 이는 오픈스택의 객체 스토리지 시스템으로, 데이터를 저장하고 검색하는 데 사용됩니다.
Cinder: 이는 블록 스토리지 시스템으로, 가상 머신에 디스크 스토리지를 제공합니다.
Neutron: 이는 네트워크 서비스를 제공하며, 가상 네트워크 인터페이스를 생성하고 관리합니다.
Horizon: 이는 오픈스택의 대시보드로, 웹 기반 인터페이스를 통해 사용자가 오픈스택 서비스를 관리할 수 있게 해줍니다.

 

3) 오픈스택의 장점

유연성: 오픈스택은 사용자가 필요에 따라 자신의 클라우드 환경을 맞춤 설정할 수 있게 해줍니다.
확장성: 오픈스택은 클라우드 인프라를 쉽게 확장할 수 있게 해줍니다.
오픈 소스: 오픈스택은 오픈 소스 소프트웨어이므로, 사용자는 코드를 자유롭게 수정하거나 개선할 수 있습니다.

 

4.  구성 결과

1) horizon 로그인 화면

2) 각 서비스의 API 주소

- 컨트롤 노드의 호스트 이름이 raspi-server-1 임으로 이에 맞춰서 API 서비스 주소가 구성되었다

 

3) 하이퍼바이저와 호스트 집합

- Compute Node 는 1대밖에 없기에 raspi-server-2 만 보인다ㅠ.ㅠ

- 다만 호스트 집합에서는 raspi-server-1 도 확인할 수 있다

4) 네트워크 구성과 라우터

- 네트워크 토플로지에서 open-route 가 존재하고, 192 번대 대역과 10 번대 대역 모두에 연결되어있는 모습과 인스턴스에 187 이 부여되어있는 모습이 보인다

- 관리에서 네트워크와 라우터의 모습과 각 설정도 확인 가능하다!

허우대만 멀쩡한 네트워크
크...동작 전혀 안하는 라우터

5) 가상 인스턴스

- 생성된 가상 인스턴스 test-instance-1 

- 10번대 대역에서는 10.0.0.182 를 부여받았고, Floating IP 기능을 통해 192 번대 대역에서는 192.168.0.153 을 부여받았다

이것이 바로 가상 인스턴스 test-1
인스턴스 개요 모습

 

6) tracepath 확인과 가상 인스턴스에 ssh 접속

- 가상 인스턴스 instance-1 에 접속한 모습. 182 라는 ip 가 부여되었음도 확인할 수 있다

- 문제는 192.168.0.168 까지는 tracepath 를 통해 확인 가능하지만, 192.0.0.1 은 확인할 수가 없다. 아마 라우팅 문제로 확인되며 정적 라우팅을 통해서 해결가능할것 같은데...여러 방면으로 아직 해결책을 찾는 중

 

5. 앞으로 계획!

- 쿠버네티스와 오픈스택 : 앞으로의 계획은 명확하다! 쿠버네티스와 오픈스택을 공부해서 내 프로젝트들을 올리고 배포해보는 것!

오픈스택이 계속 이렇게 문제가 많다면, 느리거나 에러가 발생한다면 심플하게 포기하고 쿠버네티스로 넘어갈 계획이다.

- 프로젝트 배포 : 곧 render 말고 N:M 채팅 프로젝트를 쿠버네티스나 오픈스택을 통해 배포할 예정이다. 이것까지는 꼭! 포스팅으로 남기고 싶다


Reference

 

댓글