클라우드 컴퓨팅 서비스 | Google Cloud
데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.
cloud.google.com
GCP 프로젝트 생성
우측 상단의 [무료로 시작하기] 버튼을 클릭한다.
개인정보 입력 - 카드 정보 입력 등... 하면
완료 - 건너뛰기
상단의 [My First Project]를 클릭한다.
우측 상단의 [새 프로젝트]를 선택한다.
프로젝트 이름을 지정하고 [만들기] 버튼을 누른다.
방금 만든 프로젝트를 클릭한다.
[IAM 및 관리자] 를 클릭한다.
상단의 [+추가] 버튼을 누른다.
주 구성원으로 일반 유저로서 사용될 gmail을 추가한다.
* 역할
뷰어 - 읽기 권한만
소유자 - 루트 권한과 거의 동일함
탐색자 - GCP 리소스를 탐색할 수 있음(별거아님)
편집자 - 사용자들을 지우는 권한은 없음, 리소스를 확인, 생성, 업데이트, 삭제한다.
편집자를 선택하고 확인 한다.
firefox에서 GCP를 user계정으로 다시 접속해본다.
그리고 상단의 [프로젝트 선택] 을 클릭하면, 아까 생성했던 프로젝트가 나타나는 것을 볼 수 있다.
프로젝트를 클릭한다.
사이드바에 [결제]를 클릭하면 이런 창이 뜬다.
[연결된 결제 계정으로 이동] 을 클릭한다.
user 계정으로 남은 크레딧을 확인할 수는 없다.
두 계정의 결제 계정의 아이디가 같다.
GCP 컴퓨트 서비스
- VM = 인스턴스
- GCE = Google Compute Engine , 구글 인스턴스를 만들어 주는 서비스
- Docker, Kubernetes에 특화되어 있다.(특히, Google은 Kubernetes의 개발사임)
- Container-Optimized OS 공개 이미지를 실행하는 인스턴스에서 자동으로 시작되는 Docker 컨테이너를 배포할 수도 있다. => 도커 컨테이너가 미리 설치돼서 나오는 OS(Docker Engine)
CPU, ram, SSD, OS, NET를 어떻게 Provisioning하는가
머신 유형
[영어+숫자] 로 이름이 되어 있음 => 각각 용도/세대 수
- ex) AWS에서의 t2.micro
* CPU, RAM => Compute Resource(컴퓨트 리소스, 컴퓨터의 자원)
인스턴스 만들기
사이드바에서 [Compute Engine] 클릭, [사용]을 클릭한다.
로딩이 엄청 오래 걸린다.
상단의 [인스턴스 만들기] 를 클릭한다.
리전 - 서울로(도쿄, 오사카 아래에 있음)
영역 - a
머신 유형 - e2-micro(vCPU의 최소 개수가 2개이기 때문에 더 줄일 수 없음)
* 컨피덴셜 VM 서비스 - 보안 강화
컨테이너 - 도커를 설치한 OS를 이용할 수 있게끔 한다.
부팅 디스크 - [변경] 클릭
운영체제를 CentOS로 변경하고 -[선택] 클릭
ssh, web server로서 80포트 오픈, 내가 접속하는 게 가능하기 위해서 [모든 Cloud API에 대한 전체 액세스 허용]으로 바꿔야 한다.
방화벽 - [HTTP 트래픽 허용] 을 선택
네트워킹을 클릭한다.
네트워크 인터페이스
* 네트워크 서비스 등급
- 프리미엄 : 서울 리전이 아닌 다른 국가에서도 빠르게 접근 가능
보안 탭을 연다
- VM 액세스 - 어떻게 VM에 엑세스할 것인지에 대해 정하는 단계.
이 설정을 통해 Moba Xterm 말고 다른 방식으로 연결할 수도 있다.
나는 Moba Xterm으로 접근할 것이기 때문에 [수동으로 생성된 SSH 키 추가]를 이용해서 어제 생성한 키를 넣는다.
id_rsa.pub 파일을 메모장으로 연 뒤, 복사 -> SSH 키 1 에 붙여넣기 한다.
*가장 하단의 @앞의 r2com은 내 컴퓨터의 이름이다.
나중에 Moba Xterm에서 ssh로 접속할 때 specify되는 user의 이름이다.
관리 탭에서 시작 스크립트를 입력한다.
[만들기] 클릭
그리고 외부 IP로 접속하면 접속이 되어야 하는데? 접속이 안된다.
moba Xterm에서 직접 수정한다.
MobaXterm으로 GCP 접속하기
* private key로 pem키를 선택한다.
똑같은 명령어를 sudo를 붙여 실행하면 된다.
그리고 public IP로 접속하면
잘 뜬다.
혹은 GCP에서 제공하는 콘솔을 이용할 수도 있다.
[연결]의 SSH를 클릭한다.
보안이 좋지만, 제약사항이 많기 때문에 권장되지는 않는다.
selinux, firewall 가 있다.
포트번호 바꾸기
configuration file을 수정해서 포트 번호를 바꿔본다.
이 파일은 /etc/httpd/conf 안에 있다.
sudo vi /etc/httpd/conf/httpd.conf
:set number로 명령어줄 앞에 숫자를 보이게 하고, 포트 번호를 8080으로 바꾼다.
sudo systemctl restart httpd
어떤 포트가 오픈되어있는지 확인한다.
아까 수정한 8080가 보인다
방화벽 해제하기
기본 값인 80에서 8080으로 변경하였으므로 [public ip]:8080으로 접속해야 한다.
하지만 다시 접속하려 하면 접속되지 않는다.
방화벽을 해제한다.
방화벽을 stop 시키고 다시 접속하려고 해도 안된다
*** 참고) firewall이 눈에 보이는 것은 active상태이지만, 실제로는 아무것도 하고 있지 않는다.(이전의 AWS, Azure와 달리 firewall이 미리 설치되어있다)
centos 방화벽 변천사!
netfilter => iptables => firewalld 로 보완되었고, 우선순위는 반대로이다.
iptables는 OS 수준의 방화벽이다.
firewalld보다 iptables가 더 우선순위가 높기 때문에, firewalld이 All block 상태여도 iptables가 All Accept 상태이면 차단이 되지 않는다.
firewalld를 껐다 켠 뒤, iptables -L을 쳐 보면, ALL ACCPET 상태임을 알 수 있다.
프로젝트 홈 창으로 들어가서(그냥 Compute Engine을 나오면 된다) 사이드바의 [VCP 네트워크] - [방화벽] 으로 간다.
AWS의 보안그룹과 유사함.
8080이 리스트에 없으므로, 추가한해야 한다.
상단의 [방화벽 규칙 만들기]를 클릭한다.
우선순위는 중복이어도 상관 없다.
트래픽 방향은 바깥 -> 안쪽 이므로 [수신](=inbound, ingress) 이다. * [송신] (=outbound, outgress)
대상 - [지정된 대상 태그]를 선택한 뒤, 대상 태그 - web01로 한다.(* web01 인스턴스를 지칭하는 게 아님)
0.0.0.0/0 <- anywhere, 모든 IP에서 접속 가능하도록 세팅한다.
프토로콜 및 포트 - tcp를 체크한 뒤, 8080을 입력한다.
[만들기] 를 클릭한다.
그리고 설정한 방화벽 적용을 해야 한다.
Compute Engine - VM - web01로 들어간다.
상단에 [수정]을 클릭한다.
스크롤을 내리면 [네트워크 태그]가 있다.
여기에 아까 방화벽 설정하면서 쓴 'web01' 을 입력하고, 저장한다.
[내 퍼블릭 IP]:8080에 접속하면 잘 뜬다.
*GCP에서 로드밸런싱을 하려면 같은 에리어에 둬야 한다. 같이 a로 지정한다.
새 인스턴스 web02를 만든다.
리전 - 서울, 영역- a
머신 유형 - micro
이미지 - 데비안
액세스 범위 - 모든 Cloud API에 대한 전체 액세스 허용
방화벽 - HTTP 트래픽 허용 체크
하단의 [네트워킹, 디스크, 보안, 관리, 단독 테넌시]를 클릭한다.
관리 - 자동화 - 자동 스크립트 에 명령어를 추가한다.
Debian은 Ubuntu와 사용 방식이 같으므로, Ubuntu와 같은 방식으로 스크립트를 작성한다.
web01과 달리, SSH를 추가하지 않는다.
web02의 퍼블릭 IP로 접속해본다.
잘 뜬다.
Moba Xterm으로 접속하기
web01과 달리, public Key를 설정하지 않았기 때문에 web02 인스턴스에 접속할 수 없다.
[설정] - [메타데이터] 로 간다.
[SSH 키] 탭으로 간다.
가운데 [SSH 키 추가]를 클릭한다.
pub키를 복사-붙여넣기 하고, [저장]한다.
이렇게 키를 추가하게 되면, VM을 생성할 때마다 매번 키를 추가할 필요 없이 위의 공개 키를 활용할 수 있다.
다시 접속해본다
접속이 잘 된다.
web01에서, 8080포트를 다시 80포트로 바꾼다.
http를 재시작 한다.
포트를 확인해본다.
web01에 :8080을 지우고 다시 접속해보면 잘 접속된다.
Load Balancing(부하분산) 구현하기
사이드바에서 Compute Engine 로 들어간다.
인스턴스 그룹으로 들어가서, web01과 web02를 묶어 준다.
GCP에서 여러 가용 영역을 지정하게 되면 LB와 오토 스케일링 또한 할 수 있게 된다. 하지만 GCP에 대한 의존성이 증가한다.
나는 LB만 할 것이기 때문에 좌측 탭에 [New unmanaged instance group]를 선택한다.
- 위치 - 리전 - 서울
- Network - default
-Select VMs를 하기 위해선 여러개의 VM을 선택해야 하는데, 영역을 하나밖에 설정 못하므로, 한 가용영역에다가(a) 둬야 한다. (그래서 GCP에서 LB를 할 때 여러 가용영역에다 둘 수 없는 것이다.)
80번 포트를 매핑한다. (bk는 백엔드의 줄임말)
후 왼쪽 하단의 [만들기] 버튼을 누른다.
검색창에 [네트워크 서비스]를 검색해서 클릭한다.
바로 [부하 분산] 탭으로 간다.
[부하 분산기]를 클릭한다.
이 중 [HTTP(S) 부하 분산]을 클릭한다.
[계속] 클릭
(slb는 server load balancer의 약자)
- [백엔드 서비스 만들기]를 클릭한다.
인스턴스 그룹으로 instance-group-1을 클릭하면 이런 창이 뜬다.
미리 만들었던 포트를 사용하게 된다. 그러면 자동으로 80포트가 설정된다
끝난 이후에는 꼭 하단의 [완료] 버튼을 눌러야 한다.
[기존 포트 이름 사용] 클릭
(svc는 서비스의 약자...)
하단의 [상태 확인 생성] 을 클릭한다.
프로토콜은 HTTP로 변경한다.
- 확인 간격 : 5초마다 한번씩 web01과 web02에 접속 시도, 5초를 넘어가면 fail
- 2번 연속으로 200ok라는 신호를 내보내면 성공 / 2번 연속으로 404 fail 신호를 보내면 실패
[저장]을 클릭한다.
[만들기]를 클릭한다.
[확인]을 클릭한다.
[프런트엔드 구성]을 클릭한다.
프리미엄 - 전 세계 단위로 접속할 수 있음
표준 - 국내 사용자들만
하단의 [완료]를 클릭한다.
my-slb를 클릭해본다.
IP를 복사해서 접속하면 web01과 web02가 번갈아서 뜬다.
health check까지 어느 정도의 유효시간이 필요하다
GCP 스토리지 서비스
- 객체 스토리지(Cloud Storage) : URL, 링크로 저장. 내려받을 땐 wget ~.jpg
( AWS : S3 / Azure : blob)
- 블록 스토리지(Persistent Disk) : OS, App이 설치되는 공간 (Win에서 C드라이브와 같은 역할). 4096byte(4K) 단위
( AWS : EBS / Azure : Disk)
- 파일 스토리지(Filestore) : NFS, 공유 폴더...
( AWS : EFS / Azure : SMB(Server Message Blck = Samba))
객체 스토리지(Cloud Storage)
검색창에 Cloud Storage(혹은 객체)를 입력한다.
[버킷 만들기] 를 클릭한다.
Multi-region(=multi-region) : 여러 지역에 데이터를 저장하기 때문에 안정적이다. 성능이 상승하지만 그만큼 비용도 상승하게 된다.
차선책으로 Dual-region을 사용할 수도 있다...
Standard에서 Archive 로 내려갈수록 공간 대비 비용이 저렴해진다.(비용은 낮아지는 만큼 공간도 작아진다.)
Archive 는 Glacier와 같은 맥락임
[이 버킷에 공개 액세스 방지 적용] =>파일이 쉽게 노출되어서 outbound traffic이 발생할 수 있으므로 이를 방지한다.
객체 버전 관리 - 불안정한 새로운 버전이 overwrite하지 않도록 미리 백업하는 방식
버킷을 클릭해본다.
[폴더 만들기]를 클릭해서 files라는 폴더를 만든다.
files 클릭해서 폴더 안으로 들어간다.
준비된 gcp.tar파일을 업로드한다.
[권한] 탭으로 간다.
모든 곳에서 access 가능하게 하려면, [추가]버튼을 이용해서 추가해본다.
특정 사용자를 입력해서 특정 사용자만 접속할 수 있게 할 수도 있지만, 'allUsers'를 입력하면 모든 사용자가 접근 가능하게 된다.
역할 선택 - 현재 사용중 - 저장소 기존 개체 리더
를 선택 후 [닫기]를 클릭한다.
[공개 액세스 허용] 해야 저장이 가능해진다.
저장한다.
다시 [객체] 탭으로 와서 우측 상단의 [새로고침] 탭을 눌러보면
공개 액세스에 [인터넷에 공개]가 표시된다.
URL 복사를 누른다.
그 다음 Moba Xterm으로 간다.
web01에 wget 명령어가 없으므로 설치해준다.
복사한 URL을 이용해서 tar파일을 다운로드 받는다.
sudo tar -xvf gcp.tar -C /var/www/html
해준 뒤 web01 사이트에 다시 들어가본다.
추가 디스크 만들기
Compute Engine - 디스크 - [디스크 만들기] 클릭
web01의 영역이 a이기 때문에, 똑같이 a로 지정해준다.
[스냅샷 일정]을 선택하면 매일 같은 시간(보통 퇴근 시간)에 스냅샷을 만들 수 있다.
[만들기]를 클릭한다.
생성된 add를 web01에 추가해야 한다.
VM 인스턴스에 들어가서 web01을 클릭한다.
스크롤을 내려서 [저장 용량]의 [추가 디스크]를 보면 없음으로 표기되어 있다.
또한 moba Xterm에서 lsblk를 쳐보면 추가된 게 없다.
상단에 [수정]을 클릭한 뒤, [기존 디스크 연결]을 클릭한다.
[저장]을 클릭한다.
나온 뒤, [저장]을 클릭한다.
디스크를 포맷한다.
- mkfs : 파티션한 하드디스크를 포맷할때 사용.
- -t : 파일시스템의 형식을 지정한다
- ext4 : 형식(타입)
마운트 한 뒤, 확인해본다.
'Public Cloud > GCP' 카테고리의 다른 글
GCP - CLI 로 사용하기 (0) | 2022.07.05 |
---|---|
GCP 실습 2 (0) | 2022.06.11 |