서비스 인프라 환경의 대부분은 CSP 사업자를 통한 Public Cloud (AWS, GCP, AZURE ...)를 사용하거나 직접 운영을 위한 On-Premise 환경, 그리고 Public Cloud + On-Premise 의 하이브리드 환경으로 구축 할 것이다.
Public Cloud 의 경우 구성이 쉽고 Auto Scaling 등 빠른 환경 배포가 가능하며 글로벌 엑셀레이터 같은 네트워크 가속의 쉬운 접근성이 있다는 장점이 있는 반면 가격이 비싸다는 단점이 있다.
On-Premise의 경우 구축에 소요되는 비용(네트워크+시스템+하드웨어+인력)이 많고 장애 대비나 장애 시 를 위한 꾸준한 관리 포인트가 존재한다는 단점이 있지만 장기적인 측면으로 보았을때는 상대적으로 저렴한 유지비용이 장점이다.
결국은 돈 이야기이지만 사업초반 인프라 투자에 고려해야할 요소중 돈이 큰 비중을 차지 한다는 것은 무시할수 없는 사실이다.
따라서 쾌적한 서비스 환경과 관리적인 측면, 또 인프라 비용 절감을 위해서는 Public Cloud + On-premise의 하이브리드 형태로 구축하는 것도 즁요한 방법일 수 있다.
이번 글에서는 소규모 서비스를 위한 간단한 On-premise 환경을 구성 해 보고자 한다.
네트워크 구성 시 고려 사항
이중화
On-Premise 환경 네트워크 구성에서 가장 중요하게 고려해야할 항목 중 하나는 이중화이다.
관리(User Bug)에 문제가 없다면 대부분의 장애는 물리적인 머신장애로 이는 SPOF(Single Point Of Failture) 구간을 최소한으로 하여 장애 시 대비가 아닌 장애가 발생하지 않도록 하는 구성을 지향해야 한다.
대표적으로 VIP(Virtual IP), VMAC(Virtual MAC) 등을 사용한는 VRRP, HSRP 등의 프로토콜을 대부분의 네트워크 장비에서 지원(물론 서버에서도 사용할수 있다) 하므로 적절히 활용하여 구성하도록 한다.
그리고 서버 장비에서도 Teaming, Bonding 등의 프로토콜을 사용하여 이중화 할 수 있다.
트래픽 분리
Backend 서버들은 Client(End User)와 통신하는 외부 구간 보다는 서버들 사이에서 발생하는 내부트래픽이 많이 발생한다.
적절한 트래픽 통제 없이 사용할 경우 서비스와 관리 트래픽이 경합하는 병목 현상이 발생 할 수 있고 이는 서비스에 영향을 미칠수 있다.
따라서 외부, 내부 통신에 사용하는 IP 대역을 분리하고 네트워크 장비에서 물리적으로도 분리 함으로써 가용성을 확보한다.
NAT를 사용하지 않는다면 외부는 공인 IP를 사용하며 내부는 사설 IP를 사용하여 보안성을 키우고 외부 통신시 마스커레이드(MASQUERADE) 하여 사용한다.
접근통제
DMZ 구간 외 관리 목적의 외부 접근을 적절히 통제하는 것은 무엇보다 중요하다.
외부에서의 접근은 직접 접근 보다는 암호화 터널링 방식을 사용하고 관리에 용이성을 위해 일원화 혹인 이원화 하여 터널위주로 세심히 관리하도록 한다.
사무실과 IPSEC 터널링을 사용할 수 있고 외부 사용자를 위해 SSL VPN 을 사용할 수 있다. 계정관리와 접근 계정에 대한 적절한 인증방식, 그리고 Access List 등을 수립하도록 한다.
DMZ 구간은 WAF나 IPS, IDS 를 사용할 수 있으나 관리 포인트를 줄이고자 한다면 Cloudflare 같은 Cloud 서비스를 사용하는 것도 방법일 수 있다.(하이브리드 형태)
네트워크 Topology
처음 고려했던 형태
FortiGate HA 설정 시 모니터 포트 선택에서 FortiGate Uplink와 L2로의 Downlink를 지정해 uplink와 downlink 둘 중 하나라도 다운되면 Failover 되는 형태로 구성하려한다.
이때 L2로의 Downlink 는 Virtual Switch(software switch, hardware switch, vlan switch) 등으로 구성 하게 되는데 이러한 Virtual Switch는 HA 모니터 포트로 지정이 되지 않는다.
따라서 HA 모니터 포트를 uplink만 지정하고 LLCF(Link Loss Carry Forward)를 사용하여 downlink 다운시 uplink도 다운되게 하여 Failover 되는 방식을 사용해야한다. 하지만 이 역시 physical interface, 802.3ad Aggregate를 제외하고 software switch, hardware switch, vlan switch에서 LLCF를 지원하지 않는다.
물론 이러한 형태로 downlink는 2개의 회선이 동시에 다운되지 않는다는 희박한 확률을 무시한다면 uplink만 ha monitor port로 지정하고 구성 할 수 있다. (실제로도 많이 구성됨)
또 하나의 문제점은 아래 그림과 같이 L2로의 물리회선을 이중화 하기 위해 각각의 L2로 물리 2회선을 연결시 Virtual Switch에서 LACP를 사용할 수 없고 STP가 동작하게 되어 1개의 회선은 Block 되게 된다. (bandwidth 증가 효과를 볼수 없음)
최종형태
Downlink 이중화와 bandwidth 증가, LLCF 설정의 번거로움 등을 고려하여 아래와 같은 형태로 구성하려고 한다.
ISP 라우팅
인터넷 서비스 공급자(ISP)와 시리얼구간에 대한 논의 시 BGP(우리나라에서는 사용 사례가 드뭄)가 아니라면 일반적으로 VRRP 혹은 HSRP로 Gateway VIP로 하는 물리 2회선을 신청한다.
라우터에서 사용하는 VRRP는 특별한 설정(cisco track 같은)이 없다면 VIP를 가지고 있는 Primary 라우터의 물리 링크 다운시 Secondary 라우터가 VIP를 선점하게 된다.
따라서 "ISP Primary -> FortiGate-01" 구간이 다운되어도 "ISP Secondary -> FortiGate-02" 구간이 서비스를 이어가게 된다.
L3 + Firewall
L3 역할을 담당하는 FortiGate에서 Uplink는 Routed port로 Downlink는 2회선 LACP(802.3ad Aggregate)로 구성하고 VLAN을 할당한다.
VLAN 할당 시 Service IP대역과 Management IP대역으로 나누어 논리적으로 분리하며 Service 대역과 Management대역은 서로 통신되지 않도록 방화벽 정책을 적용한다.
Public IP와 Private IP를 맵핑(NAT)하는 Virtual IP를 사용하여 서비스 하며 L3 이하 구간은 모두 사설 IP로 구성한다.
FortiGate 2대는 HA(High Availability) 구성을 하며 ISP VRRP 와 같이 Active - Passive 형태로 구성 한다.
HA 모니터 포트는 Uplink, Downlink 로 지정하여 둘중 하나라도 다운되면 Failover 된다. 또 Failover 후 장애 복구를 통한 Failback이 일어나지 않게(failover, failback으로 두번 순단 방지) 한다.
L2
L2 간에 Interlink를 Service 대역 VLAN 2회선, Management 대역 VLAN 2회선으로 분리하여 Trunk 구성하고 LACP 등으로 이중화 한다.
ServerFarm
Server NIC의 이중화를 위하여 Teaming or Bonding 설정하여 L2에 각각 연결한다. Mode는 독립전환(Teaming) or Active-Backup(Bonding) 으로 설정한다.