AWS에서 EC2 검색

 

네트워크 및 보안 > 탄력적 IP

 

탄력적 IP 주소 할당

 

네트워크 경계 그룹 ap-northeast-2(서울)

 

탄력적 IP주소 할당 성공 화면

 

이전 게시물에서 복사한 test2 인스턴스에 할당

https://yes5.tistory.com/24

 

AMI를 이용한 서버 복사

인스턴스 Name test로 진행 인스턴스 ID 클릭 작업 > 이미지 및 템플릿 > 이미지 생성 이미지 이름 : 알아보기 쉬운 이름으로 지정 예) 서버용도_날짜 이미지 설명 : 이미지에 대한 설명 재부팅 안 함

yes5.tistory.com

 

인스턴스 및 프라이빗 IP 주소 선택

 

 

EC2 인스턴스 목록에서

퍼블릭 IP, 탄력적 IP 할당된 모습 확인.

 

고정된 IP로 ssh 접속 확인.

 

탄력적 IP는 할당 받고 연결 하지 않으면 요금이 발생한다. 미사용시 삭제.

인스턴스 Name test로 진행

인스턴스 ID 클릭

 

작업 > 이미지 및 템플릿 > 이미지 생성

 

이미지 이름 : 알아보기 쉬운 이름으로 지정 예) 서버용도_날짜

이미지 설명 : 이미지에 대한 설명

재부팅 안 함 : 복제 시 재부팅 여부 결정, 서비스 중이라면 활성화를 하여 재부팅 방지

크기 : 복제 본의 용량 크기 설정 Gbyte 단위

종료시 삭제 : 종료 시 삭제 여부 결정

 

이미지 > AMI 이동

대기중 상태로 이미지가 생성된다.

이미지 크기가 클 수록 생성되는데 시간이 많이 소요된다.

 

이미지 > AMI 카탈로그에서 사용 가능한 퍼블릭 AMI 목록을 볼 수 있다.

 

이미지 상태가 사용 가능으로 변경 되면,

 

AMI ID 클릭 > AMI로 인스턴스 시작 

 

사용 할 서버 이름을 입력하고,

AMI는 자동으로 지정이 된다.

 

인스턴스 유형과 키 페어를 선택

 

putty를 ssh 클라이언트로 이용할 경우 .ppk

xshell 이용 시 .pem

 

네트워크 설정 (vpc, 서브넷, 보안그룹 등) 상황에 맞춰 설정

탄력적 IP를 사용할 예정이라 IP 자동할당을 비활성화 했다. 탄력적 IP 사용하지 않을 경우 활성화

https://yes5.tistory.com/25

 

AWS 탄력적 IP 할당 ( 퍼블릭 IP 고정 )

AWS에서 EC2 검색 네트워크 및 보안 > 탄력적 IP 탄력적 IP 주소 할당 네트워크 경계 그룹 ap-northeast-2(서울) 탄력적 IP주소 할당 성공 화면 이전 게시물에서 복사한 test2 인스턴스에 할당 https://yes5.tist

yes5.tistory.com

 

 

test2 인스턴스 대기 중 상태 확인

잠시 기다리면 실행 중으로 변경된다.

 

zabbix version : 4.0.2

 

 

yum remove zabbix-agent -y

rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.2-1.el7.x86_64.rpm

yum localinstall http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.2-1.el7.x86_64.rpm

 

vi /etc/zabbix/zabbix_agentd.conf

zabbix_agentd.conf : Server=수정

Server= zabix 서버 IP

zabbix_agentd.conf : Hostname=수정

Hostname=zabix 에이전트의 호스트 이름

예) WEB01

 

systemctl enable zabbix-agent.service

systemctl start zabbix-agent.service

 

 

Configuration > Hosts > 복사 할 정책 선택 > clone

 

Host name : zabix 에이전트의 호스트 이름

Groups : 적용할 그룹

IP address : IP 주소

 

입력 후 Add

 

  • 구성
  • express 2ea (EC2 Ubuntu)
  • nginx 1ea (EC2 Ubuntu)
  • 환경
  • OS : ubuntu20.04
  • Nginx : 1.18.0
  • 조건
  • express 2ea, nginx 1 같은 VPC
  • 가비아에서 도메인 구입 후 nginx IP와 매칭
  • 시나리오
  1. client 호출을 nginx 서버에서 받음.
  2. nginx 서버에서 express 서버로 로드 밸런싱
  3. 한 대의 express 서버 장애 시 다른 정상 express서버에서 서비스

  • Nginx Load Balancing
sudo apt update

sudo apt install nginx

sudo apt update

운영체제에서 사용 가능한 패키지들과 그 버전에 대한 정보를 업데이트하는 명령어

 

sudo apt install nginx

Nginx가 성공적으로 설치되면 nginx -v 커멘드로 확인할 수 있다.

 

nginx -v

 

sudo vi /etc/nginx/nginx.conf

 

/etc/nginx/conf.d 경로를 사용할 것이므로 /etc/nginx/sites-enabled/ 경로와 /etc/nginx/sites-available/ 경로에 defalut 파일이 있다면 삭제한다.

sudo rm -rf /etc/nginx/stites-available/default

디폴트 설정을 삭제하고

 

sudo vi /etc/nginx/conf.d/default.conf
upstream myserver {
        server 172.31.5.101:3000; 
        server 172.31.10.21:3000; 
}

server {
        listen 80;
        server_name your.domain.com;


      location / {
        proxy_pass http://myserver;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
    }
}

작성 후 저장.

upstream myserver {} ip 주소만 사용에 맞게 변경해주면 된다.   - 해당 시나리오 exrpess 내부 아이피 사용


  • SSL
sudo snap install certbot --classic

sudo apt-get install python3-certbot-nginx

 

ubuntu 18.03 이하 버전에선 python 설치.

sudo apt-get install python-certbot-nginx

 

sudo certbot --nginx

  1. 알림 받을 email 설정
  2. a
  3. y
  4. 도메인 주소

 

sudo vi /etc/nginx/conf.d/default.conf

certbot --nginx 후 default.conf를 확인하면 certbot이 ssl에 필요한 정보들을 자동으로 입력해준다.

 

sudo service nginx restart

ssl 적용 확인

 

도메인/express서버 기능 uri 호출 시 express서버에서 load balancing이 되는것을 확인 할 수 있다.


  • ssl 자동 갱신
sudo vi /etc/crontab

  • crontab 규칙

    * * * * *  유저 이름 명령어
    ┬ ┬ ┬ ┬ ┬
    │ │ │ │ └─ 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
    │ │ │ └─ 월 (1 - 12)
    │ │ └─일 (1 - 31)
    │ └─ 시 (0 - 23)
    └─ 분 (0 - 59)

최하단 59 5 * * * service nginx reload 추가

sudo service cron restart

 

  • 시나리오 : nginx를 이용한 로드 밸런싱 구현
  • 필요 서버 : nginx 1ea, express 2ea

이번 포스팅은 기존 express 서버가 있고, express 서버 한 대를 추가하는 내용이다.

- 추가로 node 버전이 두 서버 안 맞는 경우가 있어 버전 통일도 진행.

 

  • EC2 설치

  • 프리티어로 사용할 것이기 때문에 ubuntu Server 22.04 LTS를 선택한다. 

  • 인스턴스 유형은 t2.micro
  • 키 페어는 만들어 둔 페어로 사용

 

  • 2대 이상 서버로 구축할 것이라면 서브넷, 보안그룹을 맞춰주는게 편한다.

  • 서브넷은 기존  ec2서버 서브넷이 ap-northeast-2a 로 되어있어 같이 맞춰준다.

  • 보안 그룹도 launch-wizard-1로 맞춰준다.

  • 8GiB 이상 필요하지 않아 기본값으로 만들었다. 30GiB까지 프리티어라고 한다.

  • 인스턴스 시작 버튼 클릭

 

 

  • 퍼블릭 IP를 확인하고 ec2에 접속한다. (여기선 git bash 사용)

 


  • node, npm 버전 맞추기

기존 코드 clone을 받아 npm i를 했다. read-shrinkwrap 에러가 발생한다.

이유는 lockfileVersion이 1, 이는 npm 버전이 6이하라는 것이다. 7부터 lockfileVersion 2로 변경

 

  • 우선 node와 npm을 지우자

sudo apt-get remove nodejs -y

sudo apt-get remove npm -y

 

  • 버전 확인해서 지워진것 확인해보고

node -v

npm -v

 

  • node 다시 설치

sudo apt install curl

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

(setup_숫자는 버전을 의미한다.)

sudo apt-get install node.js -y

 

  • 버전 확인

node -v

npm -v

 

'Infra > AWS' 카테고리의 다른 글

AWS EC2 생성 (ubuntu 프리티어)  (0) 2023.10.23
EC2 - S3 파일 복사  (1) 2023.10.23
AWS EC2 용량 추가 (EBS 볼륨 증설)  (1) 2023.10.23
AWS 탄력적 IP 할당 ( 퍼블릭 IP 고정 )  (0) 2023.10.23
AMI를 이용한 서버 복사  (1) 2023.10.23

+ Recent posts