목록전체 글 (269)
Coding Planet
테스트 준비 모든 노드에서 GlusterFS 볼륨이 마운트되어 있고, /mnt/glustervolume 경로에 액세스할 수 있는지 확인한다. Nginx 서비스가 Docker Swarm 클러스터에서 실행 중이며, 모든 레플리카가 정상적으로 작동하고 있는지 확인한다. sudo docker service ls 명령어로 서비스 상태를 확인할 수 있다. 장애 시뮬레이션 클러스터 내의 워커 노드 중 하나를 선택하여 장애를 시뮬레이션한다. 예를 들어, worknode1을 선택했다고 가정해보자 선택한 노드(worknode1)에서 네트워크 연결을 임시로 끊거나, 가상 머신을 사용하는 경우 가상 머신을 중지시키는 방법으로 의도적으로 장애를 발생시킬 수 있다. vm을 중단시켰다. 서비스 가용성 검증 worknode1 이외의..
GlusterFS 공유 볼륨을 Docker Swarm 서비스의 컨테이너에 마운트하고자 한다. 이렇게 하면 서비스를 이루는 모든 컨테이너가 공유 볼륨에 저장된 데이터를 읽고 쓸 수 있게 된다. Docker에서는 --mount 옵션을 사용하여 서비스를 생성할 때 볼륨을 마운트할 수 있다. 이전 포스트에서 설치한 nginx-service 서비스를 삭제하고 다시 서비스를 생성하면서 볼륨을 마운트 하겠다. 1. 기존 서비스 삭제 새로운 서비스를 만들거나 서비스가 없는 상태라면 생략 sudo docker service rm nginx-service 2. GlusterFS 볼륨 마운트 모든 노드에 GlusterFS 공유 볼륨(/data/brick1)을 마운트해야 한다. 마운트 포인트가 이미 설정되어 있지 않다면, 먼..
GlusterFS를 사용하여 Docker Swarm 클러스터에서 공유 볼륨(Shared Volume)을 생성하고 관리하는 것은 높은 가용성과 데이터의 영속성을 보장하는 좋은 방법이다. GlusterFS는 분산 파일 시스템으로, 여러 서버에 걸쳐 파일을 저장하여, 서버 중 하나가 실패해도 데이터에 계속 접근할 수 있게 해준다. 공유 볼륨이란 여러 노드가 네트워크를 통해 동일한 데이터에 접근할 수 있도록 하는 저장 공간이다. 이런 볼륨은 다양한 물리적 위치에 있는 여러 서버에서 동일한 파일 시스템을 동시에 사용할 수 있게 해준다. 공유 볼륨은 데이터를 여러 노드에 분산하여 저장할 수 있게 해주므로, 하나의 서버에 문제가 생겨도 데이터에 계속 접근할 수 있다. 이는 시스템의 가용성과 내구성을 향상시킨다. 1...
pre 태그는 HTML에서 사전 서식을 지정한 텍스트를 표시하는데 사용된다. 이 태그를 사용하면 공백, 탭, 줄바꿈 등이 그대로 보존되어 텍스트가 원본의 형태로 보여진다. 주로 코드 블록이나 고정폭 텍스트를 표시할 때 사용된다. 그러나 기본적으로 pre 태그는 자동 줄바꿈을 지원하지 않아, 긴 텍스트는 가로 스크롤이 생기게 되어 사용자 경험을 해칠 수 있다. 아래 게시판 예시에서 글의 가로줄이 너무 길어 표가 레이아웃을 벗어나 공백 영역까지 확장되었다. 내용 이를 해결하기 위해 CSS의 white-space 속성과 word-wrap 속성을 사용하여 자동 줄바꿈을 구현할 수 있다. white-space 속성은 요소 내부의 공백 문자(whitespace) 처리와 줄 바꿈 규칙을 지정한다. 공백문자는 문자가 ..
| Docker Service 이해하기 Docker의 기본적인 제어 단위는 컨테이너이다. docker run, docker rm등의 대상은 컨테이너인 것이다. 이와 마찬가지로 docker swarm에서의 제어 단위는 service이다. 서비스는 같은 이미지에서 생선된 컨테이너들을 의미한다. 따라서 서비스를 제어함으로써 서비스에 소속된 모든 컨테이너를 제어할 수 있는 것이다. 서비스 내에 컨테이너는 1개 이상 존재하며 컨테이너는 각 노드에 할당된다. 이 때, 노드에 할당된 컨테이너를 태스크(Task)라고 한다. ubuntu에서 이미지를 생성하고 컨테이너를 3개로 설정했을 경우 스웜 스케쥴러는 서비스의 정의에 따라 컨테이너를 적절한 노드에 배치한다(로드 밸런싱). 이 때 서비스 정의에 의해 생성된 복제 컨테..
이전 포스트에서 가상 머신위에 우분투를 설치하여 노드를 만들고 도커를 설치했다. 이들을 효율적으로 관리하기 위해 MobaXterm을 통해 각 가상환경에 세션을 연결해두었다. 이제 매니저 노드를 통해 Docker swam을 설치하고 클러스터링을 할 것이다. 클러스터링를 관리하는 명령어는 ManagerNode에서 이루어져야한다. 각 vm을 실행하고 터미널로 작업하는 것과 동일하다. 현재 실습을 위해 mangerNode, workNode1, workNode2가 만들어진 상태이다. 1. 매니저 노드 - 도커 스웜 설치하기 매니저 노드에서 해당 명령어를 실행하면 docker swarm에 가입하기위한 토큰일 발행된다. 워커노드는 이 토큰을 통해 해당 클러스터링에 가입할 수 잇다. $ docker swarm init..
이전 포스트에서 가상 머신위에 우분투를 설치하여 노드를 만들고 도커를 설치했다. 이 들을 효율적으로 관리하기 위해 MobaXterm을 통해 각 가상환경에 세션을 연결해두었다. 이제 매니저 노드를 통해 Docker swam으로 한 클러스터링을 해제할 것이다. 모든 명령어는 ManagerNode에서 이루어져야한다. 각 vm을 실행하고 터미널로 작업하는 것과 동일하다. 현재 mangerNode, workNode1, workNode2가 만들어진 상태이다. 1. 모든 서비스 삭제 우선, Swarm 클러스터에서 실행 중인 모든 서비스를 삭제 docker service rm $(docker service ls -q) 2. 노드에서 Swarm 클러스터 해제 각 노드에서 클러스터를 해제한다. 매니저 노드와 워커노드의 실..
이전 포스트에서는 가상머신위에 우분투를 설치하고 도커를 설치했다. 동일한 과정으로 매니저 노드 1개, 워코노드 2개 총 3개의 노드를 만들어 두면 된다. 이 세 노드를 클러스터링해서 각 화면을 띄우고 관리할 수도 있지만 MobaXterm으로 ssh로 각 서버에 연결해서 관리하는 방법이 있다. 여러개의 가상머신을 관리하기에 용이하다. 먼저 각 우분투에서 MobaXterm연결을 위해 ssh를 설치해야 한다. 1. Open SSH Server 설치 $ sudo apt update $ sudo apt install openssh-server 2. SSH Server 실행 SSH를 설치하면 자동으로 실행된다. 로그에서 active (running)이면, 실행 중인 상태다. $ sudo systemctl statu..
이전 포스트에서 설치했던 workerNode에 Docker을 설치하고자한다. 터미널을 열고 리눅스 환경에 도커를 설치하는 명렁어를 그대로 따라가면 된다. 도커 설치시 계정생성시 설정한 비밀번호가 필요하다. 과정 중 디스크 사용에 대한 허가요청에는 모두 Y로 하면 된다. 실행환경 : Ubuntu 22.04.3 LTS 1. 우분투 시스템 패키지 업데이트 sudo apt-get update 2. 필요한 패키지 설치 sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common 3. Docker의 공식 GPG키를 추가 curl -fsSL https://download.docker.com/linu..
Docker Swarm은 Docker 엔진을 기반으로 하는 컨테이너 오케스트레이션 도구다. 여러 대의 도커 호스트들을 클러스터링하여 관리하고, 컨테이너들을 이들 호스트에 걸쳐 분산시켜 실행할 수 있게 해준다. 이를 통해 개발자와 시스템 관리자는 대규모의 컨테이너화된 애플리케이션을 쉽게 배포, 관리 및 확장할 수 있다. 또한 쿠버네티스에 비해 간단하므로 배우기 쉬운 장점이 있다. Docker Swarm의 노드들은 워커노드와 오케스트레이션을 담당하는 매니저노드로 나뉘는데 기본적으로 설치 방식은 동일하다. Docker Swarm 실습을 위해 VM VirtualBox를 통해 가상머신에 우분투를 설치하고 각각 독립적인 Docker 실행 환경을 만들었다. Oracle VM VirtualBox와 우분투 설치파일(IS..