EC2 인스턴스에 ELK 스택을 설치하고 운영할 계획 중이었습니다. 하지만 현재 사용 중인 인스턴스는 t3.small 유형으로, 기본적으로 RAM 용량이 2GB에 불과했습니다.
ELK 스택은 메모리 소모가 많은 서비스이기 때문에, 제한된 RAM 환경에서는 실행 중 시스템 리소스 부족으로 인해 프로세스가 멈추거나 심각한 성능 저하가 발생할 수 있죠. 😑
이러한 문제를 방지하고 보다 안정적인 운영 환경을 구축하기 위해 스왑 메모리(Swap Memory)를 설정하려고 합니다. 스왑 메모리는 물리적 RAM이 부족할 때 디스크 공간을 임시 메모리로 활용하는 기술로, 시스템의 안정성을 높이고 메모리 부족으로 인한 시스템 중단을 방지하는 데 필수적입니다. 따라서 시스템 안정성을 확보하고 예기치 않은 문제를 예방하기 위해 스왑 메모리 설정을 미리 적용하고자 합니다.
아래 명령어를 실행하여 2GB 크기의 스왑 파일을 생성합니다.
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
- dd 명령어를 사용하여 /swapfile이라는 2GB(2048MB)의 빈 파일을 생성합니다.
- if=/dev/zero : 입력 파일로 0이 가득한 데이터를 사용합니다.
- of=/swapfile : 생성할 파일의 경로를 지정합니다.
- bs=1M count=2048 : 1MB 블록을 2048개 생성하여 총 2GB 크기의 파일을 만듭니다.
보안상의 이유로 스왑 파일의 권한을 600으로 설정하여 루트 사용자만 읽고 쓸 수 있도록 제한합니다.
sudo chmod 600 /swapfile
생성된 스왑 파일을 스왑 공간으로 포맷하고, 운영체제에서 사용할 수 있도록 활성화합니다.
sudo mkswap /swapfile
sudo swapon /swapfile
그리고 free -h 명령어로 현재 스왑 상태를 확인할 수 있죠.
free -h

마지막으로 시스템을 재부팅해도 스왑이 유지되도록 /etc/fstab 파일에 설정을 추가해 줍니다.
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

추가로 스왑 크기를 변경하고 싶을 경우에는, 기존 스왑을 비활성화한 후 다시 생성해줘야 합니다.
sudo swapoff -v /swapfile # 기존 스왑 비활성화
sudo rm /swapfile # 기존 스왑 파일 삭제
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 # 4GB 크기로 재생성
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
만약 스왑을 완전히 삭제하려면 아래 단계를 수행해줘야 해요.
sudo swapoff -v /swapfile # 스왑 비활성화
sudo sed -i '/\/swapfile/d' /etc/fstab # fstab에서 제거
sudo rm /swapfile # 파일 삭제
ELK 스택을 운영하려면 충분한 메모리가 필수적이며, t3.small과 같이 RAM 용량이 제한적인 환경에서는 스왑 메모리를 활용하는 것이 안정적인 운영을 위한 필수 전략입니다. 스왑 파일을 설정하면 RAM이 부족할 때도 디스크를 임시 메모리로 사용하여 성능 저하를 최소화할 수 있습니다. 또한, 적절한 크기의 스왑 파일을 설정하고, 필요에 따라 크기를 조정하는 방법을 익혀 두면, 다양한 환경에서도 유연하게 대응할 수 있습니다. 👍