AWS SSH 연결 문제 해결
SSH 연결문제?
MySQL로 DB까지 무사히 구축한 후 다음날, 서버에 접속했을 때 갑자기 ssh 연결이 되지 않으며 서버에서 문제가 터져 나왔다.
이 문제는 위 사진의 그래프에서도 손쉽게 확인이 가능했는데 CPU의 사용률이 100%에 가깝게 치솟으면서
서버가 이를 견디지 못하고 다운되거나, 어떻게 인스턴스가 유지된다 해도 작업물에 접속이 안되거나
ssh 연결에 실패하는 등의 오류가 지속적으로 발생했다.
해당 오류에 대해 검색을 통해 확인해 본 결과 예상했던 대로 MySQL을 설치했을 때, 서버의 용량이 한계에 다다르며 aws 서버의 CPU 사용률이 100%에 근접해 서버에 큰 무리가 되었었고, 이에 따라 여러 오류가 발생하며 ssh 연결마저 불가능했던 것이었다.
이를 해결하기 위한 가장 쉬운 방법은 aws 프리티어에서 제공하는 t2.micro가 아닌 더 높은 성능의 인스턴스 유형을 선택해 램 용량을 기존 t2.micro의 1GB에서 그 이상으로 늘려주는 방법이 존재하지만
프리티어로 유지하면서 이 문제를 해결하기 위해선 디스크 용량을 이용해 부족한 메모리를 대체하는 방법이 존재한다.
해결 방법
- SSH 연결
SSH 연결이 성공해야만 해당 swapfile의 메모리를 할당함으로써 램 메모리의 용량을 늘려주는 효과를 낼 수 있는데
일단 SSH 연결이 되지 않는 상황이라면
인스턴스 중지 혹은 재부팅을 통해 SSH 연결을 시도하거나, 이마저도 먹히지 않을 시엔 탄력적 IP를 새로 할당받음으로써 SSH연결을 해야만 한다.
- swapfile 메모리 할당
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
위 명령어를 입력해 swap 파일의 메모리에 128M * 16 즉 2GB의 메모리를 설정해 주었고 해당 메모리의 크기는 상황에 따라 가변적으로 조절 가능하다.
- swapfile 접근 권한 부여
sudo chmod 600 /swapfile
swapfile이 생성되었을 때 해당 파일에 읽기, 쓰기가 가능하도록 파일의 권한을 부여해 준다.
- swapfile을 추가할 swap 공간 생성
sudo mkswap /swapfile
스왑 파티션이나 스왑 파일을 생성해 주는 mkswap 명령어를 통해 swap 공간을 생성해 준다.
- swapfile을 swap memory에 추가
sudo swapon /swapfile
sudo swapon -s
swapfile을 swapon 명령어를 통해 swap 메모리에 추가하고 swapon 명령어가 정상적으로 동작했는지 확인해 준다.
sudo swapoff -a
만약 스왑 영역을 비활성화하고 싶다면 위 명령어를 사용해 비활성화할 수 있다.
- swap 파일시스템 설정
sudo vi /etc/fstab
// 파일에 아래 코드를 추가하고 저장
/swapfile swap swap defaults 0 0
위 과정을 통해 ssh 연결이나 다른 동작이 원활히 수행되는 것을 확인 가능했다.