https://aws.amazon.com/ko/blogs/korea/amazon-ebs-update-new-elastic-volumes-change-everything/

 

Amazon EBS 업데이트 – 언제나 자유롭게 볼륨 유형 및 크기 변경 가능 | Amazon Web Services

AWS 고객은 서비스를 시작한 후, 사용자 트래픽 및 데이터 사이즈가 증가함에 따라 기존 볼륨을 수정하여 용량을 추가하거나 I/O 성능 특성을 변경해야 할 경우가 생깁니다. 이를 변경하기 위해, 2

aws.amazon.com

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

 

볼륨 크기 조정 후 Linux 파일 시스템 확장 - Amazon Elastic Compute Cloud

볼륨 크기 조정 후 Linux 파일 시스템 확장 EBS 볼륨 크기를 늘리고 난 후에는 파일 시스템 관련 명령을 사용하여 파일 시스템의 크기를 늘려야 합니다. 볼륨이 optimizing 상태가 되자마자 파일 시스�

docs.aws.amazon.com

2017년 발표된 신규 EBS가 출시되면서 EC2에서 EBS를 사용할 경우 저장 공간에 대한 탄력적인 운영이 가능해졌습니다. 

 

예를들어 용량이 부족할 때는 일정 비율 이상으로 자동 증가하는 방법들을 선택할 수 있게 되었죠.

 

최근 수동으로 용량을 증가할 일이 있어서 관련 내용을 정리해봤습니다. 

 

만약 해당 시스템이 현재 서비스 중인 시스템이라도 중단 없이 처리가 가능합니다. 하지만, EBS에 손실될 경우 문제가 될만한 중요한 정보가 있다면 스냅샷을 꼭 만든 후 진행하시기 바랍니다. 

 

스냅샷을 생성해두면 문제가 발생 시 기존 EBS를 해제하고 스냅샷으로 새로운 볼륨을 생성 후 기존 인스턴스에 연결할 수 있습니다. 

 

우선 AWS Console에서 EC2 >> EBS >> 볼륨을 선택합니다. 

그리고 수정이 필요한 볼륨을 선택한 후 "볼륨 수정"을 선택합니다.

그리고 필요한 볼륨으로 크기를 조정합니다.

이제 시스템에 접속해서 lsblk 명령으로 인스턴스에 연결된 블록 디아비스 정보를 확인합니다. 

 

현재 8G를 사용중이며 총 용량이 16G인 것을 확인할 수 있습니다. 

사용하지 않고 있는 8G를 xvda1에 추가해 보겠습니다. 

growpart 명령으로 파티션을 확장합니다. 디바이스 이름과 파티션 번호 사이에는 띄어쓰기가 있으니 유의하세요.

df 로 파일 시스템을 확인해보면 아직 이전 상태인 것을 확인 할 수 있습니다. 

xfs_growfs 명령으로 파일 시스템을 확장합니다. 

이후 df로 다시 확인하면 xvda1 의 용량이 8G 에서 16G로 확정된 것을 확인 할 수 있습니다.

 

확장된 volume은 다시 축소할 수 없으니 꼭 필요한 경우 진행하시고, 확정 전에 꼭 스냅샷을 만들어 두시는걸 추천드립니다.

 

복잡하진 않지만 찾아보지 않으면 알 수 없는 내용이라 간단히 정리해 보았습니다. 

 

조금이라도 도움이 되셨길 바랍니다. :)

>> EPEL(Extra Packages for Enterprise Linux) 저장소 활성화하기

https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-enable-epel/

>> 원격접속을 위한 키 발급 및 설정

EC2는 기본적으로 생성 시 발급한 공개키를 사용하여 원격접속 할 수 있도록 설정되어 있습니다. EC2에 키 페어를 설정하는 방법은 아래와 같습니다.

 

EC2 생성 전에 키 페어로 가서 ...

"키 페어 생성" 버튼을 눌러 ppk를 생성합니다. 이때 비번 설정은 없으니 참고하세요. 

 

EC2 기본 설정을 완료 후 시작을 누르면 키 페어 설정 화면이 나옵니다. 여기서 새로 생성할 수도 있으며 생성된 키 페어를 설정할 수 있습니다. 

 

키 페어가 변경된 경우에 대해서는 이 링크를 참고하세요. 

 

이제 putty에서 Auth에 다운받은 ppk 파일을 설정합니다. 

그리고 ssh 연결 설정에서 host name에 public dns 값을 입력, 사용자에 ec2-user를 입력 후 연결할 수 있습니다. 

 

파일 이동을 쉽게 하기 위해 WinSCP를 사용하는 경우 아래 이미지를 참고해서 ppk 파일을 설정하면 됩니다. 

 

보안 그룹에서 접속할 instance의  inbound 설정에 ssh 연결을 위해 22 번 포트를 가능한 제한되고 안전한 PC에서만 접속할 수 있도록 접속 가능한 IP를 제한해야 합니다. 

 

예를들어 자신의 회사에서 사용하는 public ip가 1.1.1.0 ~ 1.1.1.255까지 사용하며 자신의 ip가 1.1.1.11이라고 가정해 봅시다. 

 

인바운드 규칙에서 소스에 값을 적용할 때는 CIDR 표기법으로 기록해야 합니다. 

 

만약 회사원 일부가 접속을 할 경우 1.1.1.0/24 로... 자신만 접속한다면 1.1.1.11/32로 설정하면 됩니다. 

 

혹시 원격접속을 "브라우저 기반 ssh 연결"하려면 추가 설정이 필요합니다. 

 

"브라우저 기반 ssh 연결"은 "웹 브라우저 -> EC2 Instance Connect -> EC2 Instance"의 과정을 거쳐 연결됩니다. 이때 EC2 Instance Connect은 각 지역별로 별도의 IP 대역이 할당되어 있습니다.  예를들면 서울 리전(ap-northeast-2)의 경우 13.209.1.56/29를 ssh의 포트에 같이 포함하여 적용되어 있어야 합니다. 이에 대한 상세한 내용은 https://ip-ranges.amazonaws.com/ip-ranges.json 파일을 참고하시면 됩니다.

 

>> VPC를 생성하면..

라우팅 테이블 , 네트워크 ACL, 보안 그룹이 자동으로 같이 생성됩니다.

>> 실행중인 EC2로 이미지 생성 시

실행중인 인스턴스로 이미지 생성을 하게 되면 인스턴스가 일시적으로 중단된 듯 한 상황이 발생할 수 있습니다. 주의하세요.

>> EC2에서 다른 EC2로 원격 접속하기

해당 EC2에 설정된 키 페어를 다운받고, ppk일 경우 pem 파일로 변경(https://aws.amazon.com/ko/premiumsupport/knowledge-center/convert-pem-file-into-ppk/)합니다.

$ sudo puttygen ppkkey.ppk -O private-openssh -o pemkey.pem

puttygen이 설치되지 않은 경우 putty(혹은 putty-tools) 패키지를 설치하면 됩니다. EC2의 경우 epel을 활성화되지 않을 경우 패키지를 찾을 수 없습니다. 

sudo ssh -i your-key.pem ec2-user@ec2-ip

>> node 설치 방법

https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html

 

# download
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

# nvm 활성화
. ~/.nvm/nvm.sh

# nodejs 설치
nvm install node

#pm2 설치
npm install pm2 

 

 

Redis와 같은 VPC 안에 EC2를 생성했다고 가정합니다. 다른 VPC에 있을 경우 VPC Peering 설정이 필요하며 이 내용은 곧 다시 업로드할 예정입니다. 

 

일단 EC2에 redis-cli 설치를 위해 gcc를 설치합니다. redis를 별도 설치해되 되지만 ec2 에서는 redis-cli만 사용할 예정이니 redis 자체 설치를 하는 방법은 사용하지 않겠습니다.

 

 

sudo yum install -y gcc 

 

redis-stable 버전을 다운받아 빌드를 해야 하니 임시 폴더 혹은 프로그램 빌드를 위한 별도 폴더를 만들어 작업하실것을 추천드립니다.

 

wget http://download.redis.io/redis-stable.tar.gz && tar xvzf redis-stable.tar.gz && cd redis-stable && make

 

redis 자체를 쓰지는 않고 redis-cli만 사용합니다. redis-cli를 사용하기 쉽게 /usr/bin에 복사합니다. 

sudo cp src/redis-cli /usr/bin 

 

redis-cli가 잘 실행된다면 redis에 원격접속을 해봅니다.

 

redis-cli -h redis-endpoint-address

redis의 주소는 기본 엔드포인트나 리더 엔드 포인트나 상관없이 잘 연결됩니다. 

 

만약 접속이 안된다면 보안 그룹에 설정된 인바운드 설정에 port가 잘 열려 있는지 확인해야 합니다. 

 

VPC 의 보안 -> 보안 그룹에서 redis에 설정된 보안 그룹을 찾아 inbound 규칙에서 TCP 6379 포트 혹은 별도 설정한 redis 포트가 규칙에 적용되어 있는지 확인해 보세요.

 

아래와 같은 설정으로 규칙이 적용되어 있어야 합니다. 

 

 

이상입니다.

 

다음은 VPC Peering 설정 방법과 EC2와 Redis가 서로 다른 VPC, 다른 리전에 있을 경우 연동하는 방법을 정리해 보겠습니다.

 https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-server-refused-our-key/


처음 인스턴스를 생성할 때 다운로드 했던 pem 파일을 찾지 못한다면... 사망!! 처음부터 다시 구축하던가 백업해둔 이미지로 다시 생성!!


.ssh/authorized_keys 내용을 직접 수정하고 재시작 해봤지만 이 방법은 불가.



1. 해당 인스턴스를 실행 중지 시키고.. 


2. 작업 > 인스턴스 설정 > 사용자 데이터 보기/변경을 선택 (인스턴스가 완전히 종료되지 않은 상태에서 변경 불가)


3. 아래 코드를 붙여넣기 한 다음


#cloud-config
ssh_deletekeys: false
ssh_authorized_keys:
cloud_final_modules:
  - [ssh, always]

4. puttygen을 연 후, load 버튼을 눌러 저장해둔 pem 파일을 연다.


5. 그러면 상단 텍스트 박스에 public key 텍스트가 출력되는데 ssh-rsa로 시작하는 텍스트부터 끝까지 복사를 한다.


6. 붙여넣기 했던 위 코드 중 ssh_authorized_keys:  바로 옆에 복사한 내용을 붙여넣는다. 


7. 저장 하고 인스턴스를 다시 시작한다.


8. 다시 연결되는 것을 확인할 수 있다. 


위 링크의 내용을 그대로 가져왔지만 붙여 넣기 할 때 주의가 필요함. 



유사한 내용은 이 링크에서 확인 가능합니다. 

EC2 대시보드 -> 인스턴스 -> 인스턴스 시작 


여기서는 Amazon Linux AMI를 선택하려 한다. 




인스턴스 유형은 t2.micro (역시 프리 티어 사용 가능 ) 선택 후 "검토 및 시작" 버튼. 


 (인스턴스 구성 및 스토리지 추가 등이 필요하면 각 상세 항목을 설정할 수 있다. 각 항목은 추후 필요할 때 다시 설정할 예정이니 여기서는 넘어가자.)



"시작" 버튼을 누르면 키페어에 대한 질의가 나온다. "새 키 페어 생성"을 눌러보자.


키 페어 이름을 넣은 후 "키 페어 다운로드"를 해서 pem 파일을 만들어두자. 원격 제어를 위해 접근하려면 꼭 필요하다. 





그리고 인스턴스를 시작하면 생성 후 가동된다. 


이제 터미널에서 접속하는 과정을 보자. 


일단 다운받은 pem 파일을 원하는 위치에 놓고 터미널에서 해당 폴더로 이동한다.


그리고 pem 파일 권한에 읽기 권한을 아래와 같이 부여한다.


chmod 400 yourfilename.pem



그리고 터미널에서 ssh로 바로 접속해보자.


ssh -i yourfilename.pem ec2-user@yourec2domain


이제 EC2로 바로 접속할 수 있다. 


참고로 EC2 인스턴스를 활성화 시킨 후 재부팅 등이 이루어지면 IP와 도메인이 변경된다. 고정 IP를 할당하자면 비용이 추가되니 필요에 따라 선택이 필요하다. 









+ Recent posts