목록분류 전체보기 (261)
Coding Planet
1. 관계대수의 개념 원하는 데이터를 찾기 위한 절차적 언어 2. 순수 관계 연산자 기호 설명 SELECT σ 선택: 조건을 만족하는 튜플(열)을 선택함. 수평적 PROJECT π 투영: 선택된 속성(행, 컬럼)에 대한 값들로 구성된 새로운 관계를 반환함. 수직적 JOIN ⨝ 조인: 두 관계를 결합하여 관련된 정보를 연결함. DIVISION ÷ 분해: 한 관계의 튜플이 다른 관계의 모든 튜플과 관계를 가질 때 해당 튜플을 선택함. A,B 두 테이블에 대해 A DIVISON B는 B 테이블의 조건을 만족하는 튜플들을 테이블 A에서 추출하는 연산. 3. 일반 집합 연산자 기호 설명 합집합 ∪ 두 관계의 모든 튜플을 합친 결과를 반환함. 교집합 ∩ 두 관계의 공통 튜플만을 반환함. 차집합 - 한 관계에 있는 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bnKiut/btsGqtOK2eJ/qrtD5GygqQJ9aCgRKT8p5k/img.png)
1. 디지털 권한 관리 DRM(Digital Rights Management)이란? 디지털 콘텐츠의 사용 권한을 관리하는 기술. 콘텐츠 제작자나 배포자가 저작물을 불법 복제나 배포로부터 보호하기 위해 사용한다. 예를 들어, 음악이나 영화, 전자책 등의 파일을 구매한 사용자가 이를 무단으로 공유하지 못하도록 제한한다. 2. DRM의 제어 흐름 콘텐츠 제작자가 콘텐츠(파일, 미디어 데이터 등)를 만들어 콘텐츠 공급자에게 제공 콘텐츠 공급자는 콘텐츠를 클리어링 하우스(Clearing House)에 등록하며, 이곳에서 콘텐츠에 대한 권한관리와 라이선스를 관리 클리어링 하우스는 콘텐츠 사용 권한을 관리하고, 라이선스 발급, 결제 처리 등을 담당 사용자는 콘텐츠 서비스를 통해 콘텐츠를 요청하고, 이를 받기 위해서는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQylU5/btsFK9KEBgX/0xw4k3RcE7caSrgZoPKaG0/img.png)
테스트 준비 모든 노드에서 GlusterFS 볼륨이 마운트되어 있고, /mnt/glustervolume 경로에 액세스할 수 있는지 확인한다. Nginx 서비스가 Docker Swarm 클러스터에서 실행 중이며, 모든 레플리카가 정상적으로 작동하고 있는지 확인한다. sudo docker service ls 명령어로 서비스 상태를 확인할 수 있다. 장애 시뮬레이션 클러스터 내의 워커 노드 중 하나를 선택하여 장애를 시뮬레이션한다. 예를 들어, worknode1을 선택했다고 가정해보자 선택한 노드(worknode1)에서 네트워크 연결을 임시로 끊거나, 가상 머신을 사용하는 경우 가상 머신을 중지시키는 방법으로 의도적으로 장애를 발생시킬 수 있다. vm을 중단시켰다. 서비스 가용성 검증 worknode1 이외의..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EWapV/btsFK1MAV2P/JKhOlVDxIRglb7TD1KzSa0/img.png)
GlusterFS 공유 볼륨을 Docker Swarm 서비스의 컨테이너에 마운트하고자 한다. 이렇게 하면 서비스를 이루는 모든 컨테이너가 공유 볼륨에 저장된 데이터를 읽고 쓸 수 있게 된다. Docker에서는 --mount 옵션을 사용하여 서비스를 생성할 때 볼륨을 마운트할 수 있다. 이전 포스트에서 설치한 nginx-service 서비스를 삭제하고 다시 서비스를 생성하면서 볼륨을 마운트 하겠다. 1. 기존 서비스 삭제 새로운 서비스를 만들거나 서비스가 없는 상태라면 생략 sudo docker service rm nginx-service 2. GlusterFS 볼륨 마운트 모든 노드에 GlusterFS 공유 볼륨(/data/brick1)을 마운트해야 한다. 마운트 포인트가 이미 설정되어 있지 않다면, 먼..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/svmPm/btsFKMhBZGw/cKtVbXCaSyy6ievo3yd2T0/img.png)
GlusterFS를 사용하여 Docker Swarm 클러스터에서 공유 볼륨(Shared Volume)을 생성하고 관리하는 것은 높은 가용성과 데이터의 영속성을 보장하는 좋은 방법이다. GlusterFS는 분산 파일 시스템으로, 여러 서버에 걸쳐 파일을 저장하여, 서버 중 하나가 실패해도 데이터에 계속 접근할 수 있게 해준다. 공유 볼륨이란 여러 노드가 네트워크를 통해 동일한 데이터에 접근할 수 있도록 하는 저장 공간이다. 이런 볼륨은 다양한 물리적 위치에 있는 여러 서버에서 동일한 파일 시스템을 동시에 사용할 수 있게 해준다. 공유 볼륨은 데이터를 여러 노드에 분산하여 저장할 수 있게 해주므로, 하나의 서버에 문제가 생겨도 데이터에 계속 접근할 수 있다. 이는 시스템의 가용성과 내구성을 향상시킨다. 1...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cfAIEG/btsFK93juon/TBoEFCOzlm4ft5pnK1kCv1/img.png)
pre 태그는 HTML에서 사전 서식을 지정한 텍스트를 표시하는데 사용된다. 이 태그를 사용하면 공백, 탭, 줄바꿈 등이 그대로 보존되어 텍스트가 원본의 형태로 보여진다. 주로 코드 블록이나 고정폭 텍스트를 표시할 때 사용된다. 그러나 기본적으로 pre 태그는 자동 줄바꿈을 지원하지 않아, 긴 텍스트는 가로 스크롤이 생기게 되어 사용자 경험을 해칠 수 있다. 아래 게시판 예시에서 글의 가로줄이 너무 길어 표가 레이아웃을 벗어나 공백 영역까지 확장되었다. 내용 이를 해결하기 위해 CSS의 white-space 속성과 word-wrap 속성을 사용하여 자동 줄바꿈을 구현할 수 있다. white-space 속성은 요소 내부의 공백 문자(whitespace) 처리와 줄 바꿈 규칙을 지정한다. 공백문자는 문자가 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wBz8Z/btsFBaQuRiD/IjH0CW6PQyTqKeTU0FQjgk/img.png)
| Docker Service 이해하기 Docker의 기본적인 제어 단위는 컨테이너이다. docker run, docker rm등의 대상은 컨테이너인 것이다. 이와 마찬가지로 docker swarm에서의 제어 단위는 service이다. 서비스는 같은 이미지에서 생선된 컨테이너들을 의미한다. 따라서 서비스를 제어함으로써 서비스에 소속된 모든 컨테이너를 제어할 수 있는 것이다. 서비스 내에 컨테이너는 1개 이상 존재하며 컨테이너는 각 노드에 할당된다. 이 때, 노드에 할당된 컨테이너를 태스크(Task)라고 한다. ubuntu에서 이미지를 생성하고 컨테이너를 3개로 설정했을 경우 스웜 스케쥴러는 서비스의 정의에 따라 컨테이너를 적절한 노드에 배치한다(로드 밸런싱). 이 때 서비스 정의에 의해 생성된 복제 컨테..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bhV48r/btsFEhf5MXg/c4jIfYRgJ67eYxZjtXXAq1/img.png)
이전 포스트에서 가상 머신위에 우분투를 설치하여 노드를 만들고 도커를 설치했다. 이들을 효율적으로 관리하기 위해 MobaXterm을 통해 각 가상환경에 세션을 연결해두었다. 이제 매니저 노드를 통해 Docker swam을 설치하고 클러스터링을 할 것이다. 클러스터링를 관리하는 명령어는 ManagerNode에서 이루어져야한다. 각 vm을 실행하고 터미널로 작업하는 것과 동일하다. 현재 실습을 위해 mangerNode, workNode1, workNode2가 만들어진 상태이다. 1. 매니저 노드 - 도커 스웜 설치하기 매니저 노드에서 해당 명령어를 실행하면 docker swarm에 가입하기위한 토큰일 발행된다. 워커노드는 이 토큰을 통해 해당 클러스터링에 가입할 수 잇다. $ docker swarm init..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8clzo/btsFBMuQLQ7/vWe9VrvDh81Mi8obHqMO70/img.png)
이전 포스트에서 가상 머신위에 우분투를 설치하여 노드를 만들고 도커를 설치했다. 이 들을 효율적으로 관리하기 위해 MobaXterm을 통해 각 가상환경에 세션을 연결해두었다. 이제 매니저 노드를 통해 Docker swam으로 한 클러스터링을 해제할 것이다. 모든 명령어는 ManagerNode에서 이루어져야한다. 각 vm을 실행하고 터미널로 작업하는 것과 동일하다. 현재 mangerNode, workNode1, workNode2가 만들어진 상태이다. 1. 모든 서비스 삭제 우선, Swarm 클러스터에서 실행 중인 모든 서비스를 삭제 docker service rm $(docker service ls -q) 2. 노드에서 Swarm 클러스터 해제 각 노드에서 클러스터를 해제한다. 매니저 노드와 워커노드의 실..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/9ED3D/btsFCxcTv7f/WADvZO1kgmNVFXMnwYcDv1/img.png)
이전 포스트에서는 가상머신위에 우분투를 설치하고 도커를 설치했다. 동일한 과정으로 매니저 노드 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..