[아이티센 기술교육] 클라우드 컴퓨팅 - Compute

suRan·2022년 9월 15일
1

실습 위주로 진행된다.
클라우드에서도 NCP 회사의 서비스, 상품들 이용 예정
이론보다는 실습 위주의 진행이 될 것이다.

클라우드에는 많은 상품들이 존재한다. 그 중 가장 핵심적이고 잘 알아야할 서비스 위주로 공부 예정이다.

Compute

다른 말로 서버. 클라우드에서 서버를 어떻게 구축하는가?
AWS와는 다른 부분이 분명히 있다. 실습 내용이 모든 클라우드에 적용된다고 생각하기보단 네이버클라우드에서의 진행방법임을 유의하며 학습하도록 하자.

컴퓨터 Service 서버 종류

서버를 어떻게 더 잘 사용할 수 있는가?

  • 서버

    • 클라우드 상에서 서버를 생성하고 확장할 수 있는 서비스
  • SSD 서버

    • 빠른 입출력 처리가 가능한 SSD가 장착된 서버를 제공하는 서비스
    • SSD란? HDD와는 기술적으로 다르다. SSD는 HDD에 비해 굉장히 빠르다.
    • SSD디스크 처리를 빠르게 한다.
  • GPU 서버

    • 그래픽카드 내부에는 GPU라는 칩셋이 있다. GPU는 CPU보다 더 빠른 속도로 연산을 처리한다.
    • 딥러닝, 머신 러닝 등을 GPU 서버에서 처리한다.
    • GPU연산처리를 빠르게 한다.
  • BareMetal Server

    • 클라우드의 핵심기술 중 하나는 가상화라는 기술이다. 가상화는 물리적인 CPU나 RAM을 가상화하여 사용하는 것이다. 가상화를 통해 물리적인 장치 하나에서 여러 OS를 사용할 수 있다. 클라우드에서 서버는 주로 가상화 방식으로 구현된 가상머신(Virtual Machine, VM), 즉 가상서버 형태로 제공된다. 그러나 가상화는 장치 하나의 성능을 여러 OS들이 분산해서 쓰기 때문에 하드웨어 하나를 온전히 사용하는 것에 비해 성능이 떨어질 수 밖에 없는 구조가 된다.
    • BareMetal Server는 그런 가상화 없이 온전히 물리적으로 제공해주는 서버를 의미한다. BareMetal Server는 물리적인 서버임에도 클라우드 서비스들을 연계해서 사용할 수 있고, 가상화를 사용하지 않기 때문에 장치 하나의 성능을 온전히 유지할 수 있다.

스펙의 종류

네이버 클라우드에서는 서버 생성 시 스펙을 정할 수 있다.
모든 상황에서 높은 스펙이 좋은 것은 아니다.
좋은 스펙은 곧 큰 비용으로 이어지기 때문에 개발환경을 고려해서 스펙을 결정하는 것이 중요하다.

  • Micro

    • 1년 동안 무료 체험 가능
    • 개인 계정 발급 시 추천
    • 가상 CPU가 1코어
      • 따라서 OS 설치는 리눅스만 가능하고 윈도우는 불가하다.
  • Compact

    • 간단한 개발 및 테스트에 적합.
    • 가격 부담을 줄인 것이 특징
  • Standard

    • 가장 보편적인 스펙
  • High Memory

  • GPU

    • 머신러닝, 이미지 프로세스 러닝 등 빠른 연산이 필요한 경우 적합
  • CPU Intensive

  • Standard-g2

  • High Memory-g2


클라우드의 특징

클라우드에서 제공하는 상품을 필요한 만큼만 사용하고, 사용한 만큼 비용을 지불한다.
AS-IS보다 구축 시간이 훨씬 짧다


네이버 클라우드 특징

Classic 과 VPC

네이버 클라우드 플랫폼의 환경은 두 가지(Classic / VPC)이다.
둘은 네크워크적인 부분에서, 스펙에서 다르다.
Classic은 AS-IS, VPC은 TO-BE

AWS에도 예전에는 Classic 환경을 제공했다.
네이버의 Classic환경 또한 AWS와 매우 비슷하기 때문에
네이버의 Classic환경도 사라질 가능성이 높다.

현재 실습 환경은Classic이지만 실제로는 VPC환경에서 진행하게 될 것

  • Classic의 단점과 네이버 클라우드의 대안
    • 공유
    • avg설정에서 0.0.0.0/0(모든 IP 주소를 수락) 으로 설정해두었다면 모든 사람이 22번 포트비공인 IP를 이용해 접근할 수 있다.
    • 네이버에서는 이를 해결하기 위해 Secure Zone 상품을 만들었다. Secure Zone에서 서버를 생성하면 개인정보 등 중요 자원을 보안이 강화된 별도 Zone에서 관리하게 된다.

제약사항

  • 부팅 디스크
    • 윈도우 서버는 무조건 100GB로 고정된다
    • 리눅스 서버는 50GB로 고정된다.
  • 커널
    • 리눅스의 커널을 인위적으로 업데이트 시 향후 커널로 인한 문제 발생 시에도 네이버 클라우드에서 책임지지 않는다.
  • CPUMemory개수가 정해져 있다.

  • 추가 디스크는 디스크 당 최대 2000GB크기, 15개까지 생성 가능


실습 1. 서버생성

네이버 클라우드는 서비스는 공공기관용 / 개인기업용 등으로 나뉘어져있다.
공공기관용 / 개인기업용 서비스에는 약간의 차이가 존재한다.

네이버 클라우드 콘솔과 포털 차이

  • 콘솔포털
    • 서버에 접속하기 위해서는 콘솔로 접속해야 한다.

1. 콘솔 접속

2.서버 이미지 설정

  • 부팅 디스크 크기 : 리눅스 50GB, 윈도우 100GB 고정. 확장/축소 불가
  • 이미지 타입 : 서버 OS의 종류
  • 서버 타입 : 서버의 스펙 결정

3. 서버 설정

  • zone 선택 : 데이터 센터 위치
  • 부팅 디스크 종류(SSD/HDD) 설정
  • 서버 세대 : g1
  • 서버 타입 :
  • 요금제 선택 : 시간 요금제가 더 저렴하다.
  • 서버 개수 : 서버의 개수 선택
  • 서버 이름 : 예) user01-lab1
  • 반납 보호 : 반납은 클라우드를 삭제하는 것을 의미한다. 중요한 클라우드를 실수로 반납하는 것을 방지하기 위해 설정한다.

4. 인증키 설정

  • 새로운 인증키 생성 : 예) user01-key
  • 다운 받은 key파일을 절대 잃어버려서는 안된다.

5. ACG (방화벽)

  • ACG는 IP 주소 포트 기반 필터링 기능으로 서버로의 네트워크 접근을 관리한다.
  • 권한있는 트래픽만 허용하고 그 외의 트래픽은 차단한다.
  • 신규 ACG 생성 : Ex) user01-acg
  • 접근 소스 - myIp (사용자 컴퓨터의 ip)
  • 허용 포트 - 22

이는 서버 생성 후 SSH로 접근할 수 있도록 22번 포트를 허용한다는 뜻이다.


실습 2. 서버접속

서버란 무엇일까?
서버를 생성하는 것은 특정 목적으로 서비스(상품)를 제공할 수 있는 컴퓨터를 만드는 것과 같다.

클래식 환경의 접속 방식(포트포워딩/공인IP)을 실습해보자.

putty는 원격으로 접속할 수 있도록 도와주는 프로그램으로,
putty 접속 시 설정하는 SSH는 접속방법 중 하나이다.
SSH는 클라이언트 프로그램이다.

acg 설정 시 myIp를 입력하는 이유는?
나의 집인 서버에는 나만 들어갈 수 있도록 설정한 것이다.

공인 IP 실습

  • 생성한 서버의 공인 IP 에서 할당된 IP 번호를 확인할 수 있다.
  • putty에 세션 정보를 입력하여 접속한다.

포트포워딩 과정에서 리눅스 서버에 어떻게 접속했는가?

  • 우리는 서버에 IP를 입력하고 접속했다.
  • sshd라는 서비스에 들어오기 위해서는 22번 문이 필요하다.
  • sshd서비스를 OS에 설치해놨기 때문에 서비스를 이용할 수 있게끔 22번 포트가 열려있는 것이다.
  • 22포트로 접속하면 보안에 신경쓰는 사람들은 22번 포트를 일부러 다른 번호로 설정해둔다.

SSH와 sshd

SSH

  • SSH(Secure Shell)는 네트워크 상의 다른 컴퓨터에 로그인할 수 있게 해주거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 그 프로토콜을 가리킨다.
  • SSH는 나가는 요청(outbound)이다.

sshd

  • sshdOpenSSH의 SSH Daemon (==서버 프로세스) 이다. 데몬은 백그라운드 상에서 요청을 기다리는 프로그램을 의미하며 일반적으로 프로세스이다.
  • SSH 연결을 받아주기(inbound) 위해 대기하는 프로세스.
  • SSH 프로토콜을 사용하여 들어오는 연결을 수신하고 프로토콜의 서버 역할을 한다.

Putty 접속 오류

  • ACG 설정 관련 오류
    • ACG의 접근 규칙에 포트번호 22인 규칙이 생성되지 않음
    • 포트번호 22인 규칙을 추가한다.

실습 3. 명령어를 사용한 웹 설치

권한있는 명령어들을 사용하기 위해 sudo -i명령어를 이용해 루트 유저로 변환한다.

sudo -i // 루트 유저로 변환

yum -y install httpd
systemctl start httpd // 실행되는 명령어

cat << EOF > /var/www/html/index.html
<p style="font-size:34px; color:red;" >`hostname`</p>
<p style="font-size:20px; color:darkviolet">`hostname -I`</p>
EOF 

공인 IP를 브라우저에 붙여넣으면 결과가 보여진다.
httpd는 웹서비스를 제공한다.

ACG 설정 시 접근소스 설정에 0.0.0.0/0(모든 IP에서 접근 가능) 을 넣어준다.

클라이언트 프로그램(Ex: 브라우저)는 포트번호가
무조건 80으로 디폴트 설정되어있기 때문에 포트번호는 생략할 수 있다.


acg 접근 소스 설정에 공인 IP를 넣어도 될까?

클라이언트 입장에서 공인IP는 도착지이다.
따라서 acg설정 시 접근소스공인IP로 설정한다면 내 자신이 나에게 들어오는 것이다.
홈페이지를 서버 혼자서만 볼 수 있는 것이므로 홈페이지를 아무에게도 보여주지 않고 꽁꽁 숨겨둘 예정이라면 그렇게 해도 된다.

실습 4. 초기화 스크립트 (LAMP)

네이버에서는 초기화 스크립트를 생성하여 서버 생성 시 사용할 수 있다.
Classic > server > Init Script

네이버와 같은 대외적인 서비스를 이용한다면 모든 아이피 에서 접근할 수 있어야 한다는 규칙이 있다. 따라서 acg설정에서 접근소스0.0.0.0/0:80를 저장해주어야 한다.

Init Script

  • 서버 생성 시 최초 1회 root유저 권한으로 명령어를 한 번에 실행해주는 스크립트
  • 시간 절약, 더 빠른 실행 가능
#!/bin/bash

yum -y install httpd php php-mysql mariadb-server // 언어 설치
systemctl enable httpd
systemctl enable mariadb
systemctl start httpd
systemctl start mariadb

mysql -u root << EOF
create database wpdb; // DB 생성
grant all privileges on wpdb.* TO wpadmin@localhost identified by 'passw0rd'; // 사용자와 패스워드
flush privileges;
exit
EOF

cd ~
wget https://wordpress.org/wordpress-5.1.tar.gz     // 블로그 소스 다운로드
tar zxvf *.tar.gz
chmod 707 -R wordpress  
cp -rp wordpress/* /var/www/html/      //
chown -R apache.apache /var/www/html
#sed -i 's/index.html/index.php/g' /etc/httpd/conf/httpd.conf
systemctl restart httpd

echo "rew:x:0:0::/home:/bin/bash" >> /etc/passwd
echo "rewrewrewrew" | passwd rew --stdin

LAMP
Linux Apache(httpd) Mysql(mariadb) PHP를 의미한다.

비공인 IP 설정

  • 비공인 IP는 클라우드 외부의 사람들은 사용할 수 없는 IP이다.

wordpress 설치

  • 초기화 스크립트, 클라우드 컴퓨팅을 통해 15분 만에 블로그 완성
  • (네트워크 문제로 실습 실패 -> 다음 실습 시 다시 도전)

클라우드의 이미지

클라우드에는 여러가지 이미지가 존재한다. (이미지 : 환경)
application 이미지 타입 중 LAMP가 있다.

이말인즉슨, 이미 Linux Apache(httpd) Mysql(mariadb) PHP가 이미지로 존재하고 있기 때문에 환경 설정에 필요한 시간을 훨씬 단축할 수 있다는 뜻이 된다.

그래서 클라우드를 사용하면 시간을 단축하고, 초기비용을 줄일 수 있는 것이다.

3-Tier

3-Tier의 개념은 WEB, WAS(미들웨어), DB를 분리하는 것에서 시작된다
한 개의 서버에서 셋을 구동한다면 성능, 보안 측면에서 단점이 생긴다.

최소한 2-Tier가 있어야 하는 것.

rf

profile
개발 공부를 해라

0개의 댓글