Product Documentation

다중 호스트 네트워크에 NetScaler CPX 배포

2016년 5월 13일

다중 호스트 네트워크에서 한 NetScaler CPX 인스턴스가 데이터 센터의 프로덕션 배포로 구성될 수 있으며, 부하 분산 기능을 제공합니다. 또한 모니터링 기능과 분석 데이터를 제공할 수 있습니다.

다중 호스트 네트워크에서는 NetScaler CPX 인스턴스, 백엔드 서버 및 클라이언트가 서로 다른 호스트에 배포됩니다. NetScaler CPX 인스턴스가 컨테이너 기반 응용 프로그램 및 서버 집합과 물리적 서버의 부하를 분산시키는 프로덕션 배포에서 다중 호스트 토폴로지를 사용할 수 있습니다.

토폴로지 1: NetScaler CPX 및 백엔드 서버는 동일한 호스트, 클라이언트는 다른 네트워크

이 토폴로지에서 NetScaler CPX 인스턴스 및 데이터베이스 서버는 동일한 Docker 호스트에서 프로비전되지만 클라이언트 트래픽은 네트워크의 다른 위치에서 시작됩니다. NetScaler CPX 인스턴스가 컨테이너 기반 응용 프로그램 또는 서버 집합의 부하를 분산하는 프로덕션 배포에서 이 토폴로지를 사용할 수 있습니다.

다음 다이어그램은 이 토폴로지를 보여 줍니다.

지역화된 이미지

이 예제에서 NetScaler CPX 인스턴스(172.17.0.4)와 두 서버 DB1(172.17.0.10) 및 DB2(172.17.0.11)는 IP 주소가 10.102.29.100인 동일한 Docker 호스트에서 프로비전됩니다. 클라이언트는 네트워크의 다른 위치에 상주합니다.

인터넷에서 시작된 클라이언트 요청은 NetScaler CPX 인스턴스에 구성되어 있는 VIP에서 수신되고, VIP가 두 서버 간에 요청을 분산시킵니다.

두 가지 방법을 사용하여 이 토폴로지를 구성할 수 있습니다.

  • VIP에 대해 추가 IP 주소 및 표준 포트 사용

    1. NetScaler CPX IP 주소 대신 추가 IP 주소를 사용하여 NetScaler CPX 컨테이너에서 VIP를 구성합니다. 이렇게 하면 컨테이너에서 표준 포트 80을 사용하여 클라이언트 요청을 수신할 수 있습니다.
    2. Docker 호스트에 대해 추가 IP 주소를 구성합니다.
    3. Docker 호스트의 추가 IP 주소에서 수신된 모든 트래픽을 VIP의 추가 IP 주소로 전달하는 NAT 규칙을 구성합니다.
    4. NetScaler CPX 인스턴스에서 두 서버를 서비스로 구성합니다.
    5. 마지막으로, 서비스를 VIP에 바인딩합니다.

    참고: 이 예제 구성에서 10.x.x.x 네트워크는 공용 네트워크를 나타냅니다.

    이 예제 시나리오를 구성하려면 NetScaler MAS의 Jobs(작업) 기능을 사용하거나 NITRO API를 사용하여 다음 명령을 실행합니다.

    add service s1 172.17.0.10 HTTP 80
    add service s2 172.17.0.11 HTTP 80
    add lb vserver cpx-vip HTTP 172.17.4.100 80
    bind lb vserver cpx-vip s1
    bind lb vserver cpx-vip s2

Linux 셸 프롬프트에서 다음 명령을 실행하여 Docker 호스트에 대한 추가 공용 IP 주소와 NAT 규칙을 구성합니다.

    ip addr add 10.102.29.103/24 dev eth0
    iptables -t nat -A PREROUTING -p ip  -d 10.102.29.103 -j DNAT --to-destination 172.17.4.100
  • VIP에 대해 NetScaler CPX IP 주소 사용 및 포트 매핑 구성:
  1. NetScaler CPX 인스턴스에서 VIP와 두 서비스를 구성합니다. VIP와 함께 비표준 포트 81을 사용합니다.
  2. 서비스를 VIP에 바인딩합니다.
  3. Docker 호스트의 포트 50000에서 수신된 모든 트래픽을 VIP 및 포트 81로 전달하는 NAT 규칙을 구성합니다.

이 예제 시나리오를 구성하려면 Docker 호스트 3개 모두에서 NetScaler CPX 컨테이너를 만들 때 Linux 셸 프롬프트에서 다음 명령을 실행합니다.

    docker run -dt -p 22 -p 80 -p 161/udp -p 50000:81 --ulimit core=-1 --privileged=true cpx:6.2

NetScaler CPX 인스턴스를 프로비전한 후 NetScaler MAS의 Jobs(작업) 기능을 사용하거나 NITRO API를 사용하여 다음 명령을 실행합니다.

    add service s1 172.17.0.10 http 80
    add service s2 172.17.0.11 http 80
    add lb vserver cpx-vip HTTP 172.17.0.4 81
    bind lb vserver cpx-vip s1
    bind lb vserver cpx-vip s2

참고:

NetScaler CPX 인스턴스를 프로비전할 때 포트 매핑을 구성하지 않았다면 Linux 셸 프롬프트에서 다음 명령을 실행하여 NAT 규칙을 구성합니다.

iptables -t nat -A PREROUTING -p tcp -m addrtype --dst-type LOCAL -m tcp --dport s50000 -j DNAT --to-destination 172.17.0.4:81

토폴로지 2: NetScaler CPX와 물리적 서버 및 클라이언트

이 토폴로지에서는 Docker 호스트에서 NetScaler CPX 인스턴스만 프로비전됩니다. 클라이언트 및 서버는 컨테이너 기반이 아니며 네트워크의 다른 위치에 상주합니다.

이 환경에서 물리적 서버 간에 부하를 분산하도록 NetScaler CPX 인스턴스를 구성할 수 있습니다.

다음 그림에서는 이 토폴로지를 보여 줍니다.

지역화된 이미지

이 예제에서 NetScaler CPX 컨테이너(172.17.0.4)는 클라이언트와 물리적 서버 사이에 위치하며 프록시로 작동합니다. 서버 DB1(10.102.29.105) 및 DB2(10.102.29.110)는 네트워크에서 Docker 호스트 외부에 상주합니다. 클라이언트 요청은 인터넷에서 시작되고 NetScaler CPX에서 수신되어 두 서버 간에 분산됩니다.

클라이언트와 서버 사이의 통신이 NetScaler CPX를 통해 이루어질 수 있도록 NetScaler CPX 컨테이너를 만들 때 먼저 포트 매핑을 구성해야 합니다. 그런 다음 NetScaler CPX 컨테이너에서 두 서버를 나타내는 두 서비스를 구성합니다. 마지막으로, NetScaler CPX IP 주소와 HTTP 포트 8080에 매핑된 비표준 포트를 사용하여 가상 서버를 구성합니다.

예제 구성에서 10.x.x.x 네트워크는 공용 네트워크를 나타냅니다.

이 예제 시나리오를 구성하려면 NetScaler CPX 컨테이너를 만들 때 Linux 셸 프롬프트에서 다음 명령을 실행합니다.

docker run -dt -p 22 -p 80 -p 161/udp -p 8080:8080 --ulimit core=-1 --privileged=true cpx:6.2

그런 다음 NetScaler MAS의 Jobs(작업) 기능을 사용하거나 NITRO API를 사용하여 다음 명령을 실행합니다.

add service s1 HTTP 10.102.29.105 80
add service s2 HTTP 10.102.29.110 80
add lb vserver cpx-vip HTTP 172.17.0.4 8080
bind lb vserver cpx-vip s1
bind lb vserver cpx-vip s2

토폴로지 3: 서로 다른 호스트에서 프로비전된 NetScaler CPX 및 서버

이 토폴로지에서 NetScaler CPX 인스턴스 및 데이터베이스 서버는 서로 다른 Docker 호스트에서 프로비전되고 클라이언트 트래픽은 인터넷에서 시작됩니다. NetScaler CPX 인스턴스가 컨테이너 기반 응용 프로그램 또는 서버 집합의 부하를 분산하는 프로덕션 배포에서 이 토폴로지를 사용할 수 있습니다.

다음 다이어그램은 이 토폴로지를 보여 줍니다.

지역화된 이미지

이 예제에서 NetScaler CPX 인스턴스 및 서버(DB1)는 IP 주소가 10.102.29.100인 동일한 Docker 호스트에서 프로비전됩니다. 다른 네 서버(DB2, DB3, DB4 및 DB5)는 서로 다른 두 Docker 호스트 10.102.29.105 및 10.102.29.110에서 프로비전됩니다.

인터넷에서 시작된 클라이언트 요청은 NetScaler CPX 인스턴스에서 수신되고, 이 인스턴스가 다섯 개 서버 간에 요청을 분산시킵니다. 이 통신을 사용하도록 설정하려면 다음을 구성해야 합니다.

  1. NetScaler CPX 컨테이너를 만들 때 포트 매핑을 설정합니다. 이 예제에서는 컨테이너의 포트 8080을 호스트의 포트 8080으로 전달해야 한다는 의미입니다. 클라이언트 요청이 호스트의 포트 8080에 도달하면 CPX 컨테이너의 포트 8080으로 매핑됩니다.
  2. NetScaler CPX 인스턴스에서 다섯 개 서버를 서비스로 구성합니다. 이러한 서비스를 설정하려면 관련 Docker 호스트 IP 주소와 매핑된 포트의 조합을 사용해야 합니다.
  3. NetScaler CPX 인스턴스에서 클라이언트 요청을 수신하는 VIP를 구성합니다. 이 VIP는 NetScaler CPX IP 주소와 호스트의 포트 8080에 매핑된 포트 8080으로 나타나야 합니다.
  4. 마지막으로, 서비스를 VIP에 바인딩합니다.

예제 구성에서 10.x.x.x 네트워크는 공용 네트워크를 나타냅니다.

이 예제 시나리오를 구성하려면 NetScaler CPX 컨테이너를 만들 때 Linux 셸 프롬프트에서 다음 명령을 실행합니다.

docker run -dt -p 22 -p 80 -p 161/udp -p 8080:8080 --ulimit core=-1 --privileged=true cpx:6.2

NetScaler MAS의 Jobs(작업) 기능을 사용하거나 NITRO API를 사용하여 다음 명령을 실행합니다.

add service s1 10.102.29.100 HTTP 8081
add service s2 10.102.29.105 HTTP 8081
add service s3 10.102.29.105 HTTP 8082
add service s4 10.102.29.110 HTTP 8081
add service s5 10.102.29.110 HTTP 8082
add lb vserver cpx-vip HTTP 172.17.0.2 8080
bind lb vserver cpx-vip s1
bind lb vserver cpx-vip s2
bind lb vserver cpx-vip s3
bind lb vserver cpx-vip s4
bind lb vserver cpx-vip s5