분류 전체보기 (172) 썸네일형 리스트형 docker compose와 database를 같이 쓸때 주의할점 회사에서 하나의 사내서버로 모든 아키텍쳐(디비, 깃랩 러너, 기존 애플리케이션)을 옮겨달라는 요청을 받고 docker compose로 한번에 끝내려다가 문제가 발생했다. 먼저 docker-compose.yml을 확인해보자 version: '3.8'services: discovery: image: gram14.mooo.com:5000/discovery:latest container_name: discovery ports: - "8761:8761" networks: - ticketing-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8761/actuator/health"] .. 깃랩 러너 설정 설정 파일 수정 sudo nano /etc/gitlab-runner/config.toml 설정을 변경해주고 # 병렬 처리할 쓰레드 수concurrent = 6check_interval = 0connection_max_age = "15m0s"shutdown_timeout = 0[session_server] session_timeout = 1800[[runners]] name = "ticketing runner" url = id = 5 token = "yx5CCfszhkByNstAyQKo" token_obtained_at = 2024-07-29T02:21:44Z token_expires_at = 0001-01-01T00:00:00Z executor = "docker" [runners.cu.. kafka를 Grafana와 Prometheus로 모니터링 하는법 docker-compose 를 활용해서 카프카를 모니터링 할수 있다.지금 내 상황은 마치 실전 처럼 카프카 서버가 따로있고 다른 서버에서 모니터링을 하는 방법이다.(즉, localhost에서 모든것을 하는것이 아니라 카프카 서버가 분리돼있다.) 이때 필요한것은 Grafana (웹 시각화 도구), Prometheus (메트릭을 수집), kafka-exporter (Kafka 클러스터에서 운영 상태와 성능에 대한 메트릭을 Prometheus로 보냄) 이다. docker-compose.yml services: zookeeper: image: confluentinc/cp-zookeeper:latest environment: ZOOKEEPER_SERVER_ID: 1 ZOOKEEPER.. kafka를 docker compose로 실행하기 항상 느끼는거지만 ChatGPT에만 의존하면 안되고 구글링 또는 스택오버플로우랑 교차 검증을 해야한다.그냥 GPT의 yml대로만 하니까 계속 오류만 발생하고 또 GPT에게 묻고 같은 오류가 반복됐다.GPT가 잘못된 솔루션을 반복할때가 비로소 개발자가 구글링을 통해 문제해결력을 기를 타이밍인가 보다. 먼저 GPT가 알려준 docker-compose.yml을 보자 services: zookeeper: image: wurstmeister/zookeeper:3.4.6 ports: - "2181:2181" kafka: image: wurstmeister/kafka:2.12-2.4.0 ports: - "9092:9092" environment: KAFKA_B.. 집에다 LG 그램으로 홈 서버 랙을 만들어보자 내가 쓰던 그램 한개와 2개의 중고 그램을 당근으로 구해서 총 3개의 그램으로 3개의 우분투 서버를 설치하고 네트워크로 묶어서 집에다가 간이 서버실 랙을 구축해보자. 일단 그램을 택한 이유는 저전력에 소음과 발열 적고 무엇보다 내가 몇년동안 썼기 때문에 안정성이 믿을만 했다. 그램으로 깔맞춤하기 위해서 당근에서 매물을 구하는데 좀 힘이 들었다. 3개 그램 모두 램을 16GB로 통일했다.홈서버의 이름은 그램 스테이션이다. 서랍은 총 3개인데 발열을 잡기 위해 개조를 하여 바람이 통하도록 했다. 그램은 서랍속에 들어가는 사이즈라서 한개의 서랍이 곧 랙 선반 하나가 되는것이다. 사용가능한 서버가 3개로 늘어남에 따라 비싼 AWS를 사용하지 않고 다양한 실험이 가능해졌다. 1. 카프카 브로커 확장 가능2. 쿠버.. 범재와 수재 사이 평범한 재능을 가진 사람이 어떻게 수재가 되거나 수재와 비등해 질수 있을까?개발을 하다보면 압도적으로 잘하는 사람도 보게되고 벽을 느끼고 나 자신의 한계를 발견하고 머리가 깨지고 성장하는 날의 연속인것 같다. 그래서 어떻게 하면 내가 더 성장할수 있을까 생각해보았다. 천재들이 공통적으로 하는말이 있는데 그들은 머리속에 거대한 칠판이 있다고 표현을 한다.이 칠판에서 방정식을 썼다가 지우고 전의 공식을 대입하고 여러가지 작업을 수행할수 있는것이다.이 칠판은 쉽게 지워지지 않고 연산 작업을 할수 있는 공간으로 컴퓨터로 치면 RAM 같은 공간이다.컴퓨터 공학의 아버지인 폰 노이만이 컴퓨터 구조(CPU, RAM, HDD)를 만들었을때 자신의 머리속을 본따지 않았을까? 물론 나에게도 단기 기억같이 머릿속에 작은 칠.. 운영에 있어서 중요한것 (실무) 운영에 있어서 실무를 할때 중요한것이 무엇일까?바로 지속적인 통합과 배포(CI-CD) 이다.도커를 통해 쉽게 CI-CD가 가능해져서 MSA 애플리케이션을 쉽게 만들고 배포할수있다.하지만 간과해서는 안되는게 로그의 중요성이다. 아무리 프로그램을 만드는 개발자라도 영업 상대는 결국 사람이기때문에 고객의 컴플레인에 대처하기 위해서는로그 파일을 분석하고 사실관계를 파악하여 복구해주는 과정이 필연적이다. 만약 로그파일이 없다면 내가 힘들게 만든 애플리케이션의 신뢰도는 나락으로 떨어질것이다. 도커로 배포를 반복하다보면 컨테이너가 만들어지고 없어지고 다시 만들어지는 과정에서 이전의 로그들은 컨테이너랑 같이 소멸되고 만다. 이런한 것을 방지하고자 원래 서버와 도커 컨테이너간의 볼륨(저장공간)을 마운팅 해줌으로써 컨테이.. 도커 파일 빌드시 not found 문제 도커 빌드시에는 기본적으로 도커파일이 있는곳이 기준이고 그 상위폴더는 접근을 할수가 없다.이게 일반 서버면 사실 상관이 없는데 msa 같은 서버일경우 문제가 생길수 있다.msa 서버중 하나가 루트 폴더에 있는 어떤 패키지를 의존하게 된다면 그 패키지를 어떻게 도커 빌드에 포함 시킬수 있을까?이처럼 도커파일이 있는 위치랑 내가 생각하는 위치(루트 폴더)가 다르게 되면 바로 에러(not found)를 직면하게 된다 # 첫 번째 단계: Gradle을 포함한 JDK 이미지를 사용하여 빌드합니다.FROM gradle:7.6.1-jdk17 AS builder# 작업 디렉토리 설정WORKDIR /app# 필요한 파일들을 복사합니다.COPY ./kdmp-base-auth/build.gradle /app/build.gr.. 이전 1 2 3 4 5 ··· 22 다음