본문 바로가기
웹/책 & 강의

그림으로 공부하는 IT 인프라 구조 [응용이론, 네트워크]

by sun__ 2022. 2. 4.

[5장] 인프라를 지탱하는 응용이론

캐시, 인터럽트, 폴링, I/O 크기, 저널링, 복제, 마스터-워커, 압축, 오류검출

  • 캐시는 데이터 갱신이 많은 시스템에서 불리할 수 있다. 
  • 리눅스의 NTP(시간동기)처리는 폴링방식으로 ntp 서버에 질의하는 방식
  • DB의 IO블록 크기는 fs의 블록크기를 고려해야 한다.
  • 마스터-워커는 상호 접속관계의 일종으로, 한 서버가 관리자가 돼 모든 것을 제어한다. <-> 피어 투 피어
  • 오류검출: checksum, parity bit 소개

 

저널링

성능이 최우선인 시스템엔 부적합할 수 있다.

 

저널: 트랜잭션이나 매일 갱신되는 데이터의 변경 이력을 가리킴. 저널을 남기는 것을 저널링이라고 한다.

  • 데이터의 일관성이나 일치성이 확보되면 필요 없어진다.
  • 데이터 복구 시 rollback, rollforward에 이용된다.
  • 트랜잭션 단위로 일치성 보증. 트랜잭션 도중 장애 발생 시 트랜잭션 파괴. 
  • 저널은 우선 메모리의 버퍼에 저장된 후 디스크에 기록됨. 디스크 기록 전에 장애 발생 시 버퍼 잃을 수 있음.

ext3

  • 저널링 기능 갖춘 파일시스템. 트랜잭션 시에 버퍼 정보를 디스크에 기록하지 않아서 완전하지는 않다.
  • 5초에 한번 기록. fsck 명령 실행 시 저널링에 의한 복구작업 진행.

오라클DB

  • 저널을 "REDO로그" 라고 부름 (오라클 외엔 WAL{write ahead log, 로그 선행쓰기}라고 부르기도 함)
  • 트랜잭션 종료 시(커밋 시) 버퍼가 디스크에 기록.
  • REDO로그가 파손되면 안되므로 이중화해서 보호

 

데이터 복제

데이터 갱신이 많은 시스템에서 오버헤드가 크다.

 

MySQL

  • 마스터 - 워커 DB 분리. 마스터는 갱신, 참조 모두 가능. 워커는 참조만 가능.
    1. 데이터 변경 SQL을 마스터의 바이너리 로그에 기록
    2. 워커DB의 I/O 스레드가 바이너리 로그를 취득해서 워커의 릴레이로그로 저장한다
    3. SQL 스레드가 릴레이 로그를 참조해서 워커DB에 변경 SQL을 반영한다.

 

 


[6장] 시스템을 연결하는 네트워크 구조

네트워크, 계층 구조, 프로토콜, TCP/IP 개괄, HTTP, TCP, IP, 이더넷, TCP/IP 이후

  • HTTP: 데이터를 소켓에 쓰거나 읽는 것에 관함.
  • MSS, maximum segment size: TCP 세그먼트 최대 크기
  • MTU, maximum transfer unit: L2 전송 가능 최대 데이터 크기
  • MAC: 네트워크 통신을 하는 하드웨어에 할당된 주소. (ex. 02:48:8A:CE:00:FF, 모두 1이면 브로드캐스트)
  • OSI 7 layers
    • L7, application: 애플리케이션 처리, message
    • L6, presentaion: 데이터 표현 방법
    • L5, session: 통신 시작과 종료 순서
    • L4, transport: 네트워크의 통신 관리. port to port, TCP. segment
    • L3, network: 네트워크 통신 경로. src to dest, IP. datagram
    • L2, data link: 직접 접속돼 있는 기기 간 처리. hop to hop 이더넷. frame
    • L1, physical

TCP

소켓에 기록된 메세지는 소켓의 큐를 경유해서 소켓별로 준비된 전용 메모리 영역인 소켓 버퍼(원형 큐)에서 처리됨. 

 

MSS는 MTU에 의존.

 

3 way handshake를 통한 connection.

 

sequence번호, ack번호를 통한 데이터 순서 보증.

 

데이터 누락 감지해서 재전송하는 메커니즘. - duplicated ack

 

flow control, congestion control - 자세한건 따로

 

 

IP

IP주소를 이용해서 최종 목적지에 데이터 전송하기 위함. 또는 그것을 돕는 라우팅.

 

ip adress

  • 네트워크부 + 호스트부 / CIDR 표기 혹은 서브넷 마스크
  • 호스트부가 모두 0이면 네트워크 주소, 모두 1이면 브로드캐스트 주소

사설 네트워크: 가정이나 회사 내에서 사용하는 네트워크. 사설이라고 해도 사용가능 사설 IP 주소가 정해져있다.

 

사설 IP 주소: 인터넷 상의 호스트 등과 통신이 불가. 공공 주소, 사설주소가 모두 있는 호스트를 두고 이를 경유해서 인터넷과 통신하도록 함. 이런 호스트는 보통 기본 게이트웨이(default gateway)라는 라우터가 설치돼 있다.

 

공공 IP 주소: 인터넷 상에서 통신이 가능한 IP 주소

 

라우팅: 라우터가 라우팅 테이블을 참조하여 ip패킷의 헤더에서 목적지 주소를 확인해서 어디로 보내야할지 확인하는 것. TTL을 두는 등의 방법 사용.

 

 

이더넷

동일 네트워크 내의 장비까지 운반. 케이블 통신에서 사용. MAC주소(L2 주소) 사용해서 목적지로 보냄. L3의 라우팅 테이블과 유사하게 ARP테이블(MAC테이블) 사용함.

 

VLAN, virtual LAN: 물리 구성에 좌우되지 않고 설정만으로 네트워크를 나누기 위한 방법.

  • 네트워크를 VLAN ID 기준으로 관리.
  • 물리적으로 떨어져 있는 네트워크 스위치라도 동일 네트워크에 참가시키는 것이 가능
  • 예를들어 같은 L2 스위치에 물린 컴퓨터들이라도 VLAN ID가 다른 포트를 사용하는 경우엔 별도의 L3 스위치 없이 통신 불가하다.

 

TCP/IP를 이용한 통신 이후

Q: L2 스위치도 일종의 컴퓨터니까 프레임을 전달할 때 OS 커널이 처리할까? 

A: 아님. ASIC이라는 전용 회로를 사용해서 HW 레벨에서 처리함. 매우 빠르다.

 

프레임이 최종 목적 서버의 NIC에 전달되면, NIC 수신 큐에 저장해서 OS 인터럽트나 폴링을 이용해서 커널 내에 프레임을 복사한다. 그리고 이더넷,ip 헤더를 제거하면서 목적지 포트에 대응하는 소켓에 데이터를 전달한다. 마지막으로 tcp 헤더를 제거하고 애플리케이션 데이터를 재구성해서 소켓을 통해 애플리케이션에 데이터를 전달한다.

 

 

 


TIPS

섀도우 페이징: 저널링과 마찬가지로, 파일 시스템에서 하드웨어 장애에 대처하기 위한 기술. 변경정보를 작성하지 않고 파일 갱신은 모두 "신규 영역"에서 함. 

{TODO: 뭔지 잘 모르겠음..}