AWS EC2 + MariaDB 환경 구축

#1. 시스템 구축 의도

새롭게 서비스를 런칭하기 위해서 자산을 쌓고 있다.
서버도 앱도 웹도 아무것도 없다.

서버를 만들고 호스팅 해야 한다.

2가지 서비스가 필요한데, 하나는 홈페이지 및 블로그이고, 또 다른 하나는 앱 api 서비스이다.
홈페이지는 single wordpress를 쓰고 있었는데, 블로그와 회사 홈페이지, 앱 홈페이지를 구분해야 했다.

이번 기회에 서비스 관리를 하기 위해서 kubernetes를 도입하기로 결정했다.
이 과정에서 싱글 서버에서 처리할 수 있다는 이야기를 어디서 들었다. (지나가던 소리였음)

그래서 다음의 조건을 걸어봤다.

  1. 경제성이 뛰어난 싱글 서버 작성
  2. 프리티어급 서버 활용

#2. 시스템 구성

API 서버와 Infra 가 필요하다. MariaDB 로 환경을 구축하려 한다.
다수의 서버를 mariadb와 api 서버 mysql+wordpress 서비스로 구축할 생각이다.

1. 선택지 확인

조건: Single EC2 freetier

타겟: service 관리 도구

  1. Linux service daemon
  2. Kubelet standalone with containerd
  3. Docker compose

결론:

  1. Linux service daemon
    • DB 및 port 조정등 개발 비용 비싸서 안함
  2. Kubelet standalone with containerd
    • Pod이외의 리소스를 활용할 수 없음, freetier 성능한계를 마주함
  3. Docker compose
    • freetier 성능한계를 마주함

2번과 3번은 freetier에서 무리가 있었다. 기본적인 CRI 모두 성능적으로 freetier에 맞지않았다.

또한 MariaDB와 API 서버를 같이 돌리는 경우 CPU hang까지 금방 가버렸다.
결국 MariaDB를 EC2에서 돌리는 것이 무리가 있다고 봤다.

MariaDB를 위해서 RDS를 쓰도록 하였다. 또한 WordPress 서버는 포기하고 여러개를 띄우기로 결정했다.

WordPress를 여러개 띄우려고 들어가니 WordPress multisite가 떡하니 있었다.
저거다 하는 생각과 괜히 인프라 구축에 시간을 날렸다는 생각이 들었다.
하지만 RDS를 분리하고 서버를 instantiate 할 계획을 짜는 동안, 그동안의 시간이 도움이 될 것으로 판단되었다.

왜냐하면 서버들만큼은 kubernetes pod로 처리해서 kuberet standalone을 써도 되겠더라.

#3. RDS 준비

RDS 초기화에서 권한 문제를 해결해야 했다.

Appendix:

관련 업무 내

1) Linux service daemon

  1. aws-linux-2-ec2-사용자-개발-서비스-인스톨
  2. aws-ec2-스케쥴-배치-업무-설정-with-crontab
  3. ssh-ssh-agent-ssh-키등록-및-git-연결
  4. aws-ec2에-mariadb-설치하기

2) Kubelet standalone with containerd

  1. aws-ec2에-kubernetes-설치
  2. aws-ec2-kubernetes-wordpress-hosting
  3. aws-ec2-ubuntu-에서-mariadb-설치

3) Docker compose

  1. aws-ec2-docker-compose로-서비스-구축

4) RDS

  1. rds-초기-설정

전체 과정 블로그 /aws-ec2-mariadb-환경-설정