가상의 컴퓨터를 만들어주는 작업으로 리전이 가까이 있을수록 속도가 빠르다. 어떤 운영체제를 하느냐는 관계 없지만, 키를 주고받는 암호화 과정이 필요하므로 복잡하다. 기본적으로 보안이 깔려있는 Amazon Linux로 작업하는 편이 수월하다. 예전에 window로 설치하여 작업을 해보았는데, 편리한 부분이 있었으나 운영체제 자체가 용량이 컸다.
연습을 위해 무료로 제공되는 Free tier를 사용한다. 앞의 t2, c5 이런식으로 이름이 붙는데 알파벳에 따라 강점이 되는 부분들이 있어 사양을 고를 수 있다.
다른 운영체제는 터미널로 접속하기 위해서는 암호화가 필요하지만, 위에서 말한 암호화 과정이 Amazon Linux에서는 불필요하므로, 사용하지 않음을 체크해준다.
secure shell로 접속하는 것을 허락해주기 위해 선택해주고, 누구나 접속 가능하게 기본값인 0.0.0/0으로 세팅을 해준다. 127.0.0.1은 보통 로컬호스트이다.
보안을 최우선으로 생각한다면, 위에서 세팅하지 않은 secure shell값과 ket pair값을 세팅하여 만들어 주어야한다. 이렇게 instance를 만들게 되면 외부ip와 내부ip가 생기는데, 외부 ip는 컴퓨터끼리 내부 ip는 백엔드와 DB를 연결하는 네트워크를 구성할 수 있다.
혹여나 instance state에서 Terminate instance를 하는 경우가 있는데, 이것은 멈추는 것이 아니라, 만든 것을 삭제하는 것이므로 중지만 하려면 Stop instance를 이용한다.
instance를 클릭하 후 Connect를 눌러서 Connect해주는데, 우리는 Key pair를 세팅하지 않았기때문에 바로 연결을 진행한다.
이제 컴퓨터에 필요한 node yarn등을 설치해주고, yum을 이용할 때가 있는데, 운영체제 자체에서 설치해주는 패키지 관리자이다.
nvm 설치: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
nvm 활성화: . ~/.nvm/nvm.sh
node 최신버전 설치: nvm install node (버전입력가능)
node버전 확인: node -e "console.log('Running Node.js ' + process.version)"
yarn설치: sudo npm install -g yarn
git 설치: sudo yum install git
git clone로 코드를 받아오고 yarn build, yarn start를 진행.
컴퓨터마다 방화벽이 존재하는데, 우리는 그 방화벽에 대해서 접속을 할 수 있게 허용을 해줘야한다. 인스턴스를 클릭하고 secure탭에 들어가는 inbound와 outbound rules를 수정할 수 있는 곳이있는 보안 그룹이 있다. Security Groups을 선택하여 우리는 Inbound rules 외부에서 요청이 오는 것을 수정해야 하기때문에, Edit inbound rules로 룰을 수정해준다.
Http(80번 포트밖에 선택불가)나 Tcp를 선택해주고 3000번 포트를 사용해야 하기때문에 Tcp로 3000을 세팅해주고 0.0.0.0/0을 세팅해 주었다. 서버가 켜져 있을때만 작동하므로
이제 로드밸런서와 연결하기 위한 컴퓨터는 만들어졌고, 이 컴퓨터를 타겟그룹안에 넣어서 로드밸런서와 연결을 해준다.
ec2에 Load Balancing란에 Load Balancers와 Target Groups을 설정할 수 있는 곳이 같이 있다. create load balancer을 하면, 3가지 방법이 나오는데 우리는 HTTP를 부하 분산해주는 방법을 선택해준다. TCP UDP 방식이 있는데, 안정성이 높은 TCP는 속도가 느리고, UDP는 값을 일방적으로 보내 속도가 빠르지만 안정성이 낮다. 그래서 TCP JSON값을 UDP는 이미지와 같은 값을 보낼 때 사용한다.
인터넷 브라우저에서 접속한 것들을 분산해주는 역활을 할 것이기 때문에, intenet-facing을 선택한다. internal은 백엔드에서 DB로 가는 길을 분산할 때 사용한다.
로드밸런서를 컴퓨터에 맵핑을 시켜주는 것인데, 분산되는 위치를 선택해주어야한다. 적어도 2개의 값을 선택해야하지만, ec2에서 만들어준 instance에 Availability zone에 값은 꼭 포함시켜준다.
여기에서 들어오는 port를 정할 수 있다. ssl인증서를 로드밸런서에 붙이지 않았기때문에, http로 받는데 인증서를 붙였다면 https로 변경할 수 있다.
들어 오는 길을 만들어 주었다면, Create target group을 설정해주어 나가는 길도 설정해주어야 한다.
서버가 죽었는지 살았는지 체크해주는 것
Available instances은 사용 가능한 인스턴스이며, Review targets안으로 넣어 주어야 한다. 이제 로드밸런서를 생성할 때 타켓그룹을 선택해줄 수 있다. 조금만 지나면 로드밸랜서의 state가 Active로 변경된다.
ec2와 마찬가지로 로드밸런서도 방화벽이 존재하기에 security탭에서 보안을 풀어준다. 푸는법은 ec2와 동일하다.