220609

HyeonKi Jo·2022년 6월 9일
0
post-thumbnail

복습

  • 객체 스토리지(Bucket)
    • URL 링크로 파일을 다운로드 받을 수 있었다. (wget 사용가능)
  • 블록 스토리지(Persistent Disk)

Cloud Filestore

  • GCP의 파일 스토리지 기능이다.
  • AWS EFS, Azure files, NFS , SMB(Samba)와 같다.

Cloud Filestore

  • Cloud Filestore IP를 사용설정 해야한다.

인스턴스 만들기

  • 검색창에서 filestore를 검색하여 Cloud Filestore에 들어간다.
  • 이름 : cocudent220609
  • 인스턴스 유형 : 기본
  • 인스턴스 유형 비교표이다.
  • Enterprise는 리전을 다수에 영역을 분산하여 고가용성을 목표로 한다.
  • asia-northeast3가 서울이다.
  • 파일 공유 이름: share, 폴더이름을 share로 하겠다.
  • 또, 액세스 제어 설정을 여기서 할 수 있다.
  • 파일스토어 인스턴스가 생성중이다.
  • 생성되면 오른쪽 점x3을 눌러 마운트 지점 복사를 눌러준다.
  • 10.206.243.74:/share

VM 인스턴스 만들기 (web01)

  • Firestore의 인스턴스를 사용해보기위해 VM인스턴스를 2개 만들어야 한다.
  • ComputeEngine항목으로 이동한다.
  • 이름 : web01
  • 리전 : asia-northeast3 (서울), 나중에 팀프로젝트시에는 여러가지 대륙의 리전을 사용해보는 것도 좋다.
  • 머신 시리즈 : E2
  • 머신 유형 : e2-micro
  • 부팅 디스크 : CentOS7
    • 커스텀 이미지 : 내가 생성한 이미지를 사용할 수 있다.
    • 스냅샷 : 기존에 백업해놓은 스냅샷 사용
    • 기존 디스크 : 기존에 보유한 디스크(볼륨), 인스턴스를 지웠는데 디스크가 살아있다면 그대로 인스턴스로 다시 만들 수 있다.
  • 관리 -> 자동화 -> 시작 스크립트, 에서 httpd를 설치해준다.
#!/bin/bash
yum install -y httpd
systemctl enable --now httpd
  • 방화벽에서 HTTP (80)포트 열어주는거 잊지마록~
  • 만들기

VM 인스턴스 확인 (web01)

  • 잘 접속되었다.
  • 마운트가 잘 안된다.
  • fstab을 모른다는 것이다.
    • sudo yum install nfs-utils : nfs-utils로 fstab과 nfs를 설치해줘야 한다.
    • 그냥 마운트는 되지만, 인터넷에서 연결되는 smb의 마운트는 몰랐기 때문에 nfs-utils를 설치해야 한다.
    • Ubuntu에서는 nfs-common으로 설치해야 한다.
  • 마운트가 잘 되었고, /mnt에 잘 마운트 된 것을 볼 수 있다.
  • MobaXterm을 이용해 gcp.tar를 넣고, filestore에 복사해준다.
  • sudo tar -xvf gcp.tar -C /var/www/html/ 로 gcp.tar파일을 압축 해제해준다.
  • 이제 ip을 알아내고, 웹브라우져로 접속해야한다.
    • curl ipconfig.io IP반환받기
    • 잘 접속된다.

web02 만들기

  • 이름 : web02
  • 리전 : asia-northeast3-a
  • 머신 구성 : e2-micro
  • 컨테이너
    • DEPLOY CONTAINER : 내가 지금 만드는 VM인스턴스에 컨테이너를 만들 수 있는 컨테이너 이미지를 배포한다.
    • 컨테이너 이미지 : halilinux/homepage:v1.0 : 강사님의 도커허브에 올려져있는 도커 이미지이다.
    • 아직 도커는 안들어갔으니, 기본값으로 설전한다 선택버튼 클릭
    • 컨테이너가 올려졌다.
    • 아래 부팅 디스크가 기존Debian에서 Container-Opimized OS로 바뀌었다.
    • 도커 컨테이너 실행을 위해, 도커가 설치된 OS이미지이다.
  • 액세스 범위 : 모든Cloud API에 대한 전체 액세스 허용
  • 방화벽 : HTTP 트래픽허용
  • 관리에 자동화 스크립트를 설치하지 않아도 된다. 이미 도커 이미지에 존재한다.
  • 만들기 클릭
  • 잘 접속된다.
  • 도커 이미지파일에 html코드와 토끼 이미지, 웹서버까지 설치되어있었다.

5. GCP 이미지 서비스

  • 운영체제 이미지를 사용하여 인스턴스의 부팅디스크를 만들 수 있다.
  • 정상상태VM의 부팅디스크을 이미지로 만들어 VM에 문제가 생겼을 때, 빠르게 복원, 복사, 복제하기위해 사용한다.
  • 이미지 생성 -> 이미지 사용 -> 이미지 재생성

VM인스턴스를 만드는 4가지 방법

  • 우리가 매번 작업했던 새 VM인스턴스
  • 템플릿에서 VM인스턴스로 만들 수 있다. 이미지보다 더 빠르게 만들 수 있다.
  • 머신 이미지에서 VM 인스턴스를 만들 수 있다.
  • Marketplace에서 바로 사용할 수 있는 솔루션을 구할 수도 있다.

커스텀 이미지

  • 템플릿을 만들 떄 사용한다.
  • 그대로 만들기를 눌러준다.
  • 다양한 이미지들이 벌써 존재한다.
  • 이미지 만들기로 새로운 이미지를 만들어 본다.
  • 커스텀 이미지를 만들때의 소스를 다양하게 선택할 수 있다. 디스크와 스냅샷을 선택할 수 있고, 이미지는 기존 커스텀이미지를 불러올 수 있다.
  • web02는 도커에 이슈가 있더 web01로 만들어준다.
  • 그러나 디스크를 소스로 하게되면, 디스크가 운영중이라면 멈추고 이미지를 만들어야 한다.
  • 이렇게 되면 소스를 디스크가 아니라 스냅샷으로 해야겠다.
  • 이름과 소스, 위치를 바꿔주고 만들기를 눌러준다.
  • 생성되고 있다.
  • 템플릿은 수평적확장에서도 쓰인다. AutoScailing할 떄 템플릿으로 수평적확장을 진행할 수 있다.

이어서 템플릿 만들기

  • 인스턴스 템플릿 만들기로 들어간다.
  • 머신 유형을 e2-micro로 만들어준다.
  • 부팅 디스크의 공개 이미지가 아니라 커스텀 이미지를 클릭하면 방금 생성한 커스텀 이미지를 찾을 수 있다.
  • 액세스 범위, 방화벽을 설정해준다.
  • 이미지에 세팅이 되어있기 때문에 사용자 명령어를 넣어줄 필요 없다.
  • 잘 생성되었다.

템플릿으로 VM인스턴스 만들기

  • 템플릿은 우리가 설정한대로 자동으로 복제할수 있도록 되어있다.\
  • 그러나 리전이 설정되어있지 않아 리전은 바꿔줘야 한다.

머신 이미지

  • 디스크나 볼륨(특히 root디스크)를 이미지로 만드는 것이다. 바로바로VM으로 만들 수 있다.
  • 이름 : my-machine-image
  • 소스 VM 인스턴스
    • 머신 이미지를 만들 VM을 정하는 것이다.
  • 위치를 저장할 수도 있다. 머신 이미지를 사용할 때에 가용성을 위해 멀티 리전을 사용할 수 있고, 하나의 리전만 사용할 수 있다.
  • 암호화는 기본으로 설정되어잇다.
  • 머신 이미지를 생성하였다.
  • 오른쪽 작업을 클릭하면 인스턴스 만들기 버튼이 있다.
  • 기존 인스턴스를 세팅했던 스펙 그대로 존재한다. 다만 이름만 바뀌어잇다.

스냅샷

  • 볼륨이나 디스크를 사진찍듯이 찍어놓고, 나중에 에러가 생기면 다시 돌아올 수 있는 타임머신 기능을 위해 사용한다.
  • 스냅샷을 만들어 본다.
  • 머신 이미지를 만들때와 비슷하다.
  • 소스 디스크는 스냅샷을 생성할 소스가 되는 디스크를 말한다.
    • 머신이미지로 web01을 만들었으니 이번엔 web02로 해본다.
  • 위치는 서울로 만든다.
  • 만들기
  • 잘 만들어 졌다. 현재 10:48에 만들어졌고, 이후 에러가나면 이 시간대의 web02로 복구해준다.

스냅샷으로 인스턴스 만들기

  • 머신 이미지처럼 모든 설정이 같지 않다. 기존 인스턴스 생성할 떄 처럼 리전과 머신 구성을 설정해주어야 한다.
  • 리전을 서울, e2-micro로 만들어준다.
  • 다만 부팅 디스크에서 OS이미지가 snapshot-1로 들어가 있는것을 볼 수 잇다.
  • 액세스 범위 : 모든 Cloud API에 대한 전체 액세스 허용
  • 방화벽 : HTTP트래픽 허용
  • 인스턴스를 만들어준다.
  • 우리가 원하는 토깡이가 안나온다.
  • 터미널로 접속해준다.
  • 접속이 가능하다.
  • docker ps : 현재 컨테이너가 실행중이다.
  • curl 127.0.0.1 : 현재 스스로의 웹페이지에서 어떤 출력이 나오고있는지 확인
    • html이 잘 나오고 있으니 이 문제는 아니다.

도커에서 에러가 나기 때문에 WEB01도 스냅샷으로 복제해본다.

  • 이름을 구별하기 위해 web01-snapshot-2으로 해준다.
  • 생성이 잘 됬다면 인스턴스를 만들어 본다.
  • 이름 : web01-snapshot
  • 리전 : 서울
  • 머신유형 : e2-micro
  • 모든 CloudAPI에 대한 전체 액세스 허용
  • HTTP 트래픽 허용
  • 만들기
  • 잘 접속 된다.

커스텀 이미지 VS 머신 이미지

  • 머신이미지는 우리가 클릭으로 편하게 VM인스턴스를 만들 수 있게 해준다.
  • 커스텀이미지(템플릿)은 머신 이미지처럼 설정이 미리 저장되어있지만, 이후 자동으로 AutoScale될때 템플릿을 이용하여 VM인스턴스가 생성되게 한다. 즉, 자동화가 될 수 있다.

6. GCP 네트워크 서비스

  • GCP에서는 Default로 기본으로 생성되어있다.
  • 전세계에 default VPC가 잡혀있지만 GCP는 특이하게 리전별로 IP주소범위가 다르다. 서울은 10.178.0.0/20의 주소범위를 가진다.
  • web01만 봐도 10.178.0.4/32 의 IP를 가지고 있고, 물론 범위 안에 있다.
  • 만약 회사에서 오랜기간 사용한 고정된 특정 IP범위가 있다면, 우리가 VPC를 구성하여 그 IP주소범위를 그대로 사용할 수 있도록 해야한다.

VPC네트워크 만들기

  • 이름 : my-vpc
  • vpc에서 IPv6를 사용하지 않을 것이다.
  • 서브넷도 커스텀으로 만들어준다.
    • 이름 : my-subnet
    • 리전 : asia-northeast3 (서울)
    • IPv4만 사용하는 단일 스택으로 사용한다.
    • IPv4의범위는 기존에 사용했던 10.28.0.0/16을 그대로 사용한다.
  • 서브넷이 더 필요하다면 서브넷을 추가할 수 있다.
  • 방화벽 규칙
    • 방화벽의 의미로 서브넷단위로 방화벽 규칙을 정의하게 된다.
    • AWS나 Azure와 다르게 기본으로 icmp, rdp, ssh포트들이 다 열려있다.
    • 80포트는 현재 오픈할 필요 없지만, 나중에 추가할 수 있다.
    • 인그레스 : 인바운드 (들어와야 하는 신호, 모두거부됨)
    • 이그레스 : 아웃바운드 (나가야 하는 신호, 모두허용됨)
  • 만들기
  • my-vpc로 잘 만들어졌다.

방화벽 규칙 만들기

  • VPC 네트워크 메뉴에서 방화벽에 들어간다.
  • 방화벽 규칙을 만들어준다.
  • 이름 : http
  • 네트워크를 방금 생성한 my-vpc로 만들어준다.
  • 이 보안규칙을 적용할 인스턴스는 http80 태그를 달면된다.
  • 들어오는 소스 IPv4의 범위는 0.0.0.0/0으로 모든 IP에 대해 적용한다.
  • 프로토콜 및 포트는 tcp 포트로 80(http)번 포트를 허용한다.
  • 방화벽 규칙을 만든다.
  • my-vpc에서 방화벽 규칙이 생성되었다.

오후강의

web03만들기

  • VM 인스턴스를 새로 만들어준다.
  • 이름 : web03
  • 리전, 머신구성 동일하게
  • 부팅 디스크 : Ubuntu 18.04LTS를 사용해본다.
  • 액세스 범위 및 방화벽 설정
  • 네트워킹 -> 네트워크 인터페이스 -> 네트워크 인터페이스 수정에서 방금 생성한 my-vpc네트워크로 설정해준다.
  • 관리 -> 자동화 시작스크립트
#!/bin/bash
apt update 
apt install -y apache2
  • 만들기 클릭
  • 웹페이지가 안나온당...
  • web03에서 수정을눌러 네트워크 태그를 넣어줘야 한다.
  • http80을 넣어줬어야 한다.
  • It works!

CloudDNS

  • 이번에도 새로운 서비스를 사용할 때, API사용 버튼을 눌러 활성화 해야한다.

DNS영역 생성

  • DNS영역 만들기로 들어가 준다.
  • 영역 이름 : 도메인주소 - .shop = cocudeny
  • DNS 이름 : 도메인 주소 = cocudeny.shop
  • 이렇게 만들어준다.
  • 영역이 생성되었다.
  • NS (네임서버)를 클릭해서 아래 데이터(빨간 원) 안에 데이터를 가비아 사이트에들어가서 등록해준다.
  • 잘 설정되었다.

레코드 세트 추가

  • 이제 A레코드를 추가한다.
  • DNS이름은 blog.cocudeny.shop
  • IPv4주소를 web01 인스턴스의 IP주소를 넣어준다.
  • A레코드가 잘 생성되었다.
  • 그러나 잘 나오지 않는다. 역시 DNS설정에는 시간이 필요하다.

7. GCP 데이터베이스 서비스

Cloud SQL

  • 검색창에 SQL을 검색해야 들어갈 수 있다.
  • 완전 관리형 서비스인 관계형 MySQL, PostgreSQL, SQL Server 데이터 베이스이다. Google에서 복제 및 관리를 하기 때문에 가용성과 성능이 보장된다.
  • SQL을 검색해서 들어간 화면이다.
    • 인스턴스를 만들어본다.
  • MySQL을 사용해 보도록 한다.
  • 인스턴스 ID와 패스워드를 정해준다.
  • 데이터베이스의 버전은 MySQL 5.7을 사용하도록 한다.
  • 리전 : asia-northeast3(서울)
  • 영역 가용성 : 단일 영역(서비스 중단시 장애에 대한 조치가 없다.)
    • 여러 영역을 선택한다면 고가용성을 지킬 수 있다. 그러나 비용이 증가한다.
  • 머신 유형은 경량 (vCPU 1개, 3.75Gb)로 한다.
  • 저장용량
    • 10Gb
  • 인스턴스 IP 할당
    • 비공개 IP를 선택한다.
    • 공개 IP는 외부 유저도 자유롭게 접속하게되어 보안이 떨어진다.
    • 연결된 네트워킹
      - default 네크워크로 설정해준다. web01 인스턴스가 현재 default에 존재하기 때문에 default로 한다.
      - 또, 내부 VPC IP주소 (비공개IP)를 할당받아 쓰기 때문에 같은 VPC에 존재해야 한다.

      - 연결 설정을 누르면 Service Networking API를 사용설정해야 한다고 나온다. 사용설정해준다.
      - 접속할 수 있는 IP 범위를 할당하는데 자동으로 할당된 IP범위를 사용한다.
    • 연결을 만들어 준다.
  • 만들기를 눌러준다.
  • 생성중이며, 이 생성중이 오래 걸릴 것이다.

web01 Wordpress설치

  • 현재 seLinux가 존재한다. SELINUX를 꺼준다.
  • sudo yum install -y mysql : mysql을 설치해준다. 다만 이 설치법은 Client의 설치법이다.
  • MySQL인스턴스에 DB에 접속할 수 있는 비공개 IP주소가 나왔다.
  • mysql -h [비공개 IP주소] -u root -p 명령어로 SQL에 접속한다.
CREATE USER 'wpuser'@'%' IDENTIFIED BY 'wppass';
CREATE DATABASE IF NOT EXISTS wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'%';
quit
  • 유저와 데이터베이스를 만들어 주었다.
sudo yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
wget https://ko.wordpress.org/wordpress-4.8.2-ko_KR.zip
cd /var/www/html
sudo unzip /home/r2com/wordpress-4.8.2-ko_KR.zip
sudo mv ./wordpress/* .
sudo chown -R apache:apache /var/www/*
sudo systemctl enable --now httpd

  • wordpress에 잘 들어왔다.
  • wordpress 설치 진행까지 완료

GCP 정리

  • VM정리
  • SQL 삭제
  • DNS 삭제
    • 레코드 삭제 (A 레코드만 삭제할 수 있다.)
    • 레코드가 삭제되면, 위 영역삭제 눌러줌
  • 인스턴스 템플릿 삭제
  • 머신이미지 삭제
  • 스냅샷 삭제
  • 스토리지 -> 이미지 삭제 (커스텀 이미지)
  • VPC중에서 my-vpc는 지우지 않겠다. 나중에 팀플할 떄 사용 가능
  • Filestore 삭제 (인스턴스를 삭제한다.)

Alibaba

  • 알리바바는 다른 CSP들중에서 잘 안쓰이고, 꺼림찍한 CSP이긴 하다.
  • 오히려 NCP나 KT Cloud를 쓰는게 좋을 수도 있지만 커리큘럼에 포함되어 있기 때문에 사용해본다.
profile
Talking Potato

0개의 댓글