본문 바로가기

개발/인프라

(7)
멀티 노드 카프카 구성도 예시 목표여러 서버에서 카프카를 운영 및 사용할 때 데이터 유실을 최소화하고 서버 장애에 유연하게 대처할 수 있도록 함가정세 대의 서버가 존재.각 서버는 서로 다른 서버의 2181로 통신할 수 있는 환경.하루 처리하는 메시지 수는 수천 정도로 그렇게 크지 않음.카프카 컨슈머나 프로듀서도 세 서버에서 모두 사용함. 구성도 예시1. topic configs- replication.factor : 3데이터 유실을 최소화 하기 위해 사용 가능한 모든 서버의 브로커에 데이터를 모두 저장함2. broker configs- zookeeper.connect : {server 1 host}:2181,{server 2 host}:2181,{server 3 host}:2181멀티 노드 환경에서 브로커를 관리하기 위해 주키퍼 앙상..
Git Action 으로 배포 자동화하기 혼자 작업할 때는 크게 불편하지 않기도 하고, 예전에 Git Action을 시도했다가 실패하기도 했어서 손수 배포를 했었는 데, 협업을 하는 상황에선 아무래도 불편하다보니까 다시 시도해보았다. 잘 모르겠는 부분이 아직 있긴 하지만, 테스트 & 배포 작업을 수행하는 Git Action 이 의도대로 잘 적용되어서 글로 정리해본다. 0. Git Work Flow 가장 최소한의 시나리오를 가정해 브랜치들을 세팅해두었다 main: 실제 릴리즈된 소스 관리 deploy : 테스트 서버에 배포된 소스 관리 develop : 개발 작업 소스 관리 develop -> deploy -> main 으로 반영하며, develop -> deploy 에 대해 테스트 & 테스트 서버 배포를 수행하는 Git Action을 적용해보았..
유저에게 도커 권한 주기 카테고리를 도커로 할지 리눅스로 할지 조금 고민했는 데, 일단 도커로! 우분투에서 도커를 실행할 때 가끔 이런 문구를 볼 때가 있다. Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied 내가 접속한 유저가 도커 명령어를 실행할 권한이 없을 때 발생한다. 좀 더 길게 말하면, 도커 데몬에 연결하려다 실행파일을 실행할 권한이 없어서 발생한다. /var/run..
계정 별 SSH 설정 리눅스를 사용하다 보면 사람마다, 또는 서비스마다 계정을 나누는 경우들이 종종 있다. 세팅되어있는 상태로 사용하기만 하다가 처음으로 계정의 ssh 키를 만들어 공유해보았다. 복습 겸 사이드 프로젝트의 테스트 서버에도 앱을 위한 계정을 만들고 ssh 키를 발급했고 기록용으로 남긴다. 1. 계정 생성 기존에 있는 계정이나 그룹을 먼저 확인해본다. cat /etc/passwd cat /etc/group 적당한 이름으로 새로 유저를 만들어준다. 아래는 예시로 test1 이란 이름으로 만든다. sudo adduser test1 그럼 test1(그룹아이디)란 그룹과 test1(유저 아이디)가 새로 생성되고 /home 아래 유저명으로 된 디렉터리가 생성된다. 2. ssh 키 발급 ssh 키를 발급하는 명령어는 아래와..
TLS 1.0 은 취약하다! nginx에 ssl_protocols를 따로 설정하지 않으면 기본 값으로 TLSv1, TLSv1.1, and TLSv1.2 등을 지원한다 (nginx 버전 0.7.65 이상, OpenSSL 버전 1.0.1 이상). 근데 TSLv1  까지는 보안에 취약하다!! 뚠!!그래서 1.TLSv1 vs TLSv1.1 vs TLSv1.2의 차이랑 2. nginx에서 사용하는 TLS 버전 확인 방법, 3. nginx 에서 TLS 버전 변경 방법, 정확히는 버전 1을 사용하지 않는 방법을 정리해보았다.TLSv1 vs TLSv1.1 vs TLSv1.21. TLSv1.1 이 TLSv1과 다른 점 (RFC 4346)- CBC 모드에 대한 공격에 방어하기 위해 명시적인 Initialization Vector(IV)가 아닌 imp..