반응형

 

  • History (Docker Project)

  1. (Del) 2020.03.23 : Docker-Machine 삭제
  2. (Add) 2020.03.23 : Zabbix Server 및 모니터링 시스템(Slack 연동) 도입
  3. (Edit) 2020.03.23 : Google Container Registry → GitHub 변경 및 도입
  4. (Add) 2020.03.30 : 웹 서버 이중화 및 Googld Cloud Load Balancer 설정
  5. (Add) 2020.03.30 : WEB, WAS1, WAS2 서버 컨테이너 모니터링 (기존 zabbix-agent 삭제 및 zabbix-agent-xxl 설치)
  6. (Add) 2020.04.06 : Docker → Kubernetes 고도화 작업 시작
  7. (Del) 2020.04.06 : GCP 프리티어 환경 상 기존 Docker 프로젝트 삭제
  8. (Add) 2020.04.06 : VM 인스턴스 생성 및 Kubernetes 설치
  9. (Add) 2020.04.06 : Google Container Registry 설정
  10. (예정) kubernetes manifest를 이용해 각 노드에 필요한 서비스 설치 및 설정 (nodeSelector 사용 예정)

 

  • 프로젝트 아키텍처

  • GKE 사용하지 않고 GCE 환경에서 GCLB → k8s가 어떤식으로 로드밸런싱 되는지 확인 필요

 

 

  • 배포 아키텍처

(마지막 실제 서버 테스팅 환경을 추가하고 싶었으나 프리티어의 한계로 인해...)

  • 이후 시간될 때 jenkins 등 pipeline 추가 예정

 

반응형
반응형

 

  • History

  1. (Del) 2020.03.23 : Docker-Machine 삭제
  2. (Add) 2020.03.23 : Zabbix Server 및 모니터링 시스템(Slack 연동) 도입
  3. (Edit) 2020.03.23 : Google Container Registry → GitHub 변경 및 도입
  4. (Add) 2020.03.30 : 웹 서버 이중화 및 Googld Cloud Load Balancer 설정
  5. (Add) 2020.03.30 : WEB, WAS1, WAS2 서버 컨테이너 모니터링 (기존 zabbix-agent 삭제 및 zabbix-agent-xxl 설치)
  6. (예정) 구글 F/W 정리 및 각 서버별 Firewalld 설정
  7. (예정) MySQL 서버 구축 및 이중화 설정 (Replication 또는 DRBD)
  8. (예정) Port 모니터링 등 자빅스 추가 설정
  9. (예정) 백업 시스템 구축
  10. (예정) Mail Server 구축

 

  • 구축 환경 및 구성 정보

  • Cloud Platform : Google Cloud Platform
  • Load Balancer : Google Cloud Load Balancer
  • Registry : GitHub (https://github.com/islandtim/Nirsa-Project)
  • OS : Google Compute Engine
    • Zabbix Server : CentOS 7.7 1908
    • WEB1, WEB2, WAS1, WAS2 Server : Ubuntu 16.04.2
  • Application & Server Information
    • Zabbix Server
      1. Zabbix Server(loopback) 기본 리소스 모니터링
      2. WEB1,2 Server 기본 리소스, 컨테이너 리소스, HTTP 서비스 모니터링
      3. WAS1,2 Server 기본 리소스, 컨테이너 리소스 모니터링
      4. Zabbix-Slack 연동하여 알람 발생 시 Slack에서 알람 수신
      5. apache-2.4.6, php-5.4.16, mysql-5.7.29, zabbix-4.4.6
    • WEB1,2 Server
      1. Docker-CE, docker-compose (container : apache, zabbix-agent-xxl)
      2. Docker Code는 GitHub으로 관리
      3. GCLB를 사용하여 web1,2 서버 로드 밸런싱 받음
      4. /*.jsp 요청을 받으면 was1,2 서버에게 로드 밸런싱(비율 1:1)
      5. apache-2.4.6, modjk tomcat-connectors-1.2.46
    • WAS1,2 Server
      1. Docker-CE, docker-compose (container : tomcat, zabbix-agent-xxl)
      2. Docker Code는 GitHub으로 관리
      3. tomcat-9.0.31, openJDK-1.8.0.242.b08-0.el7_7.x86_64

 

  • Project Architecture

 

  • GitHub

 

  • Zabbix & Slack

 

반응형
반응형

 

  • 변경 사항

  1. (Del) Docker-Machine 삭제
  2. (Add) Zabbix Server 및 모니터링 시스템 도입
  3. (Edit) Google Container Registry → GitHub 변경
  4. (예정) 구글 F/W 정리 및 각 서버별 Firewalld 설정
  5. (예정) 웹 서버이중화 및 Google Cloud Load Balancer 설정
  6. (예정) MySQL 서버 구축 및 이중화 설정 (Replication 또는 DRBD)
  7. (예정) Port 모니터링 등 자빅스 추가 설정
  8. (예정) 백업 시스템 구축
  9. (예정) Mail Server 구축

 

  • 구축 환경 및 구성 정보

  • Cloud Platform : GCP (GCE VM 인스턴스만 사용)
  • Registry : GitHub (https://github.com/islandtim/Nirsa-Project)
  • OS
    • Zabbix Server : CentOS 7.7 1908
    • WEB, WAS1, WAS2 Server : Ubuntu 16.04.2
  • Application & Server Information
    • Zabbix Server
      1. Zabbix Server(loopback) 기본 리소스 모니터링
      2. WEB Server 기본 리소스 및 HTTP 서비스 모니터링
      3. WAS1,2 Server 기본 리소스 모니터링
      4. Zabbix-Slack 연동하여 알람 발생 시 Slack에서 알람 수신
      5. apache-2.4.6, php-5.4.16, mysql-5.7.29, zabbix-4.4.6
    • WEB Server
      1. Docker-CE, docker-compose (container : apache, zabbix-agent)
      2. Docker Code는 GitHub으로 관리
      3. /*.jsp 요청을 was1,2 서버에게 로드 밸런싱(비율 1:1)
      4. apache-2.4.6, modjk tomcat-connectors-1.2.46
    • WAS1,2 Server
      1. Docker-CE, docker-compose (container : tomcat, zabbix-agent)
      2. Docker Code는 GitHub으로 관리
      3. tomcat-9.0.31, openJDK-1.8.0.242.b08-0.el7_7.x86_64

 

  • Project Architecture

 

  • GitHub

 

  • Zabbix & Slack

 

반응형
반응형

 

복습할겸, 앞으로의 프로젝트 목표를 기록할 겸 아주 조그만한 개인 프로젝트를 진행 하였습니다. (사실 아직 구축 환경과 규모가 너무 작아서 프로젝트라고 하기에도 민망하네요)

당장은 프로젝트라고 하기에도 민망한 아주 작은 규모지만 조금씩 늘려갈 생각이며, 최종 목표는 아래 플랫폼들을 사용하여 최종 프로젝트를 올해 안으로 완성 하는것으로 생각하고 있습니다.

  • AWS or OpenStack
  • Kubernetes
  • Docker
  • Ansible or Terraform
  • Git
  • Python or bash shell script (업무 자동화)
  • Zabbix or ELK
  • Rocket.Cha (사내 메신저 구현 및 모니터링 알람 수신)

이 외에 시간이 된다면 zimbra등을 사용하여 사내 메일 구현과 여러 서버들을 이중화하는것이 최종 목표 입니다.

 

  • Docker Apache-Tomcat 구성 환경

  • Cloud Platform : GCP
  • Private Registry : Google Container Registry
  • OS (Goole Compute Engine)
    • docker-machine : CentOS 7.7 1908
    • web, was1, was2 server : Ubuntu 16.04.2
  • Application
    • Docker-CE, Docker-Machine 
    • Apache-2.4.6 (web server 1ea)
    • tomcat-9.0.31 (was server 2ea)
    • openJDK-1.8.0.242.b08-0.el7_7.x86_64
    • modjk tomcat-connectors-1.2.46

 

전체적인 아키텍처와 이번 프로젝트 목표는 아래와 같습니다.

  1. GCE VM 인스턴스 1대에 docker-machine을 설치하며 필요한 VM 인스턴스는 docker-machine을 통해 docker-host provisioning
  2. docker-machine 서버는 ssh 접속으로 전체적인 컨트롤 서버 역할 수행 (Dockerfile은 Docker-Machine 서버에서 Google Container Registry로 업로드)
  3. Apache-Tomcat 연동 및 로드밸런싱을 구성(web 서버는 *.jsp에 대한 요청을 was1,2 서버에게 로드 밸런싱 )
  4. 모든 설치 및 설정은 Dockerfile 직접 작성하여 사용
  5. 제작된 context들은 모두 Google Container Registry에 보관

 

  • Dockerfile

# web1
FROM centos:7

RUN yum install -y httpd httpd-devel gcc gcc-c++ wget perl make &&  mkdir /worker
WORKDIR /worker/
RUN wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.tar.gz && tar zxvf tomcat-connectors-1.2.46-src.tar.gz
WORKDIR /worker/tomcat-connectors-1.2.46-src/native/
RUN ./configure --with-apxs=/bin/apxs \
        && make && make install \
        && sed -i 's/\#ServerName www.example.com:80/ServerName localhost/g' /etc/httpd/conf/httpd.conf \
        && touch /etc/httpd/conf/workers.properties \
        && echo -e "worker.list=loadbalancer\nworker.loadbalancer.type=lb\nworker.loadbalancer.balanced_workers=worker1,worker2\nworker.loadbalancer.sticky_session=1\n\nworker.worker1.type=ajp13\nworker.worker1.host=10.178.0.7\nworker.worker1.port=8010\nworker.worker1.lbfactor=1\n\nworker.worker2.type=ajp13\nworker.worker2.host=10.178.0.8\nworker.worker2.port=9010\nworker.worker2.lbfactor=1\n" > /etc/httpd/conf/workers.properties \
        && perl -p -i -e '$.==57 and print "LoadModule jk_module /usr/lib64/httpd/modules/mod_jk.so\n<IfModule jk_module>\n   JkWorkersFile /etc/httpd/conf/workers.properties\n   JkLogFile /var/log/httpd/mod_jk.log\n   JkLogLevel info\n   JkLogStampFormat \"[%a %b %d %H:%M:%S %Y]\"\n   JkMount /*.jsp loadbalancer\n</IfModule>"' /etc/httpd/conf/httpd.conf

CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
EXPOSE 80
# was1
FROM centos:7

RUN yum -y update && yum install -y java-1.8.0-openjdk-devel.x86_64 wget perl
ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
ENV export JAVA_HOME
ENV PATH=$PATH:$JAVA_HOME/bin
ENV export PATH

RUN wget http://mirror.navercorp.com/apache/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz \
	&& tar zxvf apache-tomcat-9.0.31.tar.gz \
	&& mv apache-tomcat-9.0.31 /usr/local/tomcat9 \
	&& perl -p -i -e '$.==114 and print "    <Connector protocol=\"AJP/1.3\" secretRequired=\"false\" address=\"0.0.0.0\" port=\"8010\" redirectPort=\"8443\" />\n"' /usr/local/tomcat9/conf/server.xml \
	&& echo "hi worker1" > /usr/local/tomcat9/webapps/ROOT/index.jsp
    
ENTRYPOINT ["/usr/local/tomcat9/bin/catalina.sh", "run"]
EXPOSE 8010
# was2
FROM centos:7

RUN yum -y update && yum install -y java-1.8.0-openjdk-devel.x86_64 wget perl
ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
ENV export JAVA_HOME
ENV PATH=$PATH:$JAVA_HOME/bin
ENV export PATH

RUN wget http://mirror.navercorp.com/apache/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz \
	&& tar zxvf apache-tomcat-9.0.31.tar.gz \
	&& mv apache-tomcat-9.0.31 /usr/local/tomcat9 \
	&& perl -p -i -e '$.==114 and print "    <Connector protocol=\"AJP/1.3\" secretRequired=\"false\" address=\"0.0.0.0\" port=\"8010\" redirectPort=\"8443\" />\n"' /usr/local/tomcat9/conf/server.xml \
	&& echo "hi worker2" > /usr/local/tomcat9/webapps/ROOT/index.jsp
    
ENTRYPOINT ["/usr/local/tomcat9/bin/catalina.sh", "run"]
EXPOSE 9010

 

  • Google Container Registry

 

  • 서비스 확인

  • Apache

 

  • Tomcat Load Balancing

 

반응형

'Project' 카테고리의 다른 글

[Project] 개인 프로젝트 기록(4)  (5) 2020.04.06
[Project] 개인 프로젝트 기록 (3)  (3) 2020.03.30
[Project] 개인 프로젝트 기록 (2)  (6) 2020.03.23

+ Recent posts