반응형
Docker Swarm 구축 시에 가상머신으로 노드를 띄우고자 한다면 ‘Docker-Machine’을 활용해보는 것도 좋은 옵션입니다. Docker-Machine은 가볍고 최적화된 OS 이미지로 Swarm 노드들을 생성하고 클러스터 운영/관리를 돕는 커맨드-라인 기반의 플러그인입니다. 사전 준비요소 Docker 서비스를 구동시키는 Docker Engine과 가상머신 생성을 위한 드라이버를 제공하는 VirtualBox나 VMware와 같은 도구가 미리 설치되어 있어야 합니다. Docker Engine: https://docs.docker.com/engine/install/ Virtualbox: https://www.virtualbox.org/wiki/Downloads Install Docker Engine..
1. 사전 준비물 Docker Swarm으로 클러스터를 운영하기 위해서 다음과 같은 요소들이 필요합니다. 2개 이상의 PC Docker Swarm은 기본 Docker 시스템과 달리, 멀티 노드로 확장하는 클러스터 운영 프레임워크입니다. 따라서 호스트 머신 하나로는 구축이 의미가 없으며, 둘 이상의 PC를 배치하고 통신을 열어주던지, 또는 다수의 PC를 운영할 여력이 안 된다면 가상머신을 이용하는게 좋습니다. 가상머신으로 클러스터를 구성하고자 한다면 Vmware/VirtualBox*로 비어 있는 상태의 Linux를 미리 준비해두면 됩니다. 좀 더 간결한 가상머신 구축을 원한다면 *Docker Machine(지금은 더 이상 패치가 없다고 하네요 😪)을 활용하는 방법도 있으니, 이와 관련해서는 바로 다음 포스..
1. 네트워크 주소 식별 체계에 관해 네트워킹을 하는 장치들은 제각기 2종류의 고유 주소를 갖고 있습니다. 바로 MAC 주소와 IP 주소입니다. 대게 IP 주소만을 이용하여 패킷이 목적지에 해당하는 호스트를 찾아간다고 생각할 수 있으나, 이는 잘못된 생각입니다. 통신 단말들은 LAN이라는 그룹 환경을 이루고, 패킷이 최종 목적지까지 도달하는 과정에서 스위치나 브릿지와 같은 중계 장비를 통과해야만 하는데, 이 때 목적지의 MAC 주소가 있어야 하기 때문이죠. 직전에 라우팅 과정에서 IP 주소가 쓰이므로, 결국 데이터 송신자는 목적지의 MAC 주소와 IP 주소를 모두 알고있는 상태에서 통신을 수행하는 셈입니다. 다만, 한 가지 의아한 부분이 있습니다. 한 번도 통신해본 적이 없는 상대방의 MAC 주소를 어떻..
1. 데이터 준비 시각화할 데이터를 서비스에 올리기 위해서 아래의 3가지 방법을 이용할 수 있습니다. Kibana 웹 인터페이스에서 직접 데이터 업로드 (csv, tsv, json 등의 데이터 포맷 허용) 터미널 또는 프롬프트에서 Elasticsearch REST API로 데이터 업로드 (json 포맷) Logstash로 파일을 읽어들여서 Elastic Engine에 저장 위 3가지 케이스들을 하나씩 테스트해보기 위해서 데이터 샘플을 준비하였습니다. 아래의 데이터는 2017~2021년 사이의 Bitcoin 거래 통계를 매주마다 기록한 리스트입니다. trade.csv trade.json 방식 A: Kibana 웹 인터페이스에서 데이터 업로드 터미널에서 명령어를 입력할 필요도 없고, 드래그 앤 드롭으로 곧바..
Wireshark는 네트워크 트래픽 분석 도구로서, 사용자가 쉽게 녹아들수 있는 UI와 풍부한 유틸리티를 갖추고 있습니다. 다만, 이러한 장점은 기껏해야 수백~수만개의 패킷 레코드를 분석하는데서 유용하지, 만약 사내, 기관 또는 학교의 전산실처럼 적게는 시간마다 수백만~수억개의 패킷이 쌓이는 환경이라면요? 실제로 제가 실무에서 경험해본 바로는 Wireshark에 기록되는 패킷 수가 100만개가 넘어가면서부터 프로그램이 버벅이더니 500~1000만개 정도의 패킷이 쌓일 정도면 아예 Wireshark가 멈춰버리곤 하였습니다. Wireshark에 표시해야할 패킷 정보, 메타 데이터의 양과 UI 렌더링 프로세스를 시스템 메모리가 감당 못하기 때문이었죠. 어찌저찌 pcap 파일이 열렸더라도, 저런 방대한 양의 레..
1. 스케일업에 따른 컨테이너 운용 방식 변화 Docker로 이제 막 컨테이너들을 다뤘을 때는 모든 애플리케이션을 하나의 호스트(localhost) 머신 안에서 서비스하였습니다. 그러나 단순 실습/테스트 수준을 넘어 Netflix나 여타 다른 웹 플랫폼 수준의 서비스로 나아가기 위해서는, 단일 호스트가 감당할 수 있는 시스템 자원 및 트래픽 양, 이용자 수를 훨씬 초월하는 수준의 거대한 시스템을 구상해야만 합니다. 당연히 컨테이너도 수십, 수백, 정말 많게는 수천 개가 필요해지겠죠. 여러 대의 PC 또는 서버 각각에 역할을 부여하고 컨테이너를 분산시켜 서비스를 효율적으로 운용해야할 때인 겁니다. 그러나 Docker 자체만으로 전체 시스템을 구축하려다보면 다양한 문제들을 마주칠 수 밖에 없습니다. 컨테이너..