실습 위주로 진행된다.
클라우드에서도 NCP 회사의 서비스, 상품들 이용 예정
이론보다는 실습 위주의 진행이 될 것이다.
클라우드에는 많은 상품들이 존재한다. 그 중 가장 핵심적이고 잘 알아야할 서비스 위주로 공부 예정이다.
다른 말로 서버. 클라우드에서 서버를 어떻게 구축하는가?
AWS와는 다른 부분이 분명히 있다. 실습 내용이 모든 클라우드에 적용된다고 생각하기보단 네이버클라우드
에서의 진행방법임을 유의하며 학습하도록 하자.
서버를 어떻게 더 잘 사용할 수 있는가?
서버
SSD 서버
SSD
란? HDD와는 기술적으로 다르다. SSD는 HDD에 비해 굉장히 빠르다. SSD
는 디스크 처리
를 빠르게 한다.GPU 서버
GPU
는 연산처리
를 빠르게 한다. BareMetal Server
가상화
라는 기술이다. 가상화
는 물리적인 CPU나 RAM을 가상화
하여 사용하는 것이다. 가상화
를 통해 물리적인 장치 하나에서 여러 OS를 사용할 수 있다. 클라우드에서 서버는 주로 가상화 방식으로 구현된 가상머신(Virtual Machine, VM), 즉 가상서버 형태로 제공된다. 그러나 가상화
는 장치 하나의 성능을 여러 OS들이 분산해서 쓰기 때문에 하드웨어 하나를 온전히 사용하는 것에 비해 성능이 떨어질 수 밖에 없는 구조가 된다. BareMetal Server
는 그런 가상화
없이 온전히 물리적으로 제공해주는 서버를 의미한다. BareMetal Server
는 물리적인 서버임에도 클라우드 서비스들을 연계해서 사용할 수 있고, 가상화
를 사용하지 않기 때문에 장치 하나의 성능을 온전히 유지할 수 있다.네이버 클라우드에서는 서버 생성 시 스펙
을 정할 수 있다.
모든 상황에서 높은 스펙이 좋은 것은 아니다.
좋은 스펙은 곧 큰 비용으로 이어지기 때문에 개발환경을 고려해서 스펙
을 결정하는 것이 중요하다.
Micro
Compact
Standard
High Memory
GPU
CPU Intensive
Standard-g2
High Memory-g2
클라우드에서 제공하는 상품을 필요한 만큼만 사용하고, 사용한 만큼 비용을 지불한다.
AS-IS보다 구축 시간이 훨씬 짧다
네이버 클라우드 플랫폼의 환경은 두 가지(Classic
/ VPC
)이다.
둘은 네크워크
적인 부분에서, 스펙
에서 다르다.
Classic
은 AS-IS, VPC
은 TO-BE
AWS에도 예전에는 Classic
환경을 제공했다.
네이버의 Classic
환경 또한 AWS와 매우 비슷하기 때문에
네이버의 Classic
환경도 사라질 가능성이 높다.
현재 실습 환경은Classic
이지만 실제로는 VPC
환경에서 진행하게 될 것
avg설정
에서 0.0.0.0/0
(모든 IP 주소를 수락) 으로 설정해두었다면 모든 사람이 22번 포트
로 비공인 IP
를 이용해 접근할 수 있다.Secure Zone
상품을 만들었다. Secure Zone
에서 서버를 생성하면 개인정보 등 중요 자원을 보안이 강화된 별도 Zone에서 관리하게 된다.부팅 디스크
커널
CPU
와 Memory
개수가 정해져 있다.
추가 디스크
는 디스크 당 최대 2000GB크기, 15개까지 생성 가능
네이버 클라우드는 서비스는 공공기관용 / 개인기업용 등으로 나뉘어져있다.
공공기관용 / 개인기업용 서비스에는 약간의 차이가 존재한다.
네이버 클라우드 콘솔과 포털 차이
콘솔
과 포털
콘솔
로 접속해야 한다.1. 콘솔 접속
2.서버 이미지 설정
부팅 디스크 크기
: 리눅스 50GB, 윈도우 100GB 고정. 확장/축소 불가 이미지 타입
: 서버 OS의 종류서버 타입
: 서버의 스펙
결정3. 서버 설정
zone 선택
: 데이터 센터 위치부팅 디스크 종류(SSD/HDD)
설정서버 세대
: g1서버 타입
: 요금제 선택
: 시간 요금제가 더 저렴하다. 서버 개수
: 서버의 개수 선택서버 이름
: 예) user01-lab1반납 보호
: 반납은 클라우드를 삭제하는 것을 의미한다. 중요한 클라우드를 실수로 반납하는 것을 방지하기 위해 설정한다.4. 인증키 설정
새로운 인증키 생성
: 예) user01-key5. ACG (방화벽)
ACG
는 IP 주소 포트 기반 필터링 기능으로 서버로의 네트워크 접근을 관리한다.신규 ACG 생성
: Ex) user01-acg접근 소스
- myIp (사용자 컴퓨터의 ip)허용 포트
- 22이는 서버 생성 후 SSH
로 접근할 수 있도록 22번 포트를 허용한다는 뜻이다.
서버란 무엇일까?
서버를 생성하는 것은 특정 목적
으로 서비스(상품)
를 제공할 수 있는 컴퓨터를 만드는 것과 같다.
클래식 환경의 접속 방식(포트포워딩
/공인IP
)을 실습해보자.
putty는 원격으로 접속할 수 있도록 도와주는 프로그램으로,
putty 접속 시 설정하는 SSH
는 접속방법 중 하나이다.
SSH
는 클라이언트 프로그램이다.
acg
설정 시 myIp
를 입력하는 이유는?
나의 집인 서버에는 나만 들어갈 수 있도록 설정한 것이다.
공인 IP 실습
공인 IP
에서 할당된 IP 번호
를 확인할 수 있다. 포트포워딩 과정에서 리눅스 서버에 어떻게 접속했는가?
IP
를 입력하고 접속했다. sshd
라는 서비스에 들어오기 위해서는 22
번 문이 필요하다.sshd
서비스를 OS
에 설치해놨기 때문에 서비스를 이용할 수 있게끔 22
번 포트가 열려있는 것이다.22
포트로 접속하면 보안에 신경쓰는 사람들은 22
번 포트를 일부러 다른 번호로 설정해둔다. SSH와 sshd
SSH
SSH(Secure Shell)
는 네트워크 상의 다른 컴퓨터에 로그인할 수 있게 해주거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램
또는 그 프로토콜
을 가리킨다.SSH
는 나가는 요청(outbound)이다. sshd
sshd
란 OpenSSH
의 SSH Daemon (==서버 프로세스) 이다. 데몬
은 백그라운드 상에서 요청을 기다리는 프로그램을 의미하며 일반적으로 프로세스이다.SSH
연결을 받아주기(inbound) 위해 대기하는 프로세스.SSH 프로토콜
을 사용하여 들어오는 연결을 수신하고 프로토콜의 서버
역할을 한다.Putty 접속 오류
ACG의 접근 규칙
에 포트번호 22
인 규칙이 생성되지 않음22
인 규칙을 추가한다.권한있는 명령어들을 사용하기 위해 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
로 설정한다면 내 자신이 나에게 들어오는 것이다.
홈페이지를 서버
혼자서만 볼 수 있는 것이므로 홈페이지를 아무에게도 보여주지 않고 꽁꽁 숨겨둘 예정이라면 그렇게 해도 된다.
네이버에서는 초기화 스크립트
를 생성하여 서버 생성 시 사용할 수 있다.
Classic > server > Init Script
네이버와 같은 대외적인 서비스를 이용한다면 모든 아이피
에서 접근할 수 있어야 한다는 규칙이 있다. 따라서 acg
설정에서 접근소스
에 0.0.0.0/0:80
를 저장해주어야 한다.
Init Script
#!/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 설치
클라우드에는 여러가지 이미지
가 존재한다. (이미지 : 환경)
application 이미지 타입 중 LAMP
가 있다.
이말인즉슨, 이미 Linux Apache(httpd) Mysql(mariadb) PHP
가 이미지로 존재하고 있기 때문에 환경 설정에 필요한 시간을 훨씬 단축할 수 있다는 뜻이 된다.
그래서 클라우드를 사용하면 시간을 단축하고, 초기비용을 줄일 수 있는 것이다.
3-Tier의 개념은 WEB, WAS(미들웨어), DB를 분리하는 것에서 시작된다
한 개의 서버에서 셋을 구동한다면 성능, 보안 측면에서 단점이 생긴다.
최소한 2-Tier가 있어야 하는 것.
rf