Product Documentation

Docker에서 NetScaler CPX 인스턴스 배포

2017년 8월 30일

NetScaler CPX 인스턴스는 Docker Store에서 Docker 이미지 파일로 사용할 수 있습니다. 인스턴스를 배포하려면 Docker Store에서 NetScaler CPX 이미지를 다운로드한 후 docker run 명령 또는 Docker Compose 도구를 사용하여 인스턴스를 배포합니다.

사전 요구 사항

확인할 사항:

  • Docker 호스트 시스템에 최소한 다음 구성 요소가 있습니다.
    • CPU 1개
    • 2GB RAM

      참고: NetScaler CPX 인스턴스를 시작하는 데 사용할 처리 엔진 수를 정의하여 NetScaler CPX의 성능을 높일 수 있습니다. 처리 엔진을 추가할 때마다 Docker 호스트에 동일한 수의 vCPU와 동일한 양(GB)의 메모리가 포함되도록 해야 합니다. 예를 들어 처리 엔진 4개를 추가하려는 경우 Docker 호스트에 vCPU 4개와 4GB 메모리가 있어야 합니다.

  • Docker 호스트 시스템에서 Linux Ubuntu 버전 14.04 이상이 실행되고 있습니다.
  • Docker 버전 1.12가 호스트 시스템에 설치되어 있습니다. Linux에서 Docker를 설치하는 것에 대한 자세한 정보는 다음을 참조하십시오.https://docs.docker.com/engine/installation/ubuntulinux/
  • Docker 호스트가 인터넷에 연결되어 있습니다.

Docker Store에서 NetScaler CPX 이미지 다운로드

Docker Store에서 NetScaler CPX Docker 이미지 파일을 다운로드한 후 NetScaler CPX Docker 이미지를 로드합니다. 이를 위해 Docker 호스트에서 다음 명령을 실행합니다.

docker pull store/citrix/netscalercpx:12.0-53.xx

NetScaler CPX Docker 이미지를 다운로드한 후 다음 명령을 사용하여 이미지 세부 정보를 볼 수 있습니다.

    docker images

예를 들면 다음과 같습니다.

    root@ubuntu:~# docker images


    REPOSITORY    TAG         IMAGE ID       CREATED    VIRTUAL SIZE


       cpx       12.0-53.xx  2e97aadf918b  43 hours ago  414 MB

이 예제에서 출력의 다음 필드에 주의하십시오.

  • REPOSITORY(저장소). 이미지가 저장되어 있는 이름 공간을 지정합니다.
  • TAG(태그). 설치되어 있는 NetScaler CPX 이미지의 버전을 나타냅니다.
  • IMAGE ID(이미지 ID). Docker 호스트에서 이미지의 고유 ID를 나타냅니다.

docker run 명령을 사용하여 NetScaler CPX 인스턴스 배포

호스트에 로드한 NetScaler CPX Docker 이미지를 사용하여 호스트에서 Docker 컨테이너에 NetScaler CPX 인스턴스를 설치할 수 있습니다. docker run 명령을 사용하여 기본 NetScaler CPX 구성으로 NetScaler CPX 인스턴스를 설치합니다.

중요:

https://www.citrix.com/products/netscaler-adc/cpx-express.html에서 NetScaler CPX Express를 다운로드한 경우 NetScaler CPX 인스턴스를 배포하는 동안 https://www.citrix.com/products/netscaler-adc/cpx-express.html에 있는 EULA(최종 사용자 사용권 계약)를 읽고 이해한 후 이 계약에 동의해야 합니다.

다음과 같은 docker run 명령을 사용하여 Docker 컨테이너에 NetScaler CPX 인스턴스를 설치합니다.

docker run -dt -P --privileged=true –net=host –e NS_NETMODE=”HOST” -e CPX_CORES=<number of cores> --name <container_name> --ulimit core=-1 -e CPX_NW_DEV='<INTERFACES>' -e CPX_CONFIG=’{“YIELD”:”NO”}’ -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT> e PLATFORM=CP1000 -v <host_dir>:/cpx <REPOSITORY>:<TAG>
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e CPX_NW_DEV='eth1 eth2' -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e LS_IP=10.102.38.134 -e PLATFORM=CP1000 -v /var/cpx:/cpx --name cpx_host cpx:12.0-51.xx

이 예제에서는 NetScaler CPX Docker 이미지를 기반으로 mycpx 라는 컨테이너를 만듭니다.

-P 매개 변수는 필수 항목이며, NetScaler CPX Docker 이미지에 의해 컨테이너에서 노출되는 포트(포트 80, 22, 443, 161/UDP)를 Docker 호스트의 사용자 정의 범위에서 무작위로 선택되는 포트에 매핑하도록 Docker에 지시합니다. 이는 충돌을 방지하기 위함입니다. 이후에 동일한 Docker 호스트에 NetScaler CPX 컨테이너를 여러 개 만들 경우에 대비해서 필요합니다. 포트 매핑은 동적으로 이루어지며 컨테이너를 시작하거나 다시 시작할 때마다 설정됩니다. 포트는 다음과 같이 사용됩니다.

  • 80은 HTTP에 사용됩니다.
  • 443은 HTTPS에 사용됩니다.
  • 22는 SSH에 사용됩니다.
  • 161/UDP는 SNMP에 사용됩니다.

정적 포트 매핑을 원하는 경우 -p 매개 변수를 사용하여 수동으로 설정합니다.

--privileged=true 옵션은 승격된 권한 모드로 컨테이너를 실행하는 데 사용됩니다. 여러 코어를 사용하여 NetScaler CPX를 실행하는 경우 모든 시스템 권한을 NetScaler CPX에 부여해야 합니다. 단일 코어를 사용하여 NetScaler CPX를 실행하려는 경우 이 옵션 대신 --cap-add=NET\_ADMIN 옵션을 사용하여 전체 네트워크 권한으로 NetScaler CPX 컨테이너를 실행할 수 있도록 해야 합니다.

**--net=host는 표준 docker run 명령 옵션으로, 컨테이너가 호스트 네트워크 스택에서 실행되며 모든 네트워크 장치에 액세스할 수 있도록 지정합니다.

참고

브리지 또는 비 네트워크에서 NetScaler CPX를 실행하는 경우 이 옵션을 무시합니다.

-e NS_NETMODE="HOST"는 NetScaler CPX 관련 환경 변수로서, 이를 통해 NetScaler CPX가 호스트 모드로 시작되도록 지정할 수 있습니다. NetScaler CPX가 호스트 모드로 시작되는 경우 NetScaler CPX에 대한 관리 액세스를 위해 호스트 컴퓨터에 기본 iptable 규칙 4개가 구성됩니다. 이때 다음 포트가 사용됩니다.

  • 9995 - HTTP용
  • 9996 - HTTPS용
  • 9997 - SSH용
  • 9998 - SNMP용

다른 포트를 지정하려는 경우 다음 환경 변수를 사용할 수 있습니다.

  • -e NS_HTTP_PORT=
  • -e NS_HTTPS_PORT=
  • -e NS_SSH_PORT=
  • -e NS_SNMP_PORT=

참고

브리지 또는 비 네트워크에서 NetScaler CPX를 실행하는 경우 이 환경 변수를 무시합니다.

-e CPX_CORES는 선택적인 NetScaler CPX 관련 환경 변수입니다. 이 환경 변수로 NetScaler CPX 컨테이너를 시작하는 데 사용할 처리 엔진 수를 정의하여 NetScaler CPX 인스턴스의 성능을 높일 수 있습니다.

참고

처리 엔진을 추가할 때마다 Docker 호스트에 동일한 수의 vCPU와 동일한 양(GB)의 메모리가 포함되도록 해야 합니다. 예를 들어 처리 엔진 4개를 추가하려는 경우 Docker 호스트에 vCPU 4개와 4GB 메모리가 있어야 합니다.

-e EULA = yes는 필수 NetScaler CPX 관련 환경 변수로서 https://www.citrix.com/products/netscaler-adc/cpx-express.html에 있는 EULA(최종 사용자 사용권 계약)를 읽고 이해했음을 확인하는 데 필요합니다.

-e PLATFORM=CP1000 매개 변수는 NetScaler CPX 라이센스 유형을 지정합니다.

호스트 네트워크에서 Docker를 실행하는 경우 -e CPX_NW_DEV 환경 변수를 사용하여 NetScaler CPX 컨테이너에 전용 네트워크 인스턴스를 할당할 수 있습니다. 네트워크 인터페이스를 공백으로 구분하여 정의해야 합니다. 정의된 네트워크 인터페이스는 NetScaler CPX 컨테이너를 제거할 때까지 NetScaler CPX 컨테이너에 유지됩니다. NetScaler CPX 컨테이너가 프로비저닝되면 할당된 모든 네트워크 인터페이스가 NetScaler 네트워킹 네임스페이스에 추가됩니다.

참고

브리지 또는 비 네트워크에서 NetScaler CPX를 실행하며 Docker 또는 컨테이너 네트워크를 변경하는 경우(예: 컨테이너에 대한 다른 네트워크 연결 구성 또는 기존 네트워크 제거) 업데이트된 네트워크를 사용하기 위해 NetScaler CPX 컨테이너를 다시 시작해야 합니다.

docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_NW_DEV='eth1 eth2' -e CPX_CORES=5 -e PLATFORM=CP1000 --name cpx_host cpx:12.0-53.x

-e CPX_CONFIG는 NetScaler CPX 관련 환경 변수로서, 이를 사용하여 NetScaler CPX 컨테이너의 처리량을 제어할 수 있습니다. NetScaler CPX가 처리할 수신 트래픽이 들어오지 않을 경우 이러한 유휴 시간 동안 CPU를 양보하여 처리량이 낮아집니다. 이러한 경우에 CPX_CONFIG 환경 변수를 사용하여 NetScaler CPX 컨테이너의 처리량을 제어할 수 있습니다. CPX_CONFIG 환경 변수에 JSON 형식으로 다음 값을 제공해야 합니다.

  • NetScaler CPX 컨테이너가 유휴 상황에서 CPU를 양보하도록 하려면 다음과 같이 정의합니다. {"YIELD” : “Yes”}
  • NetScaler CPX 컨테이너가 유휴 상황에서 CPU를 양보하지 않도록 해 높은 처리량을 얻으려면 다음과 같이 정의합니다. {“YIELD” : “No”}
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e PLATFORM=CP1000 --name cpx_host cpx:12.0-51.x
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"Yes"}' -e PLATFORM=CP1000 --name cpx_host cpx:12.0-51.xx

–v 매개 변수는 선택적 매개 변수로서 NetScaler CPX 탑재 디렉터리 /cpx의 탑재 지점을 지정합니다. 탑재 지점은 호스트에서 /cpx 디렉터리를 탑재하는 디렉터리입니다. /cpx 디렉터리에는 로그, 구성 파일, SSL 인증서 및 코어 덤프 파일이 저장됩니다. 예제에서 탑재 지점은 /var/cpx이고 NetScaler CPX 탑재 디렉터리는 /cpx입니다.

라이센스를 구입했거나 평가 라이센스가 있는 경우 라이센스 서버에 라이센스를 업로드하고 -e LS_IP=\<LS_IP_ADDRESS\> -e LS_PORT=\<LS_PORT\> 매개 변수를 사용하여 docker run 명령으로 해당 라이센스 서버 위치를 지정할 수 있습니다. 이 경우에는 EULA에 동의하지 않아도 됩니다.

docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e LS_IP=10.102.38.134 -e PLATFORM=CP1000 --name cpx_host cpx:12.0-51.xx

여기서:

  • <LS_IP_ADDRESS>는 라이센스 서버의 IP 주소입니다.
  • <LS_PORT>는 라이센스 서버의 포트입니다.

다음 명령을 사용하여 시스템에서 실행되고 있는 이미지와 표준 포트에 매핑된 포트를 확인할 수 있습니다. docker ps

Docker Compose를 사용하여 NetScaler CPX 인스턴스 배포

Docker Compose 도구를 사용하여 단일 NetScaler CPX 인스턴스 또는 다중 NetScaler CPX 인스턴스를 프로비전할 수 있습니다. Compose를 사용하여 NetScaler CPX 인스턴스를 프로비전하려면 먼저 NetScaler CPX 이미지, NetScaler CPX 인스턴스용으로 열려는 포트 및 사용자의 NetScaler CPX 인스턴스 권한을 지정하여 Compose 파일을 작성해야 합니다.

중요

호스트에 Docker Compose 도구가 설치되어 있는지 확인하십시오.

다중 NetScaler CPX 인스턴스를 프로비전하려면:

  1. 다음을 참고하여 Compose 파일을 작성합니다.
  • <service-name>은 프로비전하려는 서비스의 이름입니다.
  • image:<repository>:<tag>는 NetScaler CPX 이미지의 저장소와 버전을 의미합니다.
  • privileged: true는 NetScaler CPX 인스턴스에 모든 루트 권한을 제공합니다.
  • cap_add는 NetScaler CPX 인스턴스에 네트워크 권한을 부여합니다.
  • <host_directory_path>는 NetScaler CPX 인스턴스에 탑재할 Docker 호스트의 디렉터리입니다.
  • <number_processing_engine>은 NetScaler CPX 인스턴스를 시작하는 데 사용할 처리 엔진 수입니다. 처리 엔진을 추가할 때마다 Docker 호스트에 동일한 수의 vCPU와 동일한 양(GB)의 메모리가 포함되도록 해야 합니다. 예를 들어 처리 엔진 4개를 추가하려는 경우 Docker 호스트에 vCPU 4개와 4GB 메모리가 있어야 합니다.

일반적으로 Compose 파일은 다음과 유사한 형식을 따릅니다.

    <service-name>:
    container_name:
    image: <repository>:<tag>
    ports:
        - 22
        - 80
        - 443
        - 161/udp
        - 35021-35030
    tty: true
    cap_add:
        - NET_ADMIN
    ulimits:
    core: -1
    volumes:
        - <host_directory_path>:/cpx
    environment:
        - EULA=yes
        - CPX_CORES=<number_processing_engine>
        - CPX_CONFIG='{"YIELD":"Yes"}'
    CPX_0:
    container_name: CPX_0
    image: cpx:12.0-53.xx
    ports:
        -  443
        -  22
        -  80
        -  161/udp
        -  35021-35030
    tty: true
    cap_add:
        - NET_ADMIN
    ulimits:
        core: -1
    volumes:
        - /root/test:/cpx
    environment:
        -  CPX_CORES=2
        -  EULA=yes

참고: 단일 NetScaler CPX 인스턴스를 프로비전하고 싶다면 Compose 파일에 다음 줄을 추가해야 합니다. container_name:\<name_of_container\> 다음 명령을 실행하여 다중 NetScaler CPX 인스턴스를 프로비전합니다. docker-compose -f <compose_file_name> scale <service-name>=<number of instances> up –d docker-compose -f docker-compose.yml scale cpxlb=3 up –d

단일 NetScaler CPX 인스턴스를 프로비전하고 싶다면 다음 명령을 실행합니다. docker-compose -f \<compose_file_name\> up –d