1. Instance 생성하는 방법
1. Local Disk 사용하는 방법
- Cloud image 를 glance 에 등록 -> 인스턴스 생성시 이미지를 기반으로 인스턴스 배포 ( 로컬 디스크를 사용 )
- 마이그레이션 불가능하고, 실제 퍼블릭 클라우드에서는 사용하지 않는다
이때, glance 에 저장된 이미지 를 Compute Node 에서 다운 받아서 Node 의 local Disk 를 인스턴스의 Disk 와 연결하는 방식이다. 이때 Volume 을 연결하면, 이는 Data 저장용 빈 Volume 이다. 부팅 소스는 이미지 내용이 풀어진 Local Disk 이다
2. Block Storage 사용하는 방법
- Cloud image 를 glance 에 등록 -> glance 에 등록된 이미지를 통해 볼륨 생성 -> 이 볼륨을 부팅 소스로 Instance 를 생성
- 마이그레이션 가능, 실제 퍼블릭 클라우드에서 사용
이때, glance 에 저장된 이미지를 Storage Node 에서 다운 받아서 Volume 을 생성하고, 이를 Block Device Mapping 을 통해 인스턴스의 Disk 와 연결해준다. 이때, Compute Node 는 Cpu 와 Ram 과 같은 컴퓨팅 자원만 제공해준다. 부팅 소스는 이미지 내용이 풀어진 Storage 의 Volume 이다
Instance 생성시 HyperVisor 호출 구조
- 사용자가 Control Node 에 인스턴스 생성 명령을 내리면, Nova Api 를 통해 Compute Node 의 HyperVisor 를 호출한다
- 외부 볼륨은 nova 가 만들고, 관리는 cinder 가 한다
2. 환경 준비
Key-Pair 생성 및 등록
ssh-keygen -q -f /root/.ssh/mykey.pem -N ""
openstack keypair create --public-key /root/.ssh/mykey.pem.pub mykey
- public key 를 등록하자
- 잘 등록되었다
Flavor 생성
openstack flavor create --id 6 --vcpus 1 --ram 1024 --disk 20 m1.xsmall
- 사양과 Flavor 이름을 지정하여 Flavor 를 생성하였다
Security Group 생성
openstack security group create permitdocker
openstack security group rule create --proto tcp --dst-port 22 permitdocker
openstack security group rule create --proto tcp --dst-port 80 permitdocker
openstack security group rule create --proto tcp --dst-port 443 permitdocker
openstack security group rule create --proto icmp permitdocker
openstack security group rule create --proto tcp --dst-port 2376 permitdocker
openstack security group rule create --proto tcp --dst-port 2377 permitdocker
openstack security group rule create --proto tcp --dst-port 7946 permitdocker
openstack security group rule create --proto udp --dst-port 7946 permitdocker
openstack security group rule create --proto udp --dst-port 4789 permitdocker
- docker cluster 구성을 위한 rule 추가
Image 등록
openstack image create "docker" --file ubuntu1804Docker.img --disk-format qcow2 --container-format bare --public
- Image 를 등록해주자
- 잘 등록되었다
Volume 생성
Volume 은 Data 저장용 빈 볼륨과 이미지를 통해 Os 가 설치된 볼륨을 생성할 수 있다
3. Instance 생성 및 설정
Instance 생성
- 부팅 소스는 볼륨이다!!! 이는 외부 Storage 의 Volume 에 있는 이미지가 있으므로, 이를 부팅 소스로 하는 것이다
- Key 선택 후 Instance 를 생성해주자
worker Instance 도 생성해주자
Floating Ip 연결
- 각 Instance 에 Floating Ip 를 연결해주자
4. Docker Cluster 형성
생성한 Instance 를 통해 Docker Cluster 를 형성하자
SSH 연결 확인
[root@localhost ~(keystone_admin)]
worker
[root@localhost ~(keystone_admin)]
manager
Docker Cluster init 및 Token 발급
[root@localhost ~(keystone_admin)]
Swarm initialized: current node (sq4b8ov83k2muwa78ce00lbnp) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token '토큰' 172.16.123.216:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
- manager Instance 에서 Docker Swarm Mode Cluster 를 초기화 하고, 가입용 Token 을 발급하자
Cluster 가입
ssh -i /root/.ssh/mykey.pem -l ubuntu 211.183.3.219 'sudo docker swarm join --token '토큰' 172.16.123.216:2377'
- Worker Node 를 Cluster 에 가입시키자
확인하기
[root@localhost ~(keystone_admin)]
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
sq4b8ov83k2muwa78ce00lbnp * manager Ready Active Leader 20.10.18
ootb3j6gi61ziqi6cbbpp4bez worker Ready Active 20.10.18
5. Object Storage
Object Storage 란
Object Storage 는 Server 의 위치와 상관없이, 계정 별로 일정 저장 공간을 제공할 수 있다. 이는 특정 Server 에 연결을 위한 목적의 Storage 가 아니다
Server 에게 제공해주는 것은 File Storage / Block Storage 가 있다
- File Storage 는 파일을 트리 형태로 관리한다
- Block Storage 는 구획을 나눠서 번호로 관리한다
- Onject Storage 는 Key : Value 로 관리한다
- OpenStack 에서는 Object Storage 를 Swift 서비스라고 한다
Container 생성 - DashBoard
Data 를 담기 위한 Object 를 Aws s3 에서는 Bucket 이라고 하며, Swift 에서는 Container 라고 한다
Public Access
<html>
<head>
<title> test </title>
</head>
<body>
<center>
<h2> testpage </h2>
</center>
</body>
</html>
- 위와 같은 index.html 을 생성하고, Container 에 업로드 하자
- Public Access 를 선택해주면 Link 가 생긴다
- 접속해주면, 위와 같이 Container 내용을 외부에서 확인할 수 있다
- 주소 끝에 원하는 파일 명을 입력하여 위와 같이 웹 상에 파일 내용을 출력할 수 있다
Container 생성 - Cli
[root@localhost ~(keystone_admin)]
- Container 를 생성해주자. 만드는 것은 무조건 create 이다
[root@localhost ~(keystone_admin)]
+---------------+
| Name |
+---------------+
| testcontainer |
| www |
+---------------+
wget https://github.com/twbs/bootstrap/releases/download/v5.2.1/bootstrap-5.2.1-examples.zip
unzip bootstrap-5.2.1-examples.zip
- BootStrap 파일을 다운 받고, 압축을 풀어주자
swift upload www blog
- swift 서비스를 이용해 www Container 에 blog 디렉토리를 업로드 하였다
- 해당 디렉토리가 존재하는 경로에서 명령을 실행해야 한다
- Container 의 Public Access 를 허용해주자
- 해당 Link 로 blog 의 index.html 을 주소창에 치면, 해당 페이지를 웹 상에서 확인 가능하다