목록CS 지식/서버 구축 (7)
Taking baby-developer steps
데이터베이스(DB) 구조화된 데이터를 저장하고 관리하는 시스템. 논리적인 데이터 구조 및 데이저 조작을 담당한다. 효율적인 데이터 조작을 위한 쿼리 언어(SQL 등)를 지원하며, 데이터의 무결성을 유지하고 보안을 제공하는 등의 기능을 수행한다. ex> MySQL, PostgreSQL, Oracle 등 저장소(스토리지) 데이터의 물리적인 저장 공간. 데이터베이스에서 사용되는 실제 데이터 파일, 로그 파일 등을 저장하는 데 사용된다. 데이터베이스는 저장소를 효과적으로 활용해 데이터를 읽고 쓰고 관리한다. ex> 하드 디스크 드라이브(HDD), SSD, 클라우드 스토리지 등 현업에서는 데이터베이스 서버의 스토리지를 따로 두는 경우가 흔하다는 말을 들었다. 순간 DB와 스토리지의 차이를 내가 명확하게 알고 있지..
쿠버네티스는 마스터 노드와 워커노드라는 두 가지 유형의 노드로 구성된다. 마스터 노드와 워커노드로 구성된 쿠버네티스 시스템을 클러스터라고 한다. 클러스터는 사람이 개입하지 않아도 마스터 노드에 설정된 내용에 따라 워커 노드를 관리하며 자율적으로 동작한다. 마스터 노드 전체적인 제어를 담당한다. 마스터 노드에서는 컨테이너를 실행하지는 않는다. 워커 노드에서 실행되는 컨테이너를 관리한다. 마스터 노드의 초기 설정후 조정만 하면 관리자가 직접 워커 노드를 관리하지 않는다. 워커노드 실제 서버에 해당한다. 컨테이너가 실제 동작하는 서버이다. 설치 프로그램 쿠버네티스를 사용하려면 1. 쿠버네티스 소프트웨어 2. CNI(Container Networking Interface, 가상 네트워크 드라이버) 3. etcd..
쿠버네티스 컨테이너 오케스트레이션 도구의 일종이다. k8s라고 줄여쓰기도 한다.(k와 s 사이 8개 글자가 있다는 의미) 여러개의 컨테이너(=서버)를 관리하는 도구이기에 대규모 시스템에 적용되는 경우가 많다. 쿠버네티스로 관리되는 시스템은 이를 전제로 개발되어야한다. 쿠버네티스는 여러 대의 물리적 서버가 존재하는 것을 전제로 한다. 도커 컴포즈를 사용한다고 해도, 물리적 서버가 여러 대라면 반복 작업을 해야한다. 또 물리적 서버를 일일이 모니터링하는 것도 큰 수고가 따른다. 이런 상황에서 쿠버네티스는 컨테이너의 생성 및 관리를 편하게 하는 도구이다. 정의 파일(매니페스트 파일)만 작성하면 이 정의에 따라 모든 물리적 서버에 컨테이너를 생성하고, 생성한 컨테이너를 관리한다. 참고문헌 : 그림과 실습으로 배..
도커를 한마디로 정의하자면 "데이터 또는 프로그램을 격리시키는 기능"을 제공하는 소프트웨어이다. 프로그램을 격리하는 주체를 컨테이너라고 하며, 이 컨테이너를 다루는 기능을 제공하는 소프트웨어가 도커이다. 도커를 사용하려면 도커 소프트웨어의 본체인 도커 엔진을 설치해야한다. 도커 엔진 외에도 "이미지"가 필요한데, 컨테이너를 만들 틀 같은 존재라고 생각하면 된다. 용량이 허락하는 한 하나의 도커에서 여러개의 컨테이너를 만들 수 있다. 도커는 내부적으로 리눅스를 사용한다. 따라서 컨테이너 내부에서도 리눅스만 동작 가능하다. 서버 환경 격리가 왜 필요한가 서버 구축시 설계할 때는 문제가 없던 프로그램끼리도 실제로 설치하면 오류가 발생하는 일이 있다. 대부분 문제의 원인은 "프로그램 간 공유"에 있다. 일반적 ..

현재 내 컴퓨터에서(터미널에서) 디폴트로 사용하는 java와 javac의 버전을 다음 명령어로 확인 할 수 있다. java -version javac -version 내가 사용하고 있는 mac OS에서는 brew를 이용해 openjdk@17를 깔았다. brew install openjdk@17 그런데, 이 패키지 어디에 깔렸는지를 알 필요가 있었다. 다음 명령어로 brew가 해당 패키지를 어느 경로에 저장했는지 알 수 있다. brew --prefix openjdk@17 보통은 /user/local/opt/openjdk@17/ 이 Homebrew를 사용해 OpenJDK 17을 설치했을 때의 기본 설치 위치라고 하는데, 나는 /opt/homebrew/opt/openjdk@17 에 설치되어있었다. 다음 명령어..

3tier 구조 중 wordpress-php 서버를 만드는 도중, alpine:3.17 기반 컨테이너 내부에서 wp core install command로 wordpress를 설치하려는데 다음과 같은 에러가 발생했다. 이 에러는 WordPress가 MySQL database에 connect 하기 위해 "필요한 extension"을 php server가 가지고 있지 않다는 의미라고 한다. (https://kinsta.com/knowledgebase/php-installation-missing-mysql-extension-required-by-wordpress) 1. php, wordpress의 버전을 확인한다. 최신 버전의 php와 오래된 버전의 wordpress를 사용하는 경우 이와같은 문제가 발생 할 ..

EC2 (ubuntu) 환경에서 3tier 구조의 nginx, wordexpress + php, mariadb 서버가 돌아가는 컨테이너의 이미지를 make 파일로 빌드하고 컨테이너가 돌아가는 중, 갑자기 인스턴스 ssh 연결이 끊겼고, 혹시나 하는 마음에 인스턴스를 재부팅 해봤지면 여전히 connection timed out 오류가 났다. https://ppost.tistory.com/entry/AWS-인스턴스-생성-후-주의할것 AWS 인스턴스 생성 후 주의할것. 이번엔 아주 심플하고 쉬운 AWS 인스턴스 생성 후 쉘스크립트인 PuTTY(이하 쁘띠)와 파일질라를 통해 접속하기까지 생길 수 있는 오류를 기록한 글이다. 시작!AWS 인스턴스 생성에 대한것은 콘솔에 ppost.tistory.com https:..