본문 바로가기
PROJECT

[PROJECT] 클러스터링 구성

by 아이엠제니 2023. 9. 21.

 


 

자바가 아니라, 갑자기 인프라를 접하게 되었다.

원래는 클러스터링이 아니라, 이미 있는 프로젝트를 배포해서 로컬에 올려보는 걸 했었다.

그리고 이후에 로컬이 아니라, 우분투에 올리고 잘 작동되는지를 테스트했었다.

다만 이때는 도커로 해서! (이때 도커도 잘 몰랐다... 물론 지금도 잘 아는 건 아니지만... 공부 중...)

docker compose 파일을 그냥 빌드를 하면 끝이었다. (이미 누군가 만든 게 있었다.)

물론 추가 세팅이 필요하지만?

 

근데 지금 같은 경우는, db만 도커로 올리고 나머지는 우분투에 설치를 해서 진행했다.

솔직히 리눅스도 잘 모르는데, 클러스터링이요...? (예...?)

그래도 다행히 회사 개발자 분이 클러스터링 예시를 만들어 놓으셨다.

대부분을 그분이 만드신 걸 참고하면서 정말 계란으로 바위를 깨는 심정으로...

 

아무튼 클러스터링이 되었다는 말... (ㅠㅠ)

지난한 시간이었다.

너무 스트레스를 받았지만, 다행히 이 부분에 있어서는 도움을 주시는 분들이 있었다.

 

사실 인프라를 잘 아는 분이 하시면 뚝딱뚝딱하실 수도 있겠지만, 나는 진짜 오래 걸렸다.

나에게 이걸 맡기신 분도 그걸 아시면서도 스스로 해보라며 믿고 기다려주신 것 같다. (흑)

완벽히 알 수는 없는 게 맞다.

기초를 쌓기도 전에 실전에 투입이 되었으니까.

그래서 설명에 많이 부족한 부분이 있을 것 같지만, 그럼에도...

내 기억력을 믿을 수가 없으니 남겨 놓아야 하는 부분은 적당히 남겨야지.

 

아 그리고 솔직히...

지금 로컬 세팅이랑 클라우드 세팅을 맡기신 이유가 아무래도 '정리' 때문에 그런 것 같기도 하다.

나는 정말 초보자이기 때문에, 초보자 입장에서 적다 보니...

정말 세세하게 적는 편이다.

이전에 로컬 세팅할 때 가이드도 그렇게 만들었고?

이번에 클러스터링 작업 한 가이드도 아마 그렇게 만들 듯?

어쨌든 내가 이렇게 시도한 게 나만 하는 게 아니라, 나중에 내가 아닌 누군가도 해야 하기 때문에...

매뉴얼을 당연히 중요하게 생각하시는 것 같음.

 

아무튼 매뉴얼 만들고 칭찬받을 정도로... 열심히 만들었다는 말.

그거 보고 따라한 사람이 세세하게 잘 적혀져 있어서 따라 하기 쉬웠다고 했다.

근데 티스토리에 정리하는 건 왜 이렇게 어려운 것일까... (하하)

뭐 아무튼 클러스터링 구성은 이러하다.

구성 적어 놓고, 차차 남길 부분들을 남겨야지.

 

 

 

 

1.  Front 서버 3대

👉Front 1 > L4 스위치 대신 nginx 로드밸런싱 (추후 L4 스위치 사용예정) 

nginx version: nginx/1.18.0 (Ubuntu)
  • 대표 도메인이 있어서, 이 도메인으로 들어오면 Front_2_1 또는 Front_2_2로 로드밸런싱이 된다.

 

 

👉 Front 2 > apache2

Server version: Apache/2.4.52 (Ubuntu)
Server built:   2023-05-03T20:02:51
  • Front_2_1과 Front_2_2

 

 


2.  Backend 서버 3대

👉 Back 1,2,3 > Tomcat8, RabbitMQ, Redis

 

💾 Tomcat8

Using CATALINA_BASE:   /home/ubuntu/tomcat8
Using CATALINA_HOME:   /home/ubuntu/tomcat8
Using CATALINA_TMPDIR: /home/ubuntu/tomcat8/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/ubuntu/tomcat8/bin/bootstrap.jar:/home/ubuntu/tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Using CATALINA_PID:    /home/ubuntu/tomcat8/tomcat.pid
Server version: Apache Tomcat/8.5.93
Server built:   Aug 23 2023 22:43:14 UTC
Server number:  8.5.93.0
OS Name:        Linux
OS Version:     5.15.0-72-generic
Architecture:   amd64
JVM Version:    1.8.0_382-8u382-ga-1~22.04.1-b05
JVM Vendor:     Private Build

 

 

💾 RabbitMQ (클러스터링)

RabbitMQ version: 3.9.13

 

 

💾 Redis (클러스터링)

Redis server v=6.0.16

 

 

3. DB

👉  oracle-19c > docker 설치

Docker version 24.0.6

 

 

구성은 대략 이러하다.

다시 말하자면 힘겹게 클러스터링 완료가 되었다.

 

대표 도메인으로 들어오면 프론트1이나 프론트2 둘 중 하나로 접근을 한다.

그리고 서버 또한 1 아니면 2 아니면 3으로 이동한다.

서버 1을 내리면 서버 2로 자연스럽게 옮겨지면 좋겠지만, 세션 문제가 살짝 있어서!

이것만 해결되면 굿굿.

지금은 서버 1을 내리면 로그아웃이 되어버린다.

다행히 데이터는 유지가 된다.

채팅 관련 프로그램인데, 서버 2나 서버 3으로 가도 채팅 역시 잘 작동하고 있다.

 

뭐를 어떻게 남겨야 할지가 생각보다 어렵다.

완료하는 것에 조금 급급했기 때문에...

이번에 정리하면서 공부를 해야겠다.

 

차차 올려서 남겨보도록 해야지.

(당연) 완벽하지는 않겠지만, 열심히 남겨보는 걸로.

300x250