이론 정리/인프라

네트워크 인프라 기초 공부 및 정리

철매존 2022. 8. 18. 22:33
728x90

IT인프라, 왜 알아야 할까??

어플리케이션을 동작시키기 위해서는 다양한 요소들에 대한 고민이 필요하다.

이 때 우리는 시스템을 크게 기능적 요구사항과 비기능적 요구사항으로 나누어 생각해볼 수 있는데, IT인프라 환경은 비기능적 요구사항에서 중요한 역할을 차지한다.

어플리케이션 개발에 있어서는 크게 기능적 요구사항 / 비기능적 요구사항 에의 고민이 필요하다.

  • 기능적 요구사항
    • 시스템이 무엇을 해야 하는지에 대한 정의
      • 시스템이 수행해야 하는 기능
      • 기술 세부정보
      • 데이터 조작 및 처리
      • 등등...
  • 비기능적 요구사항
    • 대체적으로 품질이나 속성에 대한 내용
    • 인프라는 비기능적 요구사항과 밀접한 관련을 가지고 있다.
      • 제품 요구사항
        • 시스템이 얼마나 빨리 실행되고, 얼마나 많은 CPU나 메모리가 존재해야 하는지?
        • 장애가 났을 때를 대비하여 고가용성(HA)를 어떻게 얻어놓아야 하는지?
      • 조직 요구사항
        • 사용될 프로그래밍 언어는 어떤 것을 사용할 것인지?
        • 설계 방법 등등..
      • 외부 요구사항
        • 법률적 / 윤리적 요구사항 포함

IT인프라란 무엇일까??

IT Infrastructrure란, IT서비스의 기반이 되는 Information Technology(IT) 구성 요소들의 집합으로 IT구성 요소에는 서버, 스위치, 스토리지 같은 하드웨어 장비 뿐만 아니라 운영체제(OS)같은 소프트웨어 및 네트워크도 포함된다.

하드웨어

서버, 스위치, 라우터 등이 포함된다.
해당 장비들을 설치하고 운영하기 위한 Data Center도 하드웨어에 포함된다.

소프트웨어

서버 설치 이후, 서버에 올라가는 요소들(Windows / Linux) 가 포함된다.
OS위에 올라가는 아파치 등의 웹서비스, 미들웨어 등도 소프트웨어에 포함된다.

네트워크

케이블(LAN선 연결), 스위치(서버와 케이블로 연결된 L2스위치), 라우터 역할을 해주는 L3스위치 등등.. 다양한 네트워크 장비들이 포함된다.

다양한 IT인프라 유형 (On-Premise / Public)

여기서는 크게 On-Premise , Public Cloud 로 분류된다.

On-Premise

기업이 자체 데이터센터를 보유하고, 그 안에 서버와 네트워크 등의 장비 등을 구축하고 자체적으로 운영하는 방식이다.
클라우드 시작이 활발해지기 이전까지 가장 많이 쓰이던 방식이다.
Private Cloud가 이 On-Premise환경에 속한다.
기업 입장에서 데이터센터의 관리부터 물리시스템 구축 및 운영까지 관리 coverage가 넓다.

Public Cloud

기업 입장에서 Public Cloud를 사용하면 물리적 구축의 경우는 Cloud Service Provider(CSP)에서 진행해주기 때문에 더이상 데이터센터를 구축하거나 운영할 필요가 없고, 여기서 받아온 것을 쓰기만 하면 된다.

다양한 IT인프라 유형 (Cloud Computing)

클라우드는 크게 Private Cloud와 Public Cloud로 나눌 수 있다.

두 분류로 나누는 기준은 인프라가 존재하는 위치 와 운영 방식 , 그리고 사용할 수 있는 사용자 이다.

Private Cloud

일반적으로 On-Premise방식으로 구축/운영된다.
그렇기 때문에 인프라 위치가 자체 데이터센터에 위치한다.
또한 특정 그룹만이 접근 가능하다.

사내 직원들만 이용할 수 있는 서비스에 주로 사용한다.
이는 기업이 원하는대로 구축이나 운영이 가능하다는 장점을 가진다.

Public Cloud

불특정 다수를 대상으로 누구나 사용할 수 있게 해준다.
CSP에 위치와 운영을 일임한다.
그렇기 때문에 인프라 사용의 부담이 없어지고 고객을 위한 다양한 추가가 가능하다. (PaaS, Saas 등등..)
또한 트래픽에의 대응이 빠르게 이루어진다.


인프라의 근간을 이루는 환경과 하드웨어

사용자에게 IT서비스를 제공하기 위해서는 서버, 스토리지, 스위치 같은 물리 장비들을 구축하고 운영해야 한다.
또한 이런 장비들을 배치하고 동작시킬 수 있는 데이터센터가 존재해야 한다.

데이터센터

서버나 스토리지등의 장비들을 보관하는 시설이다.
이 서버나 스토리지 등은 Rack이라는 곳에 Mount되어 운영된다.

서버의 구성요소

서버는 네트워크를 통해 클라이언트에게 정보를 제공하는 컴퓨터 시스템이다.
서버에는 수많은 구성요소들이 존재하지만, 대부분 고객 입장에서 고려하는 중요 요소로는
CPU , Memory , Disk , Network Interface Card(NIC) 이다.

Disk

Disk는 서버의 데이터 저장공간 역할을 해주는 부품이다.
일반적으로 On-Premise 에서는 OS용도의 Disk와 실제 데이터 저장을 위한 공간용 Disk를 따로 구분해서 장착하고 운영하게 된다.
m.2 같은 서버 안에 장착되는 형태의 녀석도 있다.

Panel

System Insight Dispaly / LCD Panel ← 회사마다 부르는 명칭이 다르다.
서버 안의 부품들의 상태를 확인할 수 있도록 도와주는 디스플레이이다.

UID Button

서버 작업을 들어가기 전에 엔지니어들이 꼭 누르는 버튼이기도 하다.
이 버튼을 누르면 작업할 부분이 초록색으로 빛나게 된다.

Network Interface Controller(LAN카드)

NIC부분에서

이 네모난 구멍 하나하나가 실제 케이블로 연결되는 부분이다.

IPMI (iLO, IDRAC)

iLo . IDRAC <- 회사마다 부르는 명칭이 다름.

서버를 윈격으로 관리할 수 있게끔 도와주는 인터페이스이다.

이 서버를 원격으로 관리한다는 이야기의 뜻은 만약 데이터센터에 서버를 설치하고 운영 도중 갑자기 서버의 서비스 네트워크가 안된다거나 갑작스레 다운되는 경우 재설정이나 재시작을 원격에서 가능하도록 해주는 것이다.

또한 로그를 전달시켜 주기도 한다.

Power Supply

서버에 전력을 공급해 준다.

Fan

서버의 열감을 낮춰줄 수 있도록 cooling 역할을 해준다.

CPU와 Memory

서버에서 이 두개는 서버 성능과 직결되는 아주 중요한 구성요소이다.

무작정 설치할 수 있는게 아니라, 서버 사양에 따라 설치할 수 있는 개수가 달라진다.

또한 서버 모델에 따라 설치 가능 부품이 달라지기 때문에, 사전에 이에 관한 검사를 해 주어야 한다.

CPU

일반적으로 CPU사양을 고려할 때에는 클럭 속도와 core개수를 본다.

클럭 개수는 CPU가 초당 실행하는 사이클 수를 GHz단위로 측정하며, core는 개수가 많을수록 멀티태스킹을 할 수 있기 때문에 성능적으로 유리하다.

  • 클럭 속도
    • CPU가 초당 시행하는 싸이클 수를 GHz단위로 측정한 것을 뜻한다.
    • 즉 클럭 속도가 빠를수록 CPU의 연산 속도가 빠르다.
  • core
    • CPU의 뇌라고 생각하면 편하다.
    • 실제 모든 계산 및 연산을 core에서 진행한다.
    • 즉 core수가 많을 수록 성능적으로 유리해질 것이다.

Memory

메모리는 CPU에서 처리해야 하거나, 처리한 데이터를 보관하는 공간이기에 대용량일수록 좋다.

다만 메모리는 원하는 대로 꽂을 수 있는 것은 아니다.

기존에 할당되어 있는 메모리 슬롯 이상으로 꽂을 수 없을 뿐 아니라, 꽂을 때에도 순서에 유의해야 한다.

여기서 p1, p2는 CPU인데, 이 CPU가 만약 하나만 꽂혀 있다면 그 양 옆의 메모리 슬롯에만 메모리를 꽂아주어야 한다.

소켓을 두 개 사용한다면 메모리 개수를 균등하게 분배하여 꽂아야 한다.

그리고 여기서도 순서에 맞추어 장착해야한다.

예를 들어,

p1, p2를 모두 사용하고 8개의 메모리를 꽂는다고 하면

CD - AB를 양쪽에 균등히 넣어주게 되는 것이다.

디스크와 RAID

디스크

디스크는 HDD와 SSD가 있다.

  • HDD
    • 자기디스크 기반으로 만들어졌다.
    • 가격이 싸다.
  • SSD
    • 플래시 메모리 기반으로 만들어졌다.

RAID

만약에 서비스 실행 도중에 다운될 경우 어떻게 할까?

RAID란 저장 장치 여러개를 묶어 사용하는 기술로, 가용성과 고성능을 위해 사용된다.

다양한 동작 방식이 존재하며(RAID 0~6, 10, JBOD 등등...) 상황에 맞게 선택하여 사용하게 된다.

고가용성을 위해서는 하기의 두 가지 방법을 사용하게 된다.

  • 패리티
    • 오류 검출 기능 사용
  • 디스크 미러링
    • 데이터 분산 저장

Network 이중화

네트워크 통신이 되지 않는다면 궁극적으로 사용자에게 서비스를 제공할 수 없게 된다.

이를 방지하기 위해 네트워크도 이중화 혹은 다중화 구성이 가능하다.

이 작업을 전문용어로 Teaming 혹은 Bonding 이라고 부른다.

원격 서버 관리 - IPMI

IPMI는 원격으로 서버를 관리할 수 있게 도와준다고 했는데, 그래서 실제로 이 IPMI를 사용할 때에는 전용 스위치에 케이블을 딴 후, 관리 페이지를 사용할 수 있다.

이것도 제조사 / 벤더마다 구성이 다르니까 그때마다 사용하면 된다.

베어메탈 서버

On-Premise상에서 사용하는 것처럼, 하나의 Cloud에서 물리 서버를 통째로 사용하는 방식이다.

물리 장비 위에 OS설치 후 여러 application들이 동작하는 방식이다.

VM을 사용하는 경우, 여러 VM들이 여러 하드웨어 리소스를 점유하기 때문에 성능이 제한될 수 있는데, 베어메탈의 경우는 하나를 통으로 쓰기 때문에 이런 문제에서 자유로울 수 있다.

가상 서버

일반적으로 클라우드에서 만드는 대부분의 서버는 가상 서버로 제공된다.

위의 베어메탈과는 조금 다르게 구성되어 있다.


물리장비 위에 Hypervisor이라는 것이 올라가 있는데, 이것 덕분에 하나의 물리 장비 위에 여러 OS가 올라갈 수 있게 된다.

이것이 가상화를 가능하게 해주는 플랫폼이다.

Passthrough

그래픽카드 리소스를 특정 VM에서만 독점적으로 사용하는 방식이다.

네트워킹

네트워크를 통해 장비들은 서로 통신할 수 있게 되며, 이를 통해 정보와 자원의 공유가 가능하다.

이 네트워크의 이해에 있어 가장 중요하고 기반이 되는 것이 바로 OSI7계층이다.

OSI7계층은 국제표준화기구(ISO)가 발표한 네트워크 통신 모델로, 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층간 상호 작동하는 방식을 정해 놓은 것이다.
신뢰성 있고, 원할한 통신을 수행하기 위해 모든 장비들이 지켜야 하는 통신 규약이기에 모든 컴퓨터 및 네트워크 장치는 OSI참조 모델을 참고하여 만들어진다.

이게 TCP/IP 4계층에 비해 올드하고 이론적인게 아니냐? 할 수 있지만 가장 기초적이고 근본적인 방식이다.

이 OSI7계층을 참조하여 네트워크의 제작을 진행한다.

13 계층이 Hardware 계층, 74 계층이 Software 계층이다.

7계층 (Application)

가장 꼭대리에 있고, 사용자와 직접 상호하는 Application단이 해당된다.

브라우저 / 메신저 등등이 여기 해당된다.

6계층 (Presentation)

7계층에서 구동된 application에 관하여 네트워크와 application간의 데이터 변환(예를 들어 인코딩), 암호화/복호과 등등이 이루어진다.

5계층 (Session)

내 컴퓨터가 다른 컴퓨터/서버와 통신을 위한 세션을 만드는 단계이다.

SSH 프로토콜과 같은 경우도 5계층에 해당된다.

4계층 (Transport == 전송계층)

데이터를 전송하는 것을 조율해준다.

그래서 보내고자 하는 데이터의 용량/속도/목적지 등을 처리한다.

4계층에서 송/수신지의 포트번호의 인지가 가능하다. → 서비스의 구분이 가능하다.

ex) 80(아파치), 21(FTP서비스) 등의 구분이 가능하다.

그래서 4계층에 해당되는 장비인 L4스위치에서는 서비스 별로 그룹을 만들어 부하를 분산시키는 로드 밸런스 작업의 수행이 가능하다.

3계층 (Network)

패킷을 어디로 보낼지 Routing하는 작업이 이루어진다.

packet

3계층에서 데이터를 부르는 용칭이다.

말 그래도 오고가는 데이터를 packet으로 생각하면 된다.

routing

패킷을 어디를 통해 보내야 하는지, 그 길을 찾아가는 것이다.

2계층 (Data Link)

MAC주소를 기반으로 통신이 이루어진다.

참고로 여기서는 Data를 Frame이라고 부른다.

MAC주소

주민번호처럼 네트워크가 가지는 고유의 주소이다.

1계층 (physical == 물리계층)

통신을 위한 전기적 신호, 그리고 케이블이 여기 해당된다.


LAN - 독립적인 네트워크 공간 == 근거리통신망(Local Area Network)

특정 지역/공간에서만 제공되는 근거리 통신망이다.

통신을 위한 요소 - IP와 MAC주소

장비 간 데이터의 전송을 위해 서로 통신하기 위한 주소가 필요하다.

  • MAC 주소
    • 전세계에서 유일한 하드웨어(NIC)물리적 주소이다.
    • 제조업체에서 장비를 제작 시 할당되며, 불가변적이다.
  • IP주소
    • 네트워크 연결을 위해 제공되는 논리적 주소이다.
    • IP를 할당하는 주체(ISP : 인터넷 회사 or Admin)에 따라 주소가 가변적으로 변경될 수 있음

그럼 MAC주소는 왜 필요할까??

일반적으로 우리는 IP주소만을 가지고 목적지를 찾아낼 수 없다.
IP주소는 가변적인 주소이기 때문이다.

예를 들어 오늘 - 내일의 IP주소가 다를 수 있기 때문이다.

그렇기 때문에 기기 간 내부 통신을 진행할 때에 IP주소를 통해 불변하는 주소인 MAC주소를 알아내려 한다. (이를 ARP라고 한다.)

OSI 7계층과 비교하면 IP가 해당되는 3계층 레벨을 MAC주소가 해당되는 2계층 레밸로 바꾸어 주는 주소 해석 프로토콜이라 볼 수 있다.

IP는 통신을 필요로 하는 각종 장비에 연결되어 네트워킹을 도와주는 요소지만. 장비에 붙는 IP는 언제든지 변경될 수 있다.

그렇기 때문에 절대로 변경되지 않는 MAC주소를 사용하며, 이 MAC주소를 찾기 위해 IP는 내부에서 검색을 진행한다.(ARP)

그리고 <IP주소,MAC주소 쌍> 을 저장해두는 곳이 ARP Table이다.

이 ARP Table은 IP주소를 통해 MAC주소를 가져와서 저장하는 것인데, 그 이유는 다음 번에 다시 통신을 진행할 때에 바로 MAC주소를 가져올 수 있도록 하기 위함이다.


IP주소

IP주소는 8자리의 이진수를 4개의 그룹으로 묶어 구성된다.
다만

이런 식으로 0과 1로만 이루어진 숫자는 가독성이 낮을 수 있다.

따라서 이런 식으로 10진수를 통해 보기 쉽게 만들어준다.

이 숫자는 만들어 낼 수 있는 크기에 한계가 있다. (2^32개)

근데 이 IP는 전 세계의 IP들이 각각 분배해서 사용하고 있다.

그러면 IP의 개수가 부족하지 않을까??

공인 IP와 사설 IP

이러한 문제를 해결하기 위해 나온 것이 바로 private IP(사설 IP)이다.

IP는 용도에 따라 공인 / 사설 두 가지로 나뉜다.

공인 IP는 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP에서 제공하는 전 세계적으로 고유한 주소이다.

공인 IP는 인터넷 상에서 디바이스들이 서로 인식하고 통신할 수 있게 해주는 고유의 주소이다.
즉, 유한한 IP개수를 가지고 있으며 유료로 구매해서 사용한다.
언제 어디서든 누구나 함께 통신할 수 있는 public Network이다.
사설 IP는 집이나 사무실 등 한정된 공간 내에서 통신하기 위한 특정 구역 내 고유 주소이다.

일반 가정이나 회사내 등에 할당된 가상 IP이다.
이 가상 IP만을 가지고 외부와 통신할 수는 없다.
외부와의 통신을 위해서는 라우터가 가지고 있는 공인 IP를 공유한다.
내부 → 외부 : 내부 PC는 라우터의 공인 IP를 사용하여 인터넷으로 데이터 전송
외부 → 내부 : 인터넷은 라우터로 통신, 라우터가 목적지 사설 IP로 데이터 전송
특정 조직 내에서만 함께 통신할 수 있는 private Network이다.

Network Address Translation(NAT)

만약 PC가 엄청 많다면 하나하나 Public IP를 할당해 주는건 곤란할 것이다.
그렇기 때문에 회사처럼 여러 컴퓨터가 연결되는 경우 NAT를 활용해 준다.

각기 다른 private IP(사설 IP)를 가진 PC들이 NAT를 통해서 하나의 같은 Public IP의 다른 Port를 가지고 통신하는 것이다.

일반적으로 회사는 소수의 NAT IP를 가지고 내부 PC가 외부 인터넷에 접속하도록 하고 있다.

NAT의 또 하나의 장점은 보안에서 얻을 수 있다.
특별히 따로 설정한 것이 아니라면, 일반적으로 NAT는 외부 → 내부로의 접속이 차단된다.
그렇기 때문에 보안 위협으로부터 보다 안전한 환경의 구축이 가능하다.

즉, NAT는 여러 사설 IP들이 하나의 공인 IP를 통해 외부와 통신할 수 있도록 도와주는 주소 변환 서비스이다.

그래서 내부에서는 서로 다른 IP를 사용하는 것 같지만, 외부에서 볼 때에는 동일한 IP를 쓰는 것으로 보이게 될 것이다.

다양한 통신 방법

네트워크 통신 방법에는 다양한 방법이 존재하는데, 이 중 3가지에 대해 알아본다.

Unicast

유니캐스트는 네트워크 상에서 널리 사용되는 방식이다.

특정 목적지로만 프레임을 전달하기 때문에(1대1 통신 방식이다) 다른 장비의 성능을 저하시키지 않는다.

여기서 192.168.0.101이 자신과 같은 IP대역을 사용하는 모든 PC에 데이터를 전달했다.

프레임에는 데이터를 전달받아야 하는 목적지의 MAC서버가 써있다.

그래서 받은 서버에서는 데이터를 받은 이후, 자신의 MAC주소와 적힌 MAC주소가 일치하는지 확인하고 일치하지 않는 경우 프레임을 버리고 일치하는 경우에만 CPU로 프레임을 올려보낸다.

이런 식으로 프레임을 전달 받아야 하는 특정 목적지에서만 CPU로 데이터를 전달하기 때문에 다른 서버에서는 부하가 생기지 않게 되고, 이는 곧 다른 장비의 성능을 저하시키지 않는다는 장점을 가져가게 된다.

BroadCast

같은 네트워크 대역(브로드케스트 도메인)의 모든 장비에 데이터를 보내는 통신이다.

모든 장비는 이 패킷을 받아 CPU로 데이터를 전송하고, 이에 따라 Interrupt가 발생하게 된다.

그렇기 때문에 성능이 떨어지게 된다.
그럼 이거 왜쓸까??

만약 처음에 통신하고자 하는 PC가 있을 때에, 상대 PC의 MAC주소를 알 수 없다.
그래서 상대방의 MAC주소를 알아보기 위해서는 앞에서 배운 ARP request를 진행해야 한다.
이 때에 ARP요청이 바로 broadcast를 통해 전송된다.
같은 대역에 속하는 PC들에게 "내가 이 PC를 찾고 있으니, 니가 이거면 응답해라" 이런 식이다.

위의 설명에서 알 수 있듯, BroadCast 통신은 1회성이 아니라 주기적으로 이루어지는 통신이다.

MultiCast

한번의 송신만으로 특정 그룹에 속한 장비 여럿에 메세지를 보낼 수 있는 방식이다.

한번의 송신으로 여러 개의 장비에 보낼 수 있는 이유는 스위치/라우터와 같은 네트워크 장비가 패킷에 복사본을 전송해야 하는 만큼 복사해서 대신 전송하기 때문이다.

이 방식은 내가 메세지를 보내고 싶어하는 장비에만 패킷을 보내기 때문에 수신 그룹이 아닌 다른 장비에는 interrupt를 발생시키지 않는다는 장점이 있다.

같은 네트워크? 다른 네트워크?

같은 네트워크 대역 안에서는 일반적으로 장비들 끼리의 통신이 허용되지만, 다른 네트워크 대역에 존재하는 장비와는 특별히 세팅을 따로 하지 않은 이상 통신을 할 수 없다.

이 때 같은/다른 네트워크의 기준은 서브넷(Subnet)이 같은지에 따라 구분된다.

같은 대역에서의 통신과 다른 대역끼리의 통신 간의 루틴 차이는 이와 같다.

1의 경우처럼 같은 네트워크 대역에 있는 경우 서버 A가 서버 B로 가는 길을 알기 때문에 따로 장비가 없이 통신이 가능하다.

2의 경우처럼 다른 네트워크 대역에 있는 경우 서버 A가 서버 B로 가는 길을 모르기 떼문에 길을 알려줄 친구인 Router 가 필요하다.

라우터는 서로 다른 대역간 통신을 추가할 때에 어디로 가야 하는지 알려주는 layer3의 대표적인 장비이다.

Subnetting

Subnetting은 하나의 네트워크를 서로 다른 여러 대역으로 분할하는 것을 뜻한다.

여러 대역으로 IP대역을 분할하면 IP낭비를 줄일 수 있으며 용도 별 분리를 통해 보안을 한층 더 강화할 수 있다.

아래와 같은 예시가 있다.

Q : 사무실에서 192.168.0.0/24 대역의 IP를 할당받았을 때에 100명의 근로자가 서브넷 없이 사용하게 된다면

A : 256개의 IP중 (192.168.0.0 ~ 192.168.0.255) 150개 정도의 IP가 낭비되게 된다.

그렇다면 이거를 서브넷팅을 한다면?

Subnetting : 192.168.0.0/25 => 192.168.0.0 ~ 192.168.0.127 //// 192.168.128.0/25 => 192.168.128.0 ~ 192.168.128.255

A : 100명의 근로자에게 IP를 할당하고, 나머지 IP를 아낄 수 있다.

그럼 Subnetting을 어떻게 할 수 있는 건데?

먼저 네트워크 | 호스트 주소의 개념에 대해 알아보고, 서브넷 마스크가 무엇인지 배워본다.

→ 이 파란색 24개의 숫자가 동일한 경우 같은 대역을 의미한다는 것을 뜻한다. (이 24개의 비트는 네트워크 부분이라고 부른다) 즉, 24개의 네트워크 부분은 라우터를 거치지 않고 통신이 가능하다. == 브로트캐스트 영역

→ 나머지 8개의 비트는 Host부분이다.같은 브로드캐스트 영역 안에 있는 각각의 서버 혹은 장비를 뜻한다.

네트워크 대역 구분 Summary

아래 내용에 해당되는 표현은 모두 동일한 네트워크에 속한다는 바를 의미한다.

스위치

스위치는, 여러 장비를 연결하여 하나의 네트워크를 구성할 수 있도록 도와주는 장비이다.

우리가 사용하는 각종 디바이스들은 이 스위치를 통해 서로 통신하고 정보를 공유할 수 있게 된다.

스위치는 다양한 기능을 갖고 있는데, 이 중 가장 대표적인 네 가지 기능을 알아본다.

주소 학습 기능 | Learning

스위치는 자신과 연결된 장비가 통신을 위해 프레임을 내보낼 때에 그 장비의 MAC주소를 읽고, 자신의 MAC Address table에 저장한다.

이렇게 정보가 차곡차곡 쌓이게 되면, 나중에 어떤 장비가 누군가와 통신하고자 할 때 이 MAC address table을 참고하여 데이터를 보낼 수 있을 것이다.

프레임 전달 | Flooding

목적지 MAC주소를 모를 경우, 들어온 포트를 제외한 나머지 모든 포트로 뿌린다. → 브로드캐스팅을 통해 MAC주소 알아오는것

목적지로 전달 | Forwarding

목적지의 MAC주소를 알고 있으면서, 해당 목적지가 다른 세그먼트에 존재할 시 해당 포트로만 프레임 전달.

프레임 전달 차단 | Filtering

목적지가 아닌 다른 세그먼트 영역으로는 프레임이 전달되지 않도록 필터링한다.
포워딩이 가능한 이유는 이러한 필터링 기능이 지원되기 때문이다.


라우터(L3 Switch)

요즘은 L3스위치에서도 라우팅 기능이 제공되기 때문에 L3스위치라고 많이 부른다.
-> 완전 똑같은건 아니고 차이가 있기는 한데...거의 동일해서 요즘은 동일하게 쓴다 한다.

서로 다른 네트워크 간 통신을 가능하게 해주는 라우터는 통신을 위한 길을 찾아주는 경로 결정 역할스위칭 기능을 제공한다.

경로 결정

내가 속한 네트워크 대역과 다른 네트워크 대역에 있는 장비와 통신하기 위해서는 통신을 위한 경로를 알아야 하고, 이것을 도와주는 것이 라우터이다.

라우터는 라우팅 알고리즘을 사용해서 내가 전달하고자 하는 패킷을 가장 최적의 경로를 찾아내고, 이것을 라우팅 테이블에 저장한다.

스위칭

앞서 패킷을 전달할 경로를 찾아내면 목적지까지 패킷을 전달해야 한다.

패킷 경로를 지정한 후 보내는 작업을 스위칭이라고 한다.


네트워크 가상화

스위치, 라우터와 같은 물리적 장비들이 존재한다.

그런데 유저가 늘어난다고 해서, 이러한 물리적 장비를 계속해서 구축하는 것은 불가능하다.

그래서, 하드웨어 적으로만 구축이 가능했던 네트워크 기술을 소프트웨어를 통해 구축을 가능하도록 한 것이 네트워크 가상화이다.

Switch, Router, Firewall 등의 네트워크 장비를 가상화한다.

단순히 물리적장비만 사용할 때와 비하여 장비를 아낄 수 있다는 장점이 있다.

하나의 스위치를 여러 개의 스위치처럼 네트워크 대역을 분리하여 사용할 수 있도록 도와주는 VLAN 또한 네트워크 가상화 기술에 해당한다.

VLAN - Network Overlay기술

VLAN은 사실 On-Premise에서 많이 사용되는 기술로, 가상 LAN을 만들 수 있도록 도와주는 기술이라 보면 편하다.

그린팩토리라는 사무실, 그레이팩토리라는 사무실을 가지고 있고, 이 사무실들이 모두 3개의 네트워크 대역을 이용해야 한다고 생각해본다.

우리가 LAN을 물리장비만을 통해 구축할 수 있다고 가정한다면 (VLAN이 없다면)

각 사무실마다 3개의 네트워크망을 제공하기 위해서 3대의 스위치를 다르게 구축하고 연결해야 할 것이다.

VLAN이 지원되는 스위치와 라우터를 사용하면 하나의 링크만으로 여러개의 네트워크 정보를 같이 실어 내보낼 수 있다.

그리고 스위치에서는 이러 여러 브로드캐스트 영역을 나누어서 사용할 수 있다.

  • Trunk
    • 여러 개의 VLAN을 하나의 링크로 이용할 수 있게 도와주는 기술

VXLAN - Network Overlay 기술

VLAN에 eXensible의 X를 더한 것으로, VALN에 확장성과 유연성이 더해진 기술로, 멀티테넌시 환경에서 주로 사용된다.

public cloud은 다양한 사람들이 사용하기 때문에 대규모 네트워크 프로비저닝 외에도 회원마다 분리된 네트워크와 별도의 보안환경을 구축할 수 있어야 한다.

또 물리적 환경에 있어서도 제약이 없어야 하고, 여러 데이터 센터 간 연결도 가능해야 할 것이다.

그래서 나온것이 바로 VXLAN이다.

VXLAN을 이용하면 물리적인 제약이 없어진다.

일반적으로 네트워크 대역이 다른 장비는 서로 연결할 수 없다고 했는데, VXLAN을 사용하면 이런 제약에 관해 고민할 필요가 없어진다.

다른 데이터 센터에 위치한 다른 서브넷으로도 얼마든지 데이터를 보낼 수 있기 때문이다.

  • VXLAN은 Encapsulation protocol이다.
  • Mulicast 통신을 기반으로 Flood&Learn 방식으로 동작한다.
  • VNI(Segment ID)를 통해 Layer2의 서브넷 관리
  • VTEP는 VXLAN Tunneling End Point의 약자로, 실제 패킷의 encapsulation 및 decapsulation이 진행되는 곳이다.
  • End Point(서버 등)에서는 위에서 VXLAN으로의 통신여부 등은 전혀 모른다.

VPN이 무엇일까??

Virtual Private Network(사설망)이다.

여기에는 IPsec VPN 과 SSL VPN 두가지가 있는데,

IPsec VPN

네트워크망과 망을 연결할 때에 사용한다.

예를 들어, 우리 회사의 네트워크 망과 다른 망을 연결하는 것이다.

SSL VPN

인가받은 클라이언트들이 특정 네트워크에 접근하기 위해 사용하는 것이다.

우리가 사내 인트라넷에 붙을 때에도 SSLVPN을 사용한다.

Storage

스토리지는 일반적으로 컴퓨터에서 데이터를 비휘발성으로 저장할 수 있는 저장장치를 뜻한다.

최근 인공지능이나 IoT등 다양한 IT기술들이 등장함에 따라 데이터의 양이 많아지기 시작하며 다양한 데이터 스토리지 기술들이 조명받기 시작했다.

RAID구성을 도와주는 Array Controller

여러 개의 저장장치를 묶어 하나의 디스크처럼 사용할 수 있도록 도와주는 기술이다.

이를 할 수 있도록 도와주는 것이 바로 Array Controller이다. == RAID Controller == RAID Card

RAID

다양한 종류가 있는데, 이 중 중요한 것들에 관해서만 설명한다.

그리고 각 RAID레밸에 관해서는 가용성과 용량에 집중해서 살펴보는 것이 좋다.

RAID 0

스트라이핑 기술을 이용하여 데이터 세그먼트들을 여러 디스크 디바이스로 분산 기록하는 방식이다.

데이터 세그먼트

서버에 파일을 올렸을 때에 우리 입장에서는 하나의 데이터로만 보이겠지만 서버 내부에서는 작은 조각으로 나누어서 보관하게 된다. 이것을 데이터 세그먼트라고 부른다.

즉, 이 방식은 데이터를 분산 저장하는 방식이라 생각하면 된다.

그런데 만약 하나의 DIsk가 Fault가 나면 어떻게 될까??

아마 전체 데이터를 잃어버리게 될 것이다.

그래서 실무에서 이 방식은 잘 안쓴다.

용량의 경우 300GB + 300GB인 경우 가용 용량은 600GB가 된다.

RAID 1

기존의 RAID0의 문제를 미러링을 통해 보안한 방식이다.

RAID1은 데이터 세그먼트를 다른 디스크로 복제본을 만들어 저장한다.

그렇기 때문에 Disk가 하나 망가지더라도 다른 Disk의 세그먼트가 살아있기 때문에 데이터 유실이 발생하지 않을 것이다.

즉 가용성이 높을 것이다.

용량의 경우 300GB + 300GB = 300GB이다. 왜냐면 같은 데이터를 복사해서 가지고 있기 떄문에.

RAID 5

패리티라는 기술을 이용하여 가용성을 제공한다.

앞에 있던 RAID 1에서는 미러링을 이용해서 완전히 동일한 크기의 공간을 필요로 했기 때문에 가용 용량이 절반밖에 되지 않았다.

여기서는 가용성을 어느 정도 보장하면서도 가용 용량을 높일 수 있다.

  • 패리티
    • 디스크 장애시 데이터를 재구축하는 데에 사용할 수 있는 사전에 계산된 값.
    • 패리티틀 저장해야 하는 디스크는 단 1개만 있으면 된다.

위의 사진의 경우 1개의 디스크만 패리티를 위해 사용되기 때문에

300GB + 300GB + 300GB + 300GB = 900GB가 된다.

다만 이 패리티 비트를 사용하는 경우 내부적으로 복잡한 연산을 진행하다 보니 디스크가 망가질 확률이 높다.

그래서 실제로 하드 디스크를 많이 사용할 때에는 해당 방식을 지양하는 편이다.

RAID 6

데이터마다 2개의 패리티를 구성한다.

그래서 이건 디스크 2개를 소모하게 되지만 안정성을 생각한다면 이정도는 해줄만 하다.

디스크 2개가 망가지더라도 데이터 손실로 이루어지지는 않는다.

RAID 5정도의 성능을 갖기 위해서는 디스크 한개가 더 필요하다.

RAID 10

RAID0 과 RAID1 를 한꺼번에 사용하는 방식이다.

앞에 나오는 숫자가 하위 배열, 뒤에 나오는 숫자가 상위배열이다.

먼저 Disk1과 Disk2가 RAID1으로 묶여 있으니 해당 Array에서는 하나의 Disk가 고장나도 다른 쪽에서 받쳐 줄 수 있을 것이다.

다음으로 Disk3과 Disk4도 마찬가지일 것이다.

즉 이런식으로 RAID1으로 되어 있으면 하나가 고장나더라도 다른 쪽에서 받쳐줄 수 있다.

그 외 자주 사용되는 기술과 용어들 - Hot Spare, Rebuilding

때에 따라서 여러 디스크가 한번에 나가는 경우도 있다.

이 때에 조금 더 안전하게 환경을 구성하고 싶을 때에 사용하는 것이 Hot Spare 이다.

Hot Spare 은 기존에 구성된 RAID에 디스크 하나를 더 설치한다.

이를 통해 RAID로 구성된 Disk가 하나 Fault날 경우, Spare디스크가 망가진 디스크를 바로 대체하게 된다.

우리가 Disk Fault를 늦게 확인해서 망가진 Disk를 신규 Disk로 교체하는걸 늦게 할 수도 있기 때문에 Hot Spare가 큰 역할을 해준다.

다만 신규 디스크를 넣었다고 바로 RAID가 온전히 복구되지는 않는다.
이 새로운 디스크에 기존 데이터를 맞추기 위해 데이터를 부어주는 작업도 해야 할 것이다.
이러한 일련의 과정을 Rebuilding 이라고 부른다.

그런데 신규 입사자들이 많이 하는 실수가, 디스크 교체 완료 이후로 작업 완료로 생각하는 경우가 있는데, 확실하게 교체가 완료되었는지 확인해 보려면 IPMI등을 이용해서 리빌딩 상태가 현재 몇%인지, 완료되었는지 꼭 꼭 확인해라.

그 외 자주 사용되는 기술과 용어들 - JBOD

Just a Bunch of Disks(Drives)의 약어로 단순히 물리적인 디스크 여러개를 모아서 하나의 큰 하드 디스크처럼 보이도록 하는 기술이다.

RAID처럼 데이터를 분산 저장하지 않으며, 디스크 순서대로 데이터를 차곡차곡 저장한다. 확장성이 좋은 방식.


전통적인 스토리지 DAS, NAS, SAN

대표적으로 그동안 많이 사용되던 스토리지이다.

  • DAS
    • 서버에 저장공간이 부족했을 때 가장 먼저 고려해볼 수 있는 스토리지
    • 전용 케이블을 이용해서 서버에 1:1 다이렉트로 연결되는 방식으로, 접근 속도가 빠르다는 장점이 있다.
    • 다만 스토리지의 Scale out 에서 문제가 발생할 수 있고, 여러 곳에서 연결하는 것이 힘들다는 단점이 있다.
  • NAS
    • 서버와 스토리지가 LAN네트워크를 통해 연결된 방식이다.
    • DAS보다 활정성에서 유리하고, 여러 서버들이 공통된 스토리지를 바라보아야 할 때 적합하다.
  • SAN
    • Fibre channel 기반 스위치를 통해 서버와 스토리지를 고속으로 연결할 수 있도록 해주는 타입이다.
    • 여러 스토리지를 하나로 묶어서 관리하기 때문에 대규모 확장 등 여러 곳에서 장점을 갖는다.
    • DAS와 NAS의 단점을 모두 보안한 방식이지만, 비싸다는 단점이 있다.

데이터를 저장하는 다양한 방식

현업에서 일할 때에 가장 많이 접하는 파일 , 블록 , 오브젝트 스토리지에 대해 알아본다.

데이터를 저장하는 다양한 방식 - 파일 스토리지

파일 스토리지는 중첩된 계층 구조를 갖는 스토리지 포맷이다.

앞에서 살펴본 DAS , NAS 또한 이 방식으로 저장한다.

파일 경로를 쓰는 로컬PC 등등도 이 파일 스토리지에 해당한다.

이해하기 쉽고 편리한 인터페이스를 제공한다는 장점이 있다.

다만 파일의 경로를 찾는 이름이 길어진다는 단점이 있다.

데이터를 저장하는 다양한 방식 - 블록 스토리지

하나의 데이터를 고유의 식별자를 가진 블록 형식으로 쪼개서 저장한다.

그리고 데이터를 다시 불러올 때에는 이 블록 형식으로 쪼개진 데이터를 다시 하나로 뭉쳐서 전달하게 된다.

파일 스토리지와 달리 데이터가 단일 경로에 종속되지 않는다. → 그 덕분에 데이터에 더 효율적으로 접근할 수 있다.

일반적으로 SAN에서 사용하는 저장 방식이다.

다만 비용이 비싸고, 메타데이터의 관리 기능에서 아쉬운 면이 존재한다.

메타데이터는 뭘까??

#해시태그 처럼 해당 데이터를 설명해주는 또 다른 데이터이다.

이 메타 데이터들은 자신을 표현할 수 있는, 혹은 부가설명을 해줄 수 있는 데이터로 우리는 이를 통해 데이터를 쉽게 검색하고, 데이터를 관리하고, 데이터를 또 다른 데이터와 연계할 수 있다.

But 저장해야 하는 데이터의 양이 점점 늘어나고 있기 때문에 기존의 스토리지 방식으로는 이 데이터를 저장하기 쉽지 않다.

기존 RAID구조로는 Petabyte규모 이상의 데이터 저장을 하기에 적합하지 않다.

그럼 데이터를 어떻게 저장할 것이고, 어떻게 보호할 것일까??

데이터를 저장하는 다양한 방식 - 오브젝트 스토리지

클라우드 시대가 오면서 가장 많이 언급되는 것이 바로 오브젝트 스토리지이다.

오브젝트 스토리지는 비정형 데이터를 저장 공간에 얽매이지 않고 무제한으로 저장할 수 있다는 특징이 있다.

이 오브젝트 스토리지의 특징은 다음과 같다.

  • 데이터를 객체(Object) 단위로 관리하고 조작한다.
  • 객체는 실제 대상 데이터와 그 데이터의 메타데이터의 조합을 의미한다.
  • 메타데이터는 데이터를 사용하는데에 있어 가장 중요한 역할을 한다.
  • 오브젝트는 스토리지 풀에 flat한 형태로 저장되기 때문에 다른 계층적 스토리지에 비해서 빠르게 데이터를 검색할 수 있다.
  • 스토리지 전체 용량에 제한이 없다.
  • 클라우드 내에서는 일반적으로 데이터가 여러 물리적 시설에 걸쳐 데이터의 replica가 저장되므로 높은 가용성을 보장한다.
  • 오브젝트 스토리지는 위의 장점 덕분에 백업 스토리지, 데이터 분석, 데이터 아카이빙 등 다양한 용도로 사용된다.

Sortware Defined Storage(SDS)

SDS는, Hardware에서 스토리지 소프트웨어의 종속성을 없앤 스토리지 아키텍쳐이다.

앞에서 보았던 DAS , NAS, SAN 같은 경우, 스토리지 벤더에서 하드웨어와 소프트웨어를 묶어 판매하기 때문에 원하는 하드웨어 위에 또다른 스토리지 소프트웨어를 얹어서 사용하는것이 불가능했다.

하지만 SDS가 도입되면서 표준 x86 서버라면 어디서든 동작시킬 수 있게 되었고, 또 이렇게 x86 서버 여러개를 묶어 스토리지를 만들 수 있기 때문에 무중단 서비스를 유지하면서도 scale-out 을 쉽게 할 수 있게 되었다.

Hyper-Converged Infrastructure(HCI)

HCI는 기존 사용하던 3Tier Architecture를 하나의 인프라 스택으로 통합시켜서 운영할 수 있게 도와주는 기술이다.

기존 3Tier Architecture의 문제점

기존 방식에서는 이런 식으로 구성되어 있는데, 여기서의 문제는 워크로드가 늘어나면서 서버는 점점 늘어나는데 아래의 Storage Controller 는 서버와 함께 늘어나지 않는다는 것이다.

그렇기 때문에 Storage 구간에서 병목이 발생하게 된다.

HCI환경에서 병목 문제 해결

HCI에서는 SDS기술을 활용하여 각 호스트 서버에 내장된 개별드라이브들을 논리적으로 묶어서 하나의 Storage Pool을 구성한다.

마치 기존에 사용하던 SAN과 같은 외장 스토리지와 비슷하게 만드는 것이다.

Storage뿐만 아니라, 전체적인 Infra의 scale-out이 간편해지고, Storage의 병목현상을 방지할 수 있게 된다.

De-Duplication기능을 통해 중복제거도 가능해진다. → 전체 Infra Data의 백업에서도 큰 효율을 볼 수 있다.

그래서 데이터 중복제거가 뭔데??

De-Duplication(데이터 중복제거)

데이터 중복제거, 디둡이라고 부르는 기술은 대용량 데이터에서 중복되는 데이터를 분석해서, 수정된 부분만 저장하는 기술이다.

백업을 통해 데이터를 보관하는 것은 중요한 일이지만, 이 작업이 인프라에 있어 시간적/비용적 부담을 주는 것은 별로다.

그래서 일반적으로 대규모 데이터를 보관하는 Storage에 소프트웨어적으로 중복 제거 기술을 이용해서 필요한 데이터만 빠르게 저장하고, 적은 비용으로 운영할 수 있게 도와주는 기술이다.

Hot Data & Cold Data

  • Hot Data
    • 자주 사용하는 데이터
  • Cold Data
    • 자주 사용하지 않는 장기 보관 데이터

'이론 정리 > 인프라' 카테고리의 다른 글

네트워크 입문 002  (0) 2022.11.13
API프로토콜(REST, gRPC, GraphQL)에 대해  (0) 2022.10.30
OSI7계층  (1) 2022.10.30
TCP/UDP  (0) 2022.10.29
네트워크 입문 001  (0) 2022.08.17