오픈스택이란?
- 위의 설명을 읽어보면 그냥 우리만의 aws를 만드는것이다.
설치 전 설정
가상 컴퓨터 준비
cpu mem hdd
Control 2 4 100
Network 1 2 20
Compute 4 4 100
설치 전 설정
방화벽 및 네트워크 설정
/etc/hosts
- dns 서버에 물어 보기 전에 /etc/hosts를 먼저 봄.
- dns와 굳이 통신하지 않아도 열 수 있음.
- 윈도우에도 있음.
- C:\Windows\System32\drivers\etc
![](https://velog.velcdn.com/images/cis07385/post/6ad1defd-6415-41e1-aaee-c1a0c489d3a8/image.png)
3대 모두 설정
- 그래서 우리가 localhost로 들어갔을 때 자기 ip로 접속이 되는 것.
- vi /etc/hosts 파일 맨 마지막 줄에 다음 내용 추가
[control 노드 IP] control.[이니셜].com
[network 노드 IP] network.[이니셜].com
[comput 노드 IP] compute.[이니셜].com
- vi /etc/hostname 파일에 기존 내용 지우고 다음과 같이 수정
[노드 이름].[이니셜].com
-
dnf install network-scripts -y
-
systemctl disable firewalld
-
systemctl stop firewalld
-
setenforce 0
-
sed -i 's/=enforcing/=disabled/g' /etc/sysconfig/selinux
- 재부팅 되도 selinux 방화벽 해제 하게 설정하는 코드임.
-
systemctl disable NetworkManager
-
systemctl stop NetworkManager
-
systemctl enable network
-
systemctl start network
ssh 설정
- 실행을 control node에서 시키면 ssh로 network와 compute node로 접근함.
- 타 vm에서 ssh로 접근하면 password를 물어본다.
- 그래서 다운로드를 하다가 password를 물어보는거 때문에 끊길 수가 있다.
- 이런걸 막기 위해서 ssh 공개키와 비공개키를 생성한다.
Control 노드
- ssh-keygen
- 엔터 3번
- 이 공개키를 내가 접속할 서버에 저장해두면, 패스워드 없이 이 서버에 접속할 수 있다.
- ssh-copy-id root@control.[이니셜].com
패스워드 입력
- ssh-copy-id root@compute.[이니셜].com
패스워드 입력
- ssh-copy-id root@network.[이니셜].com
패스워드 입력
![](https://velog.velcdn.com/images/cis07385/post/aec433ed-cc2b-47db-99ff-38d2f872e247/image.png)
- 위의 과정을 다 하면 ssh 접속이 원격으로 가능하다.
- 물론 비밀번호 없이 접속이 가능하다.
- 공개키와 비공개키를 이용한 접속이다.
- 그리고 ip 주소가 /etc/hosts 에서 매핑해놨기 때문에 굳이 dns 서버에 묻지 않고 접속이 가능한 것이다.
설치
설치 프로그램 다운
3대 모두
- dnf config-manager --enable powertools
- dnf install -y centos-release-openstack-yoga
- dnf update -y
controll 노드만
- dnf install -y openstack-packstack
설치 파일 생성 및 수정
41 CONFIG_SWIFT_INSTALL=n
46 CONFIG_CEILOMETER_INSTALL=n
50 CONFIG_AODH_INSTALL=n
94 CONFIG_COMPUTE_HOSTS=[compute 노드 IP]
98 CONFIG_NETWORK_HOSTS=[network 노드 IP]
134 CONFIG_STORAGE_HOST=[compute 노드 IP]
521 CONFIG_CINDER_VOLUMES_SIZE=50G
1136 CONFIG_PROVISION_DEMO=n
- packstack --answer-file=/root/yoga-answer.txt 명령어로 실행
네트워크 설정
network 노드
- vi /etc/sysconfig/network-scripts/ifcfg-ens160
DEVICE=ens160
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=200.200.200.30
NETMASK=255.255.255.0
GATEWAY=200.200.200.2
ONBOOT=yes
- 위의 코드 대입 후, systemctl restart network
결과
control 노드
![](https://velog.velcdn.com/images/cis07385/post/98f6eb04-568f-4fbd-807b-eb99d32042c9/image.png)
- 전부 다 설정한 후, 가상환경 사설 ip/dashboard 로 접속을 하면 위의 그림과 같이 웹사이트로 접속이 된다.
- 사용자 이름은 admin이다.
- 비밀번호는?
![](https://velog.velcdn.com/images/cis07385/post/c672a8f8-7e49-4f6f-8f07-8eb5690b4198/image.png)
- /root 경로 아래에 위의 그림과 같이packstack... 하는 파일이 보인다.
- cat packstack... | grep ADMIN_PW 를 쓰면 비밀번호가 적혀있다.
- 복사해서 위의 웹사이트에 붙여넣기를 한 후 로그인을 하면?
![](https://velog.velcdn.com/images/cis07385/post/600509e0-beb8-4ab9-8de8-2c1b1f365901/image.png)
진짜 실습 시작
네트워크 추가
![](https://velog.velcdn.com/images/cis07385/post/a2fd210a-f44b-4282-996a-191eccc94771/image.png)
- 왼쪽 메뉴항목에 위의 그림처럼 클릭 후, 네트워크 생성
![](https://velog.velcdn.com/images/cis07385/post/69a6aa1b-0268-4538-be64-bb44a714001d/image.png)
- 위의 그림처럼 적어준다.
- 외부 네트워크를 만들어주는 것이기 때문에 이름을 external로 정했는데 아무거나 해도 상관없다.
- 프로젝트는 admin으로 설정해놓는다.
- 물리적인 네트워크는 외부 네트워크인 extnet이다.
![](https://velog.velcdn.com/images/cis07385/post/ee934ccf-4d5a-4a6f-aded-2f3b4ddc7e5d/image.png)
- 서브넷 이름도 아무렇게나 적어줘도 된다.
- 네트워크 주소는 현재 가상환경의 네트워크 대역을 적어준다.
![](https://velog.velcdn.com/images/cis07385/post/7dea1a77-7ed8-4a68-9de4-5af205e71913/image.png)
- pools는 범위이다. 31번부터 250번까지 할당.
- dns는 8.8.8.8 그리고 생성을 한다.
![](https://velog.velcdn.com/images/cis07385/post/9377b9be-6eee-41a5-83c4-34631a2c1add/image.png)
- 그리고 왼쪽 메뉴에 인증 -> 프로젝트칸에 들어가서 프로젝트 생성을 누른다.
![](https://velog.velcdn.com/images/cis07385/post/4ddedbc3-9809-45e8-a0b1-139d12e39c64/image.png)
![](https://velog.velcdn.com/images/cis07385/post/ecc1abd6-2662-4d5c-97cd-5e22024edbfc/image.png)
- 그리고 다시 왼쪽 메뉴에서 인증 -> 사용자로 가서 이 외부 네트워크를 사용할 사용자를 만들어 줄 것이다.
![](https://velog.velcdn.com/images/cis07385/post/f828dc74-26bb-4fbd-8797-cb9f173b5439/image.png)
- 사용자 이름은 본인이 쓰고 싶은거, 암호도 마찬가지
- 프로젝트는 우리가 위에서 생성한 프로젝트를 선택하고 역할을 __로 시작하는 member가 아닌 그냥 member를 선택하고 생성한다.
![](https://velog.velcdn.com/images/cis07385/post/e39d64dc-739f-4cfb-b415-4371ed96d090/image.png)
![](https://velog.velcdn.com/images/cis07385/post/75ca81a9-3980-4319-bc1c-84a1c6ceaf79/image.png)
- 뭔가 메뉴가 많이 줄어들었다.
- 관리자가 아닌 일개 개인 유저라 그렇다.
- 사용자 칸에 들어가면 본인밖에 없다.
![](https://velog.velcdn.com/images/cis07385/post/b895a95f-d08a-49ee-961d-b03e1fc5073e/image.png)
- 네트워크 토폴로지를 보면 관리자가 설정해준 외부 네트워크인 external이 있는걸 볼 수있다.
![](https://velog.velcdn.com/images/cis07385/post/6bba2da7-81e7-4475-83cc-3878451a57fe/image.png)
- 여기서 이제 내부 네트워크를 설정할 것이다.
- 이름은 아무렇게 한다.
![](https://velog.velcdn.com/images/cis07385/post/86893027-8484-4b4c-a9b2-cc00e3a11c99/image.png)
- 서브넷 이름도 마찬가지로 아무렇게 하고, 네트워크 주소는 가상환경 200.~~ ip를 쓰는 가상환경의 가상환경이기 때문에 주소를 자신이 쓰고 싶은거 아무거나 대역을 설정해서 써준다.
- 게이트웨이는 자신이 설정한 대역대에 맞게 설정해준다.
![](https://velog.velcdn.com/images/cis07385/post/fbfd6b10-1023-4892-bad0-601785946d41/image.png)
![](https://velog.velcdn.com/images/cis07385/post/370a9aa3-cf75-4978-a8b6-0a2180b2ea6f/image.png)
- 둘이 연결이 안되어있음.
- 외부랑 연결을 해줘야 다운 같은 것을 받기 때문에, 네트워크에서 가상의 라우터를 생성해줄것임.
![](https://velog.velcdn.com/images/cis07385/post/4fcca869-a102-4dc6-9915-ad0fc91158b0/image.png)
- 라우터 생성을 들어가서 이름을 아무렇게 설정해주고 외부 네트워크를 관리자로 생성한 네트워크를 클릭한다.
![](https://velog.velcdn.com/images/cis07385/post/50718409-1f37-42e1-a4a8-4f37714f47ac/image.png)
- 그러고 네트워크 토폴로지에 들어가면 위의 그림처럼 외부 네트워크에 라우터가 달린 것을 볼 수 있다.
![](https://velog.velcdn.com/images/cis07385/post/89e51013-8275-4295-9905-c8a0594a121f/image.png)
- 그리고 우리가 만들 router를 클릭해서 들어가자
![](https://velog.velcdn.com/images/cis07385/post/d0def1fe-6965-42f0-898e-e0f6cd4c2b17/image.png)
- 인터페이스를 누르고 생성을 눌러서 우리의 내부 네트워크와 연결을 해주자!
![](https://velog.velcdn.com/images/cis07385/post/bfd9a304-926a-454f-ab5a-219c1ff974dd/image.png)
![](https://velog.velcdn.com/images/cis07385/post/3656aa96-2dae-40ed-8c3d-7db369800012/image.png)
- 라우터가 외부 네트워크와 내부 네트워크를 연결해준 것을 볼 수 있다.
관리자 계정
![](https://velog.velcdn.com/images/cis07385/post/34859153-ef67-45c1-8a39-1faa4c873961/image.png)
- 관리자가 따로 설정을 해놔야 사람들이 쓸 수 있다.
![](https://velog.velcdn.com/images/cis07385/post/61c9fe7b-5266-4b3a-8e82-68bc2fc3202b/image.png)
- 새로운 flavor를 생성하자.
- 해당 사양만큼 쓸 수 있게 설정해주는 것이다.
![](https://velog.velcdn.com/images/cis07385/post/ef1114eb-8d69-4cd6-b7fc-54f828fdee70/image.png)
이미지 등록
![](https://velog.velcdn.com/images/cis07385/post/1abe84bd-e110-4fd6-8e83-6d972cdc13ca/image.png)
- 관리자가 이미지 탭으로 가서 이미지를 등록해주면 전체적으로 다 쓸 수 있는 이미지를 설정해 주는 것이다.
![](https://velog.velcdn.com/images/cis07385/post/89d87e0c-e638-46fb-8a4b-f81bb93ab92e/image.png)
- 위의 그림처럼 설정해준다.
- 파일은 이미지 파일 커스텀 설정 <- 해당 게시글에 들어가서 centos 7 을 세팅해서 가져오도록 하자!
![](https://velog.velcdn.com/images/cis07385/post/6efb83b7-2cca-4ac9-9edb-80a6025d27d7/image.png)
- 생성을 누르면 사이즈가 너무 커서 오류가 난다.
![](https://velog.velcdn.com/images/cis07385/post/181105a2-b96e-4fe4-9e45-271d27d73cd1/image.png)
- filezilla를 이용해 직접 이미지 파일을 root 폴더에 넣어준다.
- 물론 controll 노드에 넣어준다.
![](https://velog.velcdn.com/images/cis07385/post/d48d3c73-4fb4-4986-a937-a2cccebfc04a/image.png)
- source 명령어로 keystonerc_admin 실행
- 그러면 프롬포트가 바뀌게 된다.
- 이렇게 되면 명령어로 클라우드를 관리할 수 있다!!
- openstack image create --disk-format qcow2 --public --file ./centos7.qcow2 centos7
- 위의 명령어를 입력해서 image를 쉘에서 직접 만들어주자.
![](https://velog.velcdn.com/images/cis07385/post/581326b1-7afb-4383-89a0-5cb3416a1bc6/image.png)
- 그 후, 대쉬보드에 들어가서 이미지를 확인하면 만들어져있는것을 확인할 수 있다.
인스턴스 생성 (일반 사용자)
![](https://velog.velcdn.com/images/cis07385/post/7374f52d-aa69-497a-baca-9760a7ea2e9f/image.png)
- admin 계정을 로그아웃 하고 아까 만든 사용자 계정으로 로그인 해서 인스턴스 생성을 누르자.
이미지 선택
![](https://velog.velcdn.com/images/cis07385/post/791e7dab-4862-4920-805f-c1b753cdf242/image.png)
- 소스는 아까 우리가 올린 centos7을 위로 올려준다.
볼륨 크기 선택
![](https://velog.velcdn.com/images/cis07385/post/4ce31a61-9df6-49d2-a4ec-10af83dd1a90/image.png)
- flavor도 아까 만든 xsmall을 위로 올려준다.
네트워크 선택
![](https://velog.velcdn.com/images/cis07385/post/d4f717f5-95db-4f28-bf44-ef8cb931a4e9/image.png)
키 페어 생성
![](https://velog.velcdn.com/images/cis07385/post/3b7cdb94-7deb-44d4-88c0-e009f4b05cf6/image.png)
- 키 페어는 ssh 키로 생성해준다.
- 복사해서 메모장으로 로컬에 저장해놓도록 하자.
- aws에서는 ppk와 pem이 있었는데, 둘다 암호를 저장해둔건데 생긴게 다른 것이다. ppk가 putty 클라이언트에서 사용하고, pem은 openssh 클라이언트 프로그램에서 사용하는 키 형식이다.
- openstack에서는 pem으로 줘서 우리가 ppk로 변환시켜줘야한다.
키 변환
![](https://velog.velcdn.com/images/cis07385/post/fc5a6d47-55cf-460a-9cb2-d42ede63be45/image.png)
![](https://velog.velcdn.com/images/cis07385/post/0f6af2ad-257c-4ec4-960f-551f8ffbf64b/image.png)
![](https://velog.velcdn.com/images/cis07385/post/02a770b9-b490-4a10-8277-599dda5c28e0/image.png)
- 오른쪽 밑에 확장자를 All Files로 변경 후 저장해둔 key_pair 파일 클릭
![](https://velog.velcdn.com/images/cis07385/post/0203c3d3-17d0-4a65-860c-c92131fe6877/image.png)
- save priavte key 클릭 후 로컬 컴퓨터에 저장
![](https://velog.velcdn.com/images/cis07385/post/54c8e95c-3b92-4282-9139-03186ec0ff99/image.png)
- ppk 형식으로 저장된 것을 확인할 수 있다.
인스턴스 생성
![](https://velog.velcdn.com/images/cis07385/post/5b717cea-131d-41bf-a494-82a9cb0e491a/image.png)
- 일단 인스턴스 생성을 누르자.
- 엄청 느리다.. 다 될 때까지 기다려야 한다.
외부 IP 할당
![](https://velog.velcdn.com/images/cis07385/post/c4971718-25f6-4325-9f3e-a6c82dce0aaa/image.png)
- 생성된 인스턴스 가장 오른쪽에 Actions가 있다. 아래 화살표 클릭
- 유동 IP 연결 -> +버튼 -> IP 할당 클릭 -> 연결
방화벽 설정
![](https://velog.velcdn.com/images/cis07385/post/3378985e-f16f-4e74-b945-248284395866/image.png)
![](https://velog.velcdn.com/images/cis07385/post/4a2d88f5-aa1d-41bf-bff0-f73e4b5846ed/image.png)
- 가장 오른쪽에 규칙관리 클릭
- 그리고 규칙 추가 클릭
![](https://velog.velcdn.com/images/cis07385/post/55ba1791-e94e-4850-9371-1083c4ce864d/image.png)
putty로 접속
- 우리가 생성한 key_pair의 ppk 파일이 최신 버전이여서 가장 최신버전의 putty를 설치해야 한다.
![](https://velog.velcdn.com/images/cis07385/post/e899bae7-8fd0-4af7-a509-b3c4e4c8a65e/image.png)
- Connection -> SSH -> Auth -> Gredentials에 들어간다.
![](https://velog.velcdn.com/images/cis07385/post/8fdf1f33-9a44-4c79-b180-18e730d39232/image.png)
-
private key 파일을 넣는 곳에 내 로컬에 저장되어 있는 ppk파일을 불러온다.
-
그 후, 위에서 할당한 ip 주소를 session에 넣고 접속하면 우리가 생성한 인스턴스로 접속이 된다!