Information Security Study

240321 메일 서버 구축, 캐시 서버 생성 본문

네트워크 캠퍼스/AWS

240321 메일 서버 구축, 캐시 서버 생성

gayeon_ 2024. 3. 28. 15:15

메일 서버 구축 - 메일 수신하기

 

서울 리전은 송신만 가능하기에 버지니아 북부 리전에서 실습을 진행했다.

 

메일 수신을 하기 위해 규칙을 생성한다.

 

amazon SES 대시보드

이메일 수신 -> 규칙 세트 생성

 

 

 

규칙 세트 생성 후 규칙을 생성한다.

 

수신자 조건에 inquiry@구매한도메인

형식을 넣는다.

 

다음 작업 추가에서 s3버킷으로 전송을 체크한다.

sample-mailbox-이름

으로 버킷을 생성했다.

 

그리고나서 규칙 세트의 상태를 활성화시킨다.

 

 

이렇게 한 후 

 

rout 53 대시보드에서 

호스팅영역 -> 구매한 도메인

으로 들어가 레코드를 생성해야 한다.

 

레코드 유형을

MX - 메일 서버 지정

으로 하고

값에는 버지니아 북부 정보가 들어가야 한다. (노션 참고)

 

이렇게 하고 내 메일로 inquiry@구매한도메인에 메일을 보내면

s3 스토리지에 도착한다.

 

 

현재 샌드박스 모드에서는 

일 200개의 이메일 / 초당 1개의 이메일만 발송할 수 있다.

기업 등에서 대규모로 발송하기 위해서는 샌드박스모드를 탈출시켜야 하는데

이것은 우리가 마음대로 탈출시킬수있는게 아니라 아마존 고객센터에 문의해야 한다.

 

 

메일에 들어가야 하는 내용

  1. 어떤 서비스인지
  2. 트래픽이 대충 어느정도 발생할 것으로 예상되는지
  3. 서비스내에서 메일의 용도는 무엇인지(회원가입 인증, 안내공지메일 등…)

메일을 최대 48시간 내에 승인해주면 그때부터 상용 메일로 활용할 수 있다.

 


 

캐시 서버 생성하기

 

어플리케이션의 성능을 향상시키기 위해 미리 자주 쓰는 데이터를 메모리에 올려놓고 그대로 활용하는 편이 좋다.

 

따라서 AWS에서 제공하는 캐시 서비스를 활용해서 처리에 시간이 걸리면서 자주 쓸법한 데이터들을 좀 더 빠르게 수행하도록 처리할 것이다.

 

 

캐시가 유효한 경우

  • 처리 비용이 높은 데이터
  • 자주 변경이 생기지 않는 데이터
  • 실시간 갱신이 다소 보장되지 않아도 괜찮은 데이터

 

캐시가 유효하지 않은 경우

  • 자주 변동이 생기는 데이터
  • 실시간으로 변동이 일어나는 데이터
  • 처리 비용이 저렴한 데이터

 

캐시의 경우 메모리를 보통 활용하기 때문에 단위용량당 가격이 비싸다.

따라서 캐시를 너무 큰 단위로 광범위하게 지정하면 안 된다.

 

 

AWS에서 제공하는 캐싱 도구로는 레디스 멤캐시드가 있다.

실습에는 좀 더 국내에서 광범위하게 쓰이는 레디스 기반의 AWS 서비스를 활용했다.

레디스와 멤캐시드는 전부 미들웨어로 제공되기 때문에 일래스틱 캐시라는 서비스를 이용하면 바로 캐시서버를 쉽게 구축할 수 있다.

 

 

캐시서버의 유형

  • 기본 유형은 {key:value} 형식으로 캐시서버에 키값을 입력하면 벨류값이 리턴되는 형태이다.
  • 그러나 내부적으로 다루는 데이터 양이나 유형에 따라 성능을 높이는 구성을 추가로 제공한다.

 

 

일래스틱 캐시의 구성 요소

  1. 노드(Node):
    • 노드는 Elasticsearch 클러스터 내에서 단일의 서버를 나타낸다.
    • 각 노드는 클러스터의 일부로 동작하며, 데이터를 저장하고 검색 요청을 처리한다.
    • 노드는 클러스터에 가입하여 다른 노드와 상호작용하며, 클러스터의 상태를 공유한다.
    • 하나의 노드는 여러 개의 샤드를 가질 수 있다.
  2. 샤드(Shard):
    • 샤드는 Elasticsearch에서 데이터를 분산하여 저장하는 단위이다.
    • Elasticsearch는 대량의 데이터를 처리하기 위해 데이터를 여러 개의 샤드로 분할한다.
    • 샤드의 유형
      • 데이터 샤드(Data Shard): 실제 데이터가 저장되는 단위로, 색인된 문서들을 포함한다.
      • 복제 샤드(Replica Shard): 데이터 샤드의 복사본으로, 가용성과 성능을 향상시키기 위해 사용된다.
    • 각 인덱스(Index)는 하나 이상의 데이터 샤드와 이에 대한 복제 샤드를 가질 수 있다.
    • 샤드의 개수와 복제본의 수는 클러스터의 확장성과 가용성을 제어하는 데 중요한 역할을 한다.
  3.  클러스터(Cluster):
  • 클러스터는 하나 이상의 노드로 구성된 Elasticsearch 인스턴스 그룹이다.
  • 각 노드는 같은 클러스터 이름을 가지고 있어야 하며, 이를 통해 노드가 클러스터에 가입할 수 있다.
  • 클러스터는 고가용성, 확장성 및 장애 허용 기능을 제공한다.
  • 노드가 추가되거나 제거될 때, 클러스터는 자동으로 재구성되어 샤드의 분산을 유지하고 가용성을 보장한다.

 

 

 

일래스틱캐시 활용 실습

 

가용영역마다 프라이빗 서브넷 내부에 샤드 2개를 구성하고 각 샤드는 프라이머리 노드 1개와 복제노드 2개를 가지도록 한다.

 

먼저 일래스티캐시 대시보드로 이동한다.

 

래디스 캐시 -> 캐시 생성

 

클러스터 설정에서 자체 캐시 설계를 선택하고 생성 방법은 클러스터 캐시로 한다.

 

다중 AZ를 사용해 이중화가 가능하게 한다.

 

서브넷은 프라이빗 서브넷으로 2개만 잡아준다.

; 캐시서버가 프라이빗 서브넷에 위치해야 하기 때문이다.

 

 

 

작동 확인하기

 

web01로 접속하여 

sudo yum -y install nc로 nc 명령어를 설치한다.

 

생성한 일래스틱캐시 상세정보에서 엔드포인트 정보를 복사해

nc 구성 엔드포인트

로 입력하면 된다.

ping 입력 시 pong이 돌아온다.