인스턴스 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