-
[AWS EC2] Amazon Linux 2023 docker 설치 + swap memory 설정Software engineer/Infra 2023. 8. 31. 16:08
백엔드 개발 공부를 하면서 서버를 Cloud에 띄워보고자 할 때 혹시나 AWS 인스턴스 요금이 많이 나올까 봐 주춤거릴 적이 있었다. 이런 고민을 덜기 위해 free tier ec2에 swap memory를 설정해서 사용해 보기로 했다.
1. Swap memory 설정
Swap memory는 운영체제가 물리적인 RAM(메인 메모리)이 부족할 때 사용되는 가상 메모리 영역입니다. 이는 하드 디스크 등의 저장 장치를 활용하여 메모리 부족 상황을 완화하며, 시스템의 안정성을 유지하는 데 도움을 줍니다. AWS EC2 free tier에서 스왑 메모리를 설정하면 메모리 부족 시 일시적으로 성능 저하를 경험하지 않고 시스템 운영을 지속할 수 있습니다.
1-1. 현재 메모리 상태 확인
free 명령어를 사용해 현재 시스템의 메모리 사용량을 확인합니다.
전체 사용 가능한 메모리/ 사용 중인 메모리/ 버퍼 및 캐시로 사용 중인 메모리/ 사용가능한 스왑 영역 등을 볼 수 있습니다.
$ free total used free shared buff/cache available Mem: 972576 161760 600084 2848 210732 668300 Swap: 0 0 0df 명령을 사용해 현재 디스크 사용량을 볼 수 있습니다. 파일 시스템의 디스크 사용현황 또한 확인이 가능합니다.
각 파일 시스템의 디스크 용량, 사용 중인 공간, 남은 공간 및 사용률 등을 제공합니다.
* -h 옵션을 사용하면 사람이 읽기 쉬운 형식으로 용량을 표시해 줍니다.
$ df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 4096 0 4096 0% /dev tmpfs 486288 0 486288 0% /dev/shm tmpfs 194516 2844 191672 2% /run /dev/xvda1 31379436 1676296 29703140 6% / tmpfs 486288 0 486288 0% /tmp tmpfs 97256 0 97256 0% /run/user/10001-2. Swap memory 할당
"/swapfile"이라는 이름의 2048MB 크기의 스왑 파일을 생성합니다. 스왑 파일은 시스템의 메모리 부족 상황에서 추가적인 가상 메모리 공간을 제공하는 데 사용됩니다.
$ sudo dd if=/dev/zero of=/swapfile bs=64M count=32 32+0 records in 32+0 records out 2147483648 bytes (2.1 GB, 2.0 GiB) copied, 30.9276 s, 69.4 MB/s"/swapfile"에 대한 액세스 권한 설정
$ sudo chmod 600 /swapfile"/swapfile"을 Swap 영억으로 사용하기 위해 포맷
$ sudo mkswap /swapfile Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=8285d047-de68-4234-b58f-02b32ff3d2dc"/swapfile" 활성화
$ sudo swapon /swapfile활성화된 Swap 영역을 확인합니다.
$ sudo swapon -s Filename Type Size Used Priority /swapfile file 2097148 0 -21-3. 시스템 부팅 시 자동으로 스왑 영역을 활성화하도록 설정
"/etc/fstab" 해당 파일에 아래 내용을 추가작성한다.
$ sudo vi /etc/fstab## 생략 ## /swapfile swap swap defaults 0 0- /swapfile: 스왑 파일의 경로입니다. 이 경로에 있는 스왑 파일을 사용하겠다는 의미입니다.
- swap: 스왑 파일의 유형을 지정합니다.
- swap: 마운트 포인트를 지정합니다. 스왑 파일은 마운트 포인트가 필요하지 않습니다.
- defaults: 옵션으로, 스왑 영역의 마운트 옵션을 기본값으로 설정합니다.
- 0: 덤프 옵션을 지정합니다. 여기서는 사용하지 않으므로 0으로 설정합니다.
- 0: 파일 시스템 검사 순서를 지정합니다. 여기서는 스왑 영역이므로 파일 시스템 검사를 하지 않으므로 0으로 설정합니다.
1-4. 설정된 Swap memory 확인
설정 전
$ free total used free shared buff/cache available Mem: 972576 161760 600084 2848 210732 668300 Swap: 0 0 0 $ df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 4096 0 4096 0% /dev tmpfs 486288 0 486288 0% /dev/shm tmpfs 194516 2844 191672 2% /run /dev/xvda1 31379436 1676296 29703140 6% / tmpfs 486288 0 486288 0% /tmp tmpfs 97256 0 97256 0% /run/user/1000설정 후
$ free total used free shared buff/cache available Mem: 972576 132928 120636 2844 719012 694740 Swap: 2097148 0 2097148 $ df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 4096 0 4096 0% /dev tmpfs 486288 0 486288 0% /dev/shm tmpfs 194516 2840 191676 2% /run /dev/xvda1 31379436 3773772 27605664 13% / tmpfs 486288 0 486288 0% /tmp tmpfs 97256 0 97256 0% /run/user/10002. Docker 설치 및 실행
추후 CI/CD 파이프라인 구축 시 이미지 배포를 위해 Docker를 설치하려 합니다.
2-1. Docker 설치
$ sudo yum install -y docker2-2. Docker 서비스 실행
$ sudo systemctl start docker.service2-3. 시스템 부팅 시 자동으로 Docker를 시작되도록 설정
$ sudo systemctl enable docker Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.'Software engineer > Infra' 카테고리의 다른 글
[RDS] 파라미터 그룹 (2) 2023.10.06 [EC2] 웹서버 설치 및 정적페이지 호스팅(w/ Apache web server) (1) 2023.09.25 [AWS] ACM(SSL/TLS 인증서 발급) (2) 2023.06.12 [CI/CD] GithubAction에서 Docker 이미지 빌드 (4) 2023.06.07 [CI/CD] Django + GithubAction + EC2 (1) 2023.06.01