AWS에서 EC2 instance를 만든다. instance는 실습용이니 spot instance로 설정한다.
💡 AWS를 쓰는 동안은 결제 대시보드를 자주 확인하자.
스팟 인스턴스는 온디맨드 가격보다 저렴한 비용으로 제공되는 예비 EC2 용량을 사용하는 인스턴스이다. 스팟 인스턴스의 시간당 가격을 스팟 가격이라고 한다. 그리고 스팟 가격은 스팟 인스턴스의 장기적 공급 및 수요에 따라 점진적으로 조정된다. 또한 용량을 사용할 수 있을 때마다 스팟 인스턴스가 실행된다.
스팟 인스턴스는 사용자 제시 가격 (입찰가격)을 정해놓고 저렴할 때 이용할 수 있다. 사용자가 제시한 가격보다 인스턴스 시장 가격이 높아지게 되면 인스턴스가 종료된다. 종료 되는 시점은 알 수 없다.
스팟 인스턴스는 애플리케니션이 실행되는 시간을 유연하게 조정할 수 있고, 애플리케이션을 중단할 수 있는 경우에 선택하는 비용 효율적인 방법이다. 예) 데이터 분석, 배치 작업, 백그라운드 프로세싱 및 선택적 작업 등
이전 블로그 참고 : https://velog.io/@coastby/5주차웹개발-개발일지-서버에-올리기
✋ SSH (Secure SHell protocol)
다른 컴퓨터에 접속할 때 쓰는 프로그램. 다른 것들보다 보안이 상대적으로 뛰어나다.
접속할 컴퓨터가 22번 포트가 열려있어야 접속가능하다. AWS EC2의 경우, 이미 22번 포트가 열려있다.
나의 keypair 접근 권한 바꿔주기
sudo chmod 400 받은키페어를끌어다놓기
ssh로 EC2에 접속하기
ssh -i 받은키페어를끌어다놓기 ubuntu@[퍼블릭 IPv4 DNS]
💡 연결하는 방법이 헷갈리면 참고
인스턴스 요약 페이지의 우측 상단에 연결 버튼을 클릭한다.
SSH 클라이언트 탭 클릭한다. terminal에서 3번 4번 실행한다.
# 간단한 리눅스 명령어
ls: 내 위치의 모든 파일을 보여준다. (list)
pwd: 내 위치(폴더의 경로)를 알려준다.
mkdir: 내 위치 아래에 폴더를 하나 만든다. (make directory)
cd [디렉토리]: 나를 [디렉토리]로 이동시킨다. (change directory)
cd .. : 나를 상위 폴더로 이동시킨다.
cp -r [복사할 것] [붙여넣기 할 것]: 복사 붙여넣기
rm -rf [지울 것]: 지우기
sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다. (superduser do)
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)
chmod : 파일 또는 폴터의 권한을 변경할 때 사용 (change mode)
sudo su -
도커 홈페이지에서 받을 수도 있지만 도커 설치 스크립트를 github에서 받아서 실행한다.
git clone https://github.com/Kyeongrok/docker_minikube_kubectl_install.git
ll
: 디렉토리 목록 확인하여 clone 되었는지 확인한다.# ll
total 28
drwx------ 5 root root 4096 Oct 9 07:12 ./
drwxr-xr-x 19 root root 4096 Oct 9 06:50 ../
-rw-r--r-- 1 root root 3106 Oct 15 2021 .bashrc
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
drwx------ 2 root root 4096 Oct 9 06:50 .ssh/
drwxr-xr-x 3 root root 4096 Oct 9 07:12 docker_minikube_kubectl_install/
drwx------ 4 root root 4096 Oct 9 06:50 snap/
docker_install.sh
실행한다.# cd docker_minikube_kubectl_install/
# ll
total 56
drwxr-xr-x 3 root root 4096 Oct 9 07:12 ./
drwx------ 5 root root 4096 Oct 9 07:12 ../
drwxr-xr-x 8 root root 4096 Oct 9 07:12 .git/
-rw-r--r-- 1 root root 48 Oct 9 07:12 add_k_bashrc.sh
-rw-r--r-- 1 root root 703 Oct 9 07:12 argocd.sh
-rw-r--r-- 1 root root 421 Oct 9 07:12 docker_install.sh
-rw-r--r-- 1 root root 236 Oct 9 07:12 k_shortcut.sh
-rw-r--r-- 1 root root 2435 Oct 9 07:12 kubeadm_install.sh
-rw-r--r-- 1 root root 2572 Oct 9 07:12 kubeadm_readme.md
-rw-r--r-- 1 root root 1037 Oct 9 07:12 kubeadm_worker_install.sh
-rw-r--r-- 1 root root 327 Oct 9 07:12 kubectl_install.sh
-rw-r--r-- 1 root root 408 Oct 9 07:12 minikube_install.sh
-rw-r--r-- 1 root root 989 Oct 9 07:12 readme.md
-rw-r--r-- 1 root root 186 Oct 9 07:12 utils.sh
# sh docker_install.sh
...
Press [ENTER] to continue or Ctrl-c to cancel. #엔터 누름
# docker
💡 nginx
가벼운 고성능 웹서버로 높은 트래픽 처리를 위해 만들어졌다. Apache의 경우 접속마다 Process 또는 Thread를 생성하는 구조로, 다수가 동시접속을 하면 그 만큼 생성비용이 든다. 하지만 nginx는 한 개 또는 고정된 프로세스만 생성하고, 그 프로세스 내에서 비동기 방식으로 효육적으로 작업을 처리한다.
도커를 이용하여 nginx를 설치하고 실행시킨다.
80포트를 80포트로 받아서 연결해서 띄워준다.
# docker run -p 80:80 nginx
제대로 실행되는 지 확인하려면 AWS EC2 인스턴스에서 [dns주소]:80
으로 접속하면 아래 사진과 같이 화면이 나타난다.
#주소
ec2-3-34-41-88.ap-northeast-2.compute.amazonaws.com:80
EC2에 접속하여 관리자 권한으로 설정한다.
# sudo su -
아래의 명령로 docker를 통해 mysql을 설치할 수 있다.
-p
: 포트포워딩 [호스트:컨테이너] 호스트의 3306포트와 컨테이너의 3306포트를 연결-e
: 컨테이너 내에서 사용할 환경변수 설정MYSQL_ROOT_PASSWORD=password : root
계정의 비밀번호 설정-d
: detached 모드, 데몬 모드라고 부르며 컨테이너가 백그라운드로 실행된다.# docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=password mysql
❌ 에러 발생 (unsolved)
설치 후 위의 화면에서 나가지를 못하였다. 로그 화면처럼 보이는데 검색해도 알 수가 없어서 terminal을 종료하고 다시 들어가니 정상작동 되었다.
mysql이 실행 중인지 확인하는 방법은 아래 명령어를 입력 후 image에 mysql이 띄워져있는지 확인한다.
#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f6a7d40856fb mysql "docker-entrypoint.s…" 36 minutes ago Up 36 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp busy_clarke