분류 전체보기 25

Jenkins 설치 (Docker)

Jenkins 설치 먼저 Bridge 네트워크를 생성합니다. sudo docker network create jenkins Jenkins 이미지에서 docker 명령을 사용하기 위해서는 docker:dind 컨테이너가 필요하며, 이 이미지를 받아 실행합니다. sudo docker run \ --name jenkins-docker \ --rm \ --detach \ --privileged \ --network jenkins \ --network-alias docker \ --env DOCKER_TLS_CERTDIR=/certs \ --volume jenkins-docker-certs:/certs/client \ --volume jenkins-data:/var/jenkins_home \ --publish 2..

쿠버네티스의 도커 지원 중단 및 대응 방안

컨테이너와 컨테이너 오케스트레이션 도구 '컨테이너'는 어플리케이션과 그 어플리케이션을 구동하기 위해 필요한 환경을 호스트로부터 격리한 공간을 의미합니다. 컨테이너를 사용하면 하나의 큰 어플리케이션을 서비스 단위로 구분하여 배포할 수 있으며, 각각이 격리된 공간이기 때문에 변경이 있더라도 상호간 영향을 미치지 않습니다. 마이크로 서비스를 지향하는 현대 개발 환경에서 컨테이너는 N개 이상이 될 수 있으며, 다수의 컨테이너를 생성/소멸/스케줄링/로드 밸런싱/클러스터링 할 수 있도록 편의를 제공하는 도구를 '컨테이너 오케스트레이션 도구' 라고 합니다. 컨테이너 오케스트레이션 도구의 도입 목적 컨테이너화된 서비스는 배포에 상당한 편의를 가져옵니다. 그리고 이들을 관리하는 '컨테이너 오케스트레이션 도구'를 이용하면..

[Ubuntu] - Docker 설치 방법

도커의 기본 개념 도커는 리눅스의 응용 프로그램을 프로세스 격리 기술을 사용하여 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트 입니다. 도커는 응용 프로그램과 그 의존성을 ‘컨테이너’라는 표준화된 유닛으로 패키징하며, 여기에는 라이브러리/시스템 도구/코드/런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다. 그리고 이 컨테이너는 어떠한 리눅스 서버에서도 구동이 가능하다는 특징이 있어, MSA를 지향하는 현재 운영 환경과 맞물려 많은 서버에서 이용되고 있습니다. 흔히 가상머신과의 비교를 많이 하는데, 가상머신은 서버 하드웨어를 가상화하는 반면 컨테이너는 서버의 운영체제를 가상화 한다는 것에 차이점이 있습니다. 도커는 리눅스 커널이 제공하는 기능들 위에 빌드되며, 컨테이너를 위한 운영체..

[CentOS] - SELinux 해제 방법

SELinux는 리눅스의 보안을 위한 서비스로, 보안 설정으로 인해 사용하는 어플리케이션에 따라 패킷의 프록시 등이 정상적으로 이루어지지 않을 수 있습니다. 만약 특정 기능이 동작하지 않는 경우, SELinux를 아예 비활성 처리하기 보다는, 해당 기능만 SELinux에서 허용하도록 설정하는 것을 권장합니다. SELinux의 활성화 상태를 확인하려면 다음 명령을 입력합니다. sestatus 서비스의 테스트를 위해 SELinux를 임시로 사용 해제하려면 다음 명령을 입력합니다. setenforce 0 만약 SELinux를 영구적으로 해제하려면 설정파일을 다음과 같이 변경합니다. sudo nano /etc/selinux/config # 설정 변경 SELINUX=disabled # 서버 재부팅 sudo reb..

[CentOS] - PostgreSQL 설치

PostgreSQL 설치 PostgreSQL은 매년 메이저 버전을 출시하고 있으며, 최초 릴리즈 이후 5년간 메이저 버전을 지원합니다. PostgreSQL 공식 홈페이지에 게재된 보안 정책에 따르면, 알려진 모든 문제는 다음 릴리즈에 항상 반영되므로 최신 버전의 사용을 권장하고 있습니다. 그러나 yum 패키지 관리자에 등록된 PostgreSQL의 디폴트 버전은 9.x 이며, 이 버전은 2021. 11.11을 마지막으로 더 이상 지원하지 않고 있습니다. 현 시점에서 최신 버전은 v14.x 으로, 최신 버전 설치를 진행합니다. sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-rep..

RabbitMQ - 메시지 속성

메시지의 주요 속성 컨텐츠 헤더 프레임에 사용할 수 있는 메시지 속성은 다음과 같습니다. 구분 설명 content-type 소비자에게 메시지 본문을 해석하는 방법을 전달합니다. content-encoding 메시지 본문의 압축 방법이나 인코딩 방법 전달합니다. message-id correlation-id 메시지와 메시지 응답을 고유하게 식별해 메시지를 추적하는 데 이용합니다. timestamp 메시지 크기를 줄이고 메시지 생성 시점에 대한 표준 시간을 전달합니다. expiration 메시지의 만료를 전달합니다. delivery-mode 큐에 메시지를 추가할 때 메모리에 저장할지 / 디스크에 먼저 저장할지 설정합니다. app-id user-id 문제가 발생한 발행자 어플리케이션을 추적하는데 사용합니다. ..

RabbitMQ - 메시지 큐의 주요 속성

메시지 전달 구조 Producer로부터 메시지가 발행되면 Exchange에 전송되며, 여기에서 어떤 Queue에 라우팅 할 것인지 결정하게 됩니다. 그리고 라우팅 된 메시지는 Consumer가 가져가기 전까지 Queue에 잠시 대기하는 구조입니다. Producer가 메시지 발행 발행된 메시지를 Exchange에 전송 Exchange에서 적절한 Queue로 메시지 라우팅 Consumer가 메시지를 소비할 때까지 Queue에 대기 Consumer가 메시지를 소비하면 Queue에서 해당 메시지 삭제 이 때 Queue에서의 메시지는 선입선출이 기본입니다. 만약 클라이언트의 부재 등으로 인해 소비되지 않고 있는 메시지가 있는 경우, 뒤에 남아있는 메시지도 모두 소비되지 않기 때문에 TIMEOUT을 설정하여 별도의..

Web STOMP 플러그인 설치

Web STOMP 플러그인 Web STOMP는 웹소켓 연결을 기반으로 클라이언트와 통신하며, 이를 이용하면 프론트엔드 페이지에서 백엔드를 거치지 않고 RabbitMQ의 메시지를 바로 수신할 수 있습니다. # 플러그인 설치 sudo rabbitmq-plugins enable rabbitmq_web_stomp # RabbitMQ 서버 재 시작 sudo systemctl restart rabbitmq-server # 통신에 사용되는 방화벽 해제 sudo firewall-cmd --zone=public --permanent --add-port=15674/tcp sudo firewall-cmd --reload # RabbitMQ를 설치하면 기본적으로 Web STOMP 예제 파일이 내장되어 있습니다. # 이를 확인..

RabbitMQ 설치

Erlang 설치 RabbitMQ는 Erlang 언어로 개발되었으며, 구동을 위해서는 해당 언어를 설치해야 합니다. # erlang과 종속적인 패키지 설치 sudo yum install socat sudo yum install logrotate # erlang을 repository에 추가 wget https://packages.erlang-solutions.com/erlang-solutions-2.0-1.noarch.rpm sudo rpm -Uvh erlang-solutions-2.0-1.noarch.rpm # erlang 설치 sudo yum install erlang # erlang 설치 확인 erl Erlang과 RabbitMQ의 호환되는 버전은 [링크] 페이지를 통해 확인할 수 있습니다. Rabb..

메시지 브로커 비교 (Apache Kafks vs RabbitMQ vs ActiveMQ)

메시지 브로커의 도입 배경 프로그램의 동작 방식을 실시간으로 제어하기 위해, 서버로부터 임의의 시점에 데이터를 수신해야 하는 경우가 발생하였습니다. 클라이언트가 자신에게 설정된 신규 정책이 있는지 서버에 주기적으로 확인하는 Polling 방식(또는 주기적인 체크가 부담스러울 경우 Long Polling 방식) / 웹 소켓 등 현재 알고 있는 통신 방식이 후보에 올랐으며, 이 외에 다른 통신 기법이 있는지 추가적인 확인을 하게 되었습니다. 자료를 찾던 도중 [메시지 브로커] 라는 개념을 접하게 되었으며, 프로젝트에 적용하기에 적합한 기술인지 확인하게 되었습니다. 메시지 브로커 비교 (Apache Kafka vs RabbitMQ vs ActiveMQ) Apache Kafka [메시지 브로커 도입기] - Ap..