프로그래밍 노트/인프라

실행에 앞서 PC에 docker가 설치되어 있어야 한다. 1. kafka-docker repository clone $ git clone https://github.com/wurstmeister/kafka-docker 2. docker-compose-single-borker.yml 수정 해당 compose 파일을 사용하면 zookeeper-1대, broker(kafka)-1대 를 실행시킬 수 있다. multi broker는 나중에 기회가 되면 셋팅 해보자. 로컬에서 실행하므로 KAFKA_ADVERTISED_HOST_NAME을 127.0.0.1로 수정한다. version: '2' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181"..
2021.04.30 - [프로그래밍 노트/인프라] - [kafka] 카프카 특징 (데이터 모델, 디자인 특징) 카프카의 고가용성과 리플리케이션 카프카는 높은 가용성을 보장하기 위해 리플리케이션(Replication)기능을 제공한다. (각각의 파티션을 리플리케이션함) 리플리케이션 팩터와 리더, 팔로워의 역할 카프카에는 리플리케이션 팩터(Replication Factor)라는 것이 존재하며, 변경은 설정 파일에서 할 수 있다. (server.properties) default.replication.factor = 2 (기본값은 1로 설정되어 있음) peter 토픽에 대해 리플리케이션 구성한 모습이며, peter 토픽은 브로커1과 브로커2에 위치 원본 - 리더 / 복제본 - 팔로워 용어를 사용 리더 - 읽기/..
2021.05.04 - [프로그래밍 노트/인프라] - [kafka] 카프카 고가용성과 리플리케이션(장애 극복 방법) 대용량의 실시간 데이터 처리 배치 전송, 파티션, 분산 기능 구현 고가용성 중앙 시스템 역할을 하는 중요한 서비스에서 장애가 발생하더라도 서비스에 영향이 없도록 데이터의 안정적인 저장을 위해 리플리케이션 기능과 분산된 서버에서 자동으로 파티션의 리더를 선출하는 기능을 구현 카프카 디자인 특징 1. 분산 시스템 분산 시스템 장점 단일 시스템보다 더 높은 성능 하나의 서버(노드) 등이 장애가 발생하면 다른 서버(노드)가 대신 처리 시스템 확장 용이 2. 페이지 캐시 처리량을 높이기 위한 전략으로 페이지 캐시 기능 추가 빠른 액세스를 하기 위해 OS의 페이지 캐시를 이용하도록 디자인 페이지 캐시..
유튜브로 카프카 관련 영상을 봤는데, 주키퍼란 아이가 등장하였다. 주키퍼에 대해 간략히 조사해보았다. 일단, 주키퍼를 알아보기 위해 카프카가 어떻게 구성되어 있는지 알아야 한다. 카프카 구성 카프카는 크게 프로듀서, 카프카(브로커), 컨슈머, 주키퍼로 분류할 수 있다. 프로듀서 : 카프카와 통신하면서 메시지를 보내는 역할 컨슈머 : 카프카와 통신하면서 메시지를 가져오는 역할 주키퍼 : 컨슈머와 통신, 카프카의 메타데이터 정보를 저장, 카프카의 상태관리 등 목적으로 이용 카프카 주키퍼? 분산 애플리케이션을 사용하게 되면, 분산 애플리케이션 관리를 위한 안정적인 코디네이션 애플리케이션이 추가로 필요하게 된다. 안정적인 코디네이션 서비스로 검증된 주키퍼를 많이 사용하게 된다. 주키퍼 는 분산 애플리케이션을 위..
젠킨스를 Master/Slave로 보통 구성한다고 한다. (사실 실무에서는 사용해본적이 없지만, 많은 블로그나 책에서 이렇게 사용한다고 한다.) 도커 컴포즈를 연습해볼겸 젠킨스를 Master/Slave로 구축을 해보자, Master : 관리 기능 및 작업 실행 지시 Slave : 실제 작업 진행 Master 젠킨스 컨테이너 실행하기 1.docker-compose.yml 작성 version: "3" services: master: container_name: master image: jenkins/jenkins:lts ports: - 9900:8080 volumes: - ./master_jenkins_home:/var/jenkins_home volumes 항목은 호스트와 컨테이너 사이에 파일을 공유할 수 ..
Scale Out 접속된 서버의 대수를 늘려 처리 능력을 향상시키는 것(수평확장) 비교적 단순하지만 다수의 처리를 병행적으로 실행해야 하는 경우 적합 Scale Up 서버 그 자체의 처리 능력을 향상 시키는 것(수직확장) 스케일 아웃으로 정합성 유지가 어려운 데이터베이스 서버에 적합(OLTP)
문제점 프로젝트에서 nginx를 사용하기로 하여, nginx에 .vue 파일을 위치시키고 그 뒤에 springboot를 위치시켰다. nginx는 reverse proxy 역할을 하며, 클라이언트의 모든 요청을 받는다. 요청 URI가 /api로 시작하면 뒷단 springboot(proxy_pass 이용)로 요청을 보내고, /api로 시작하지 않는다면 vue router에게 URI에 해당하는 vue 페이지를 리턴하도록 한다. nginx.conf server{ location ^~/api{ proxy_pass http://127.0.0.1:8080; } } 이런식으로 구성을 하여 프로젝트를 진행하였는데, 문제가 발생했다. 바로 springboot 에서 request.getRemoteAddress(); 를 호출..
location 블록 location 변경자 location [= |~ |^~|@] pattern { ... } : 맨 앞에 오는 선ㅌ낵적 인자는 로케이션 변경자(location modifier) 심볼. 엔진엑스가 패턴을 비교하는 방법과 패턴의 속성 (문자열 또는 정규식)을 정의한다. server{ server_name corn_tistory location =/test { ... } } # = : 지정 패턴과 정확히 일치 ex) corn_tistory/test (일치) cron_tistory/test?param=value (일치) corn_tistory/test/ (불일치) # ~ : 정규표현식과 일치 # ~* : 대소문자를 구분하지 않으며 정규표현식과 일치 # ^~ : 지정한 패턴으로 시작해야 함. ..
HTTP 코어 모듈 HTTP서버의 핵심적인 블록, 지시어, 변수를 포함한다. 블럭 HTTP 모듈은 아래와 같은 세 가지 논리적 블록을 제공한다. 프로토콜 수준(http 블록), 서버 수준(server 블록), 요청 URI 수준(location) http : 엔진엑스의 HTTP 부문과 관련된 모듈의 지시어와 블록을 정의 server : 하나의 호스트를 선언하는데 사용하며, http 블럭 안에서만 사용할 수 있다. (하나의 웹사이트라고 생각) location : 웹사이트의 특정 위치에 적용할 설정 그룹을 정의한다. server블록이나 다른 location 블록 안에 삽입할 수 있다. 모듈 지시어 표현 방법 : 지시어 소켓과 호스트 환경 listen : 웹 사이트용 리스닝 소켓이 사용하는 IP 주소와 포트를 ..
2020/05/09 - [프로그래밍 노트/인프라] - OpenSSL을 사용하여 ROOT CA 생성 및 SSL 인증서 발급하기_1 2020/03/10 - [그 외 ... (정리해야함)/꿀팁] - 인증서 해쉬와 디지털 서명(Hash and Digital Signing) ROOT CA 인증서 생성 OpenSSL로 root ca의 개인키와 인증서를 만들어 보자 1. CA가 사용할 RSA Key pair(public, private key) 생성 $ openssl genrsa -aes256 -out ./rootca.key 2048 (2048bit 개인키 생성) $ chmod 600 rootca.key (group, other permssion 제거) 2. CSR(Certificate Signing Request)..
깡냉쓰
'프로그래밍 노트/인프라' 카테고리의 글 목록 (2 Page)