실습에 앞서
공부하면서 정리하여 부족한 부분이 많습니다. 구축 환경은 다음과 같습니다.
- VMware workstation 17 pro in Windows OS
- Ubuntu 22.04 LTS
프로젝트 생성
처음 OpenStack을 브라우저에서 실행할 때는 아이디는 admin, 패스워드는 이전 OpenStack 설치 시 local.conf 파일에서 설정한 패스워드로 로그인합니다.
첫 로그인 시 좌측 Project는 admin, 우측 User는 admin으로 설정되어 있습니다.
이제 Test1이라는 새로운 프로젝트를 생성하고, 이 프로젝트에서 User, Network 등을 추가 및 설정하여 환경을 구축해 나갑니다.
[인증] → [프로젝트] → [프로젝트 생성]에서 프로젝트 이름을 설정한 후 [프로젝트 생성]을 마칩니다.
User 생성
다음은 Test1이라는 프로젝트에 User를 추가해주도록 합니다.
[인증] → [사용자] → [사용자 생성]에서 Test1-Admin이라는 사용자 이름을 입력하고, 프로젝트를 Test1으로 설정합니다. 그리고 실습의 수월한 진행을 위해 저는 admin으로 역할을 부여했습니다.
로그아웃 후 생성한 User의 ID와 Password로 로그인을 합니다.
이미지 업로드
OpenStack 클라우드에서 가상머신을 생성하기 위해 "이미지"라고 부르는 파일이 필요합니다. 이 디스크 이미지는 데이터가 저장된 파일의 형태로, ISO라고 부르는 광학 디스크, QCOW2, VHD 등의 가상 하드 디스크와 같이 실제 물리 CD/DVD나 하드디스크를 파일의 포맷으로 생성한 것입니다.
1. 이미지 다운로드
https://cloud-images.ubuntu.com
위 주소에서 jammy-server-cloudimg-amd64.img 이름으로 된 파일을 다운로드 합니다. 다른 이미지 파일을 다운 받아도 괜찮습니다. 저는 Ubuntu 18.04 이미지를 본 실습에 사용하였습니다.
2. 이미지 생성
이미지 이름을 작성하고, 다운로드 받은 이미지를 선택합니다.
포멧은 QCOW2로 선택합니다.
외부 네트워크 & 내부 네트워크 생성 및 라우터 연결
다음은 네트워크 설정을 해주겠습니다.
[관리] → [네트워크] → [네트워크]로 이동하면 초기에는 다음과 같이 shared, public 네트워크가 추가되어 있을 것입니다.
이제 외부와 연결되는 External Network와 Internal Network 을 생성하고, 이를 연결하는 라우터를 추가해줍니다.
1. External Network 생성
External Network을 따로 생성할 수도 있지만, OpenStack을 처음 설치하면 Admin 프로젝트로 생성되는 Public Network가 있을 것입니다. 저는 이번 실습에서는 Public Network를 사용하였으며, 따로 External Network를 생성하지는 못했습니다.
처음 OpenStack을 사용하시는 분이시라면 꼭 기존에 있는 Public Network를 사용하시기를 추천드립니다.
External Network를 만들어서 사용하려고 노력했지만, 참 마음처럼 되지 않았습니다. 다음 실습에서는 외부 네트워크 생성해보고자, 앞선 저의 시행착오들을 정리 해놓았습니다. (많은 조언 부탁드립니다.)
① 네트워크
[공유]와 [외부 네트워크]를 설정하고 네트워크 유형을 Flat, 물리적인 네트워크를 extnet로 설정합니다.
② 서브넷
네트워크 주소에는 실제 설치한 가상환경의 인터페이스 대역과 게이트웨이 주소를 기입합니다.
- 네트워크 주소: 192.168.131.0/24
- Gateway IP: 192.168.131.2
③ 서브넷 세부 정보
DHCP를 설정하지 않고, 충돌을 방지하기 위해 IP 주소를 제한적으로 설정합니다.
(, 뒤에 띄어쓰기 하지 않기!)
2. Internal Network 생성
① 네트워크
내부 네트워크는 네트워크 유형을 [로컬]로 설정하고, 공유를 설정합니다.
② 서브넷
네트워크 주소는 192.168.0.0/24 대역으로 설정합니다. 이전 실습에서 사용했던 이미지라 10.10.10.0/24로 설정되어 있습니다. 실습자 임의대로 사설 네트워크 중 선택하여 기재하시면 될 것 같습니다.
③ 서브넷 세부 정보
DHCP 설정하고, DNS Name Server에 다음과 같이 생성합니다.
3. 라우터 생성 및 연결
internal, external 네트워크를 생성했으므로, 이를 라우터로 연결하도록 하겠습니다.
[관리] → [네트워크] → [라우터]에서 [라우터 생성]을 누른 후 외부 네트워크를 External Network인 ext-net으로 설정합니다.
이후 생성한 Router 클릭 후 [인터페이스]에서 [인터페이스 추가]를 선택합니다. 다음 이미지는 동일한 과정의 다른 이미지입니다. Subnet에서 이전에 생성한 Internal Network를 설정하고 [Submit]합니다.
이제 생성한 라우터의 인터페이스에 Internal Network가 추가된 것을 확인할 수 있습니다.
[프로젝트] → [네트워크] → [네트워크 토폴로지]에서 다음과 같이 Internal 네트워크와 External 네트워크가 연결이 잘 된 것을 확인할 수 있습니다.
Security Group 설정
다음은 Security Group을 설정합니다. Security Group은 OpenStack에서 인스턴스에 대한 네트워크 필터링 정책으로 논리적으로 만들어 놓은 방화벽입니다. 가상머신의 방화벽과는 별개로 동작하고 Nova가 관리합니다.
기본으로 Default 정책이 생성되어 있으며, [규칙 관리]에서 필터링 정책을 추가할 수 있습니다.
인스턴스 접근이 용이한지 확인하기 위한 명령어인 ping 명령을 위해 모든 ICMP 메시지를 허용하는 정책과, SSH 요청을 허용하는 정책을 추가합니다.
Default 정책이 아닌 [보안 그룹 생성]하고 필터링 규칙을 따로 추가할 수도 있습니다. 실습에서는 따로 Security Group을 추가하여 진행하였습니다. 저는 따로 Security Group을 생성하고, 정책을 추가하는 것을 추천드립니다.
Key Pair 설정]
다음은 Key Pair 설정입니다.
[Project] → [Compute] → [Key Pair]에서 [키 페어 생성]을 선택합니다. 키를 생성하면 private key가 윈도우에 다운 받아질 것입니다.
이제 다운 받은 pem 파일을 OpenStack을 설치한 Ubuntu 22.04로 전달합니다. 윈도우에서 PowerShell에서 scp 명령어를 통해 Ubuntu로 pem 파일을 전달합니다.
/home/jun에 파일이 잘 전달되었습니다.
jun 디렉터리로 직접 이동하지 못했던 이유는 stack이라는 User는 jun 디렉터리에 대한 접근 권한이 없었기 때문이었습니다. pem 파일에 접근할 수 없었기 때문에 ssh 접속 명령어 또한 정상적으로 동작하지 않았습니다. 그래서 저는 jun 디렉터리의 접근권한을 777로 변경하는 만행을 저지르고 다시 실행해보니 잘 동작하였습니다. (많은 조언 부탁드립니다.)
인스턴스 생성
다음은 내부 네트워크와 연결할 인스턴스를 생성합니다. [프로젝트] → [Compute] → [인스턴스]에서 [인스턴스 시작]을 선택합니다. 본 실습에서는 Test1_VM1이라는 이름으로 생성하도록 하겠습니다.
볼륨 크기를 20GB로 설정하고, 이전에 업로드한 이미지인 Ubuntu 18.04 LTS를 할당합니다. 그림은 이전 실습에 사용했던 그림이라 Ubuntu 22.04로 이미지가 올라와 있습니다. 이미지는 인프라 운영에 맞게 다른 이미지를 선택할 수도 있습니다.
Flavor을 m1.small로 설정합니다. 위에 볼륨 크기를 20GB로 설정한 이유는 m1.small의 디스크 총계가 20GB이었기 때문입니다. (적절한 볼륨 크기 설정 관련해서 아시는 분 댓글 부탁드립니다 ^^7)
네트워크는 이전에 생성한 Internal Network인 int-net로 설정합니다.
[프로젝트] → [네트워크] → [네트워크 토폴로지]에서 다음과 같이 Internal 네트워크에 인스턴스가 연결된 것을 확인할 수 있습니다.
Floating IP 설정
다음은 생성한 인스턴스에 Floating IP를 연결합니다. 인스턴스에 연결하는 방법은 크게 두 가지가 있습니다. Floating IP를 통해 연결하거나, 동일한 네트워크의 다른 인스턴스를 통해 연결하는 방법입니다.
[프로젝트] → [네트워크] → [Floating IP]에서 우측의 [프로젝트에 IP 할당]을 선택합니다. Pool을 이전에 생성한 External Network인 ext-net로 설정합니다.
생성 후 [작업]의 [연결]을 누른 후, 생성한 인스턴스인 VM1과 연결합니다.
floating IP로 인스턴스 접근
앞서 Ubuntu 22.04에 private key 파일은 scp로 전송하였습니다. 위치한 디렉터리는 /home/jun/.ssh입니다.
이제 floating IP로 ssh 접근하여 Test1_VM1 인스턴스에 접속해보겠습니다. 명령어는 다음과 같습니다.
ssh -i [ssh 경로] [User]@[Floating IP]
Test1_VM1의 이미지는 Ubuntu 18.04 LTS이였어서 초기 User은 ubuntu로 설정하였습니다. 접속이 안되는 경우에는 대시보드에서 직접 인스턴스의 콘솔로 들어가서 ssh의 status를 확인해야 합니다.
'보안 > OpenStack' 카테고리의 다른 글
[OpenStack] OpenStack과 ELK 연동 실습(feat. DevStack) (0) | 2023.05.16 |
---|---|
[OpenStack] Openstack API 토큰 발급 (0) | 2023.05.11 |
[OpenStack] 오픈스택과 핵심 요소 (0) | 2023.05.09 |
[OpenStack] 오픈 스택 설치 (0) | 2023.05.03 |