openstack network create mynet1
- 네트워크를 생성해주자
openstack subnet create \
> --subnet-range 172.16.123.0/24 --gateway 172.16.123.1 \
> --network mynet1 --dhcp --dns-nameserver 8.8.8.8 \
> mysubnet1
- 서브넷을 생성해주자. 서브넷 범위, 게이트웨이 주소, 연결할 네트워크, dhcp 사용 여부, dns nameserver 주소를 지정해주었다
- 생성한 서브넷의 상세 정보를 확인하자. network_id 는 mynet1 의 id 와 동일하다
openstack router create myrouter1
- 라우터를 생성해주자
openstack router add subnet myrouter1 mysubnet1
- 생성한 라우터에 생성한 서브넷을 추가하였다
- 잘 추가되었는지 확인하자
- 네트워크 탭에 들어가서 생성을 누르자
- 네트워크 이름을 지정하고, 공유를 선택하자
- 서브넷을 설정하자
- 라우터를 생성해주자
- 생성한 라우터에 들어가서 인터페이스 추가를 누르자
- 추가할 서브넷을 지정하고 제출하면 된다
- 잘 추가되었는지 확인하자
- 지금까지 구성한 환경을 확인하자
- Key-Pair
- flavor
- image 등록
[root@localhost ~(logged)]# ssh-keygen -q -f ~/.ssh/gildong.pem -N ""
[root@localhost ~(logged)]# ssh-keygen -q -f ~/.ssh/chulsoo.pem -N ""
[root@localhost ~(logged)]# ls ~/.ssh
chulsoo.pem.pub gildong.pem.pub
chulsoo.pem gildong.pem
- key-pair 두 개를 생성하고 확인하자. pub 이 Public Key 이다. 이 Public Key 는 OpenStack 에서 보관해야 하기에 생성한 Key 를 이용하여 OpenStack 에 Key 를 생성해야 한다
[root@localhost ~(logged)]# openstack keypair create --public-key ~/.ssh/gildong.pem.pub gildongkey
[root@localhost ~(logged)]# openstack keypair create --public-key ~/.ssh/chulsoo.pem.pub chulsookey
- 만들어진 key 를 통해 OpenStack 에서 Public Key 를 생성하였다
- Key 가 잘 생성되었다
- 이번엔 DashBoard 에서 Key-Pair 를 생성해보자
- 생성시 Private Key 는 다운로드 된다
openstack flavor create --id 6 --vcpus 1 --ram 1024 --disk 20 m1.xsmall
- Flavor 를 생성해주자. vcpu / ram / disk / id / name 을 지정해주자
- 잘 생성되었다
출처 : http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-2003.qcow2.xz
- wget 으로 이미지를 다운 받자
- 압축을 풀어주자. 압축 해제시 용량이 858783744 인지 확인하자
- Container 의 format 은 Baremetal 이다. 이는 이 이미지로 배포하는 것이 BareMetal 방식으로 배포된다는 것이다. 이는 Container 가 아니라 인스턴스이기 때문이다. 인스턴스나 가상머신은 가상 자원 위에 OS 가 올라가므로 자원 바로 위에 OS 가 올라가기에 bare 인 것이다
- 즉, bare 옵션은 VM 이미지를 위한 컨테이너가 존재하지 않는다는 것이다. 컨테이너는 OS 가 없기 때문이다
- 해당 Image 를 다른 사용자와 공유가 가능하게 하려면 Public 을 의미하는 pub 옵션을 넣어준다
- 잘 등록되었다
- 이미지는 Public 이미지와 Private 이미지로 나뉜다. Public 이미지는 CSP 에서 올린다
- 인스턴스에서 기본 이미지는 Disk 이다. 여기에 추가한 Data 가 있을 때, 이를 다시 추가하는 것은 힘든 작업이다. 이를 간단히 하기 위해, Data 가 추가된 인스턴스의 Storage 를 이미지로 만들어서 배포할 수 있다
- 이 이미지에 AutoScale 을 적용하여 필요에 따라 해당 이미지를 통해 인스턴스를 자동으로 배포하여 인스턴스 수를 늘리거나 줄이게 할 수 있다. 이는 이미지를 통해 배포되는 인스턴스에 대한 AutoScale 이다
- 보안 그룹은 인스턴스 단위로 보안 정책을 수립한다. 일반적으로 Inbound 와 Outbound 중 주로 Inbound 를 작성한다 ( 서버로 들어오는 것 = Inbound )
- Outbound 는 기본적으로 모두 허용하는 것으로 설정된다
- Ipv4 / Ipv6 타입에 대해 들어오는 것과 내보내는 것 모두 허용되어 있다
- 보안 그룹을 하나 생성하자. 이름만 지정해주면 된다
- 규칙 관리를 눌러주자
- 규칙 추가를 해주자. CIDR 는 출발지를 말한다. 이는 ICMP ( PING ) 프로토콜에 대해 any ( 모든 주소 ) 에서 들어오는 것을 허가하는 것이다
- mysql 에 대해 들어오는 것을 허가하는 규칙을 추가해주자
- 사용자 정의 TCP 규칙으로 TCP 프로토콜에 대해 8080 포트에 들어오는 것을 허가해주자
- 보안 그룹을 만들자
openstack security group rule create --proto tcp --dst-port 80 permitweb
openstack security group rule create --proto tcp --dst-port 443 permitweb
openstack security group rule create --proto tcp --dst-port 22 permitweb
- 규칙을 추가하자. 각각 tcp 프로토콜에 대해 해당 포트로 들어오는 것을 허용하는 규칙을 생성한 보안그룹에 추가하였다
openstack security group rule create --proto icmp permitweb
- Icmp 프로토콜에 대해서도 들어오는 것을 허가하는 규칙을 추가하자
- 잘 추가됬는지 확인하자. 아직 허가할 출발지 Ip 는 설정하지 않았다
- 출발지가 211.183.3.0/24 대역에서만 SSH 연결이 가능하게 규칙을 추가하자. 위에서 Cli 상에서 추가한 22 포트에 대한 규칙은 삭제하자
openstack server create --flavor "flavor 이름" --image "image 이름" --security-group "SG 이름" --key-name "Public key 이름" --nic net-id="network id or $(명령 결과)" "인스턴스 이름"
- 인스턴스 배포 코드는 위와 같은 형식이다
openstack server create --flavor m1.xsmall --image CentOS7 --security-group permitweb --key-name gildongkey --nic net-id=$(openstack network list | grep mynet1 | gawk '{print $2}') CentOS1
- 우리가 생성한 요소들을 가지고 인스턴스를 배포하자
- 잘 배포되었는지 확인하자
- 위의 버튼을 통해 콘솔을 열어서 들어갈 수 있다
- 인스턴스 시작을 눌러주자
- 이름과 개수를 지정해주자
- 새로운 볼륨은 생성하지 않으며, 부팅 소스를 이미지로 선택하고, 사용할 이미지를 선택하자
- Flavor 를 선택하자
- Network 를 선택하자
- 보안 그룹 선택
- 사용할 Key-Pair 를 선택하고, 인스턴스 시작을 누르자
- 잘 배포되었다