Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

3.10. 올바른 최대 전송 단위(MTU) 크기 확인

최대 전송 단위(MTU)를 확인하면 SSL 인증서 문제로 가장할 수 있는 잘못된 네트워킹 구성을 방지할 수 있습니다.

HTTP를 통해 전송된 MTU 크기보다 큰 패킷은 물리적 네트워크 라우터에서 여러 패킷으로 나누어 데이터를 전송할 수 있습니다. 그러나 패킷이 HTTPS를 통해 전송된 MTU 크기보다 크면 라우터에서 패킷을 삭제해야 합니다.

설치 과정에서 다음을 비롯하여 여러 구성 요소에 안전하게 연결할 수 있는 인증서가 생성됩니다.

  • 마스터 호스트
  • 노드 호스트
  • 인프라 노드
  • 레지스트리
  • 라우터

이러한 인증서는 마스터 노드의 경우 /etc/origin/master 디렉터리에, 인프라 및 앱 노드의 경우 /etc/origin/node 디렉터리에 있습니다.

설치 후 네트워크 연결 섹션에 설명된 프로세스를 사용하여 REGISTRY_OPENSHIFT_SERVER_ADDR 에 대한 연결을 확인할 수 있습니다.

전제 조건
  1. 마스터 호스트에서 HTTPS 주소를 가져옵니다.

    $ oc -n default get dc docker-registry -o jsonpath='{.spec.template.spec.containers[].env[?(@.name=="REGISTRY_OPENSHIFT_SERVER_ADDR")].value}{"\n"}'
    docker-registry.default.svc:5000

    위의 명령은 docker-registry.default.svc : 5000의 출력을 제공합니다.

  2. 위에서 제시된 값에 /healthz를 추가하고, 이를 사용하여 모든 호스트(마스터, 인프라, 노드)를 확인하십시오.

    $ curl -v https://docker-registry.default.svc:5000/healthz
    * About to connect() to docker-registry.default.svc port 5000 (#0)
    *   Trying 172.30.11.171...
    * Connected to docker-registry.default.svc (172.30.11.171) port 5000 (#0)
    * Initializing NSS with certpath: sql:/etc/pki/nssdb
    *   CAfile: /etc/pki/tls/certs/ca-bundle.crt
      CApath: none
    * SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    * Server certificate:
    * 	subject: CN=172.30.11.171
    * 	start date: Oct 18 05:30:10 2017 GMT
    * 	expire date: Oct 18 05:30:11 2019 GMT
    * 	common name: 172.30.11.171
    * 	issuer: CN=openshift-signer@1508303629
    > GET /healthz HTTP/1.1
    > User-Agent: curl/7.29.0
    > Host: docker-registry.default.svc:5000
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < Cache-Control: no-cache
    < Date: Tue, 24 Oct 2017 19:42:35 GMT
    < Content-Length: 0
    < Content-Type: text/plain; charset=utf-8
    <
    * Connection #0 to host docker-registry.default.svc left intact

    위의 예제 출력에서는 SSL 연결이 올바른지 확인하는 데 사용되는 MTU 크기를 보여줍니다. 연결 시도에 성공한 후 연결이 설정되고 certpath 및 docker-registry에 관한 모든 서버 인증서 정보로 NSS를 초기화하여 완료합니다.

    MTU 크기가 잘못되면 시간 초과가 발생합니다.

    $ curl -v https://docker-registry.default.svc:5000/healthz
    * About to connect() to docker-registry.default.svc port 5000 (#0)
    *   Trying 172.30.11.171...
    * Connected to docker-registry.default.svc (172.30.11.171) port 5000 (#0)
    * Initializing NSS with certpath: sql:/etc/pki/nssdb

    위의 예에서는 연결이 설정되었지만 certpath를 사용하여 NSS 초기화를 완료할 수 없음을 보여줍니다. 이 문제는 적절한 노드 구성 맵에 설정된 부적절한 MTU 크기와 관계가 있습니다.

    이 문제를 해결하려면 노드 구성 맵에서 MTU 크기를 OpenShift SDN 이더넷 장치에서 사용하는 MTU 크기보다 50바이트 작게 조정하십시오.

  3. 원하는 이더넷 장치(예: eth0)의 MTU 크기를 확인하십시오.

    $ ip link show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
        link/ether fa:16:3e:92:6a:86 brd ff:ff:ff:ff:ff:ff

    위의 MTU는 1500으로 설정되어 있습니다.

  4. MTU 크기를 변경하려면 해당하는 노드 구성 맵을 수정하고 ip 명령으로 얻은 출력보다 50바이트 작은 값을 설정하십시오.

    예를 들어, MTU 크기가 1500으로 설정된 경우 노드 구성 맵에서 MTU 크기를 1450으로 조정하십시오.

    networkConfig:
       mtu: 1450
  5. 변경 사항을 저장하고 노드를 재부팅하십시오.

    참고

    OpenShift Container Platform SDN에 포함되는 모든 마스터 및 노드에서 MTU 크기를 변경해야 합니다. 또한 tun0 인터페이스의 MTU 크기는 클러스터에 속하는 모든 노드에서 같아야 합니다.

  6. 노드가 다시 온라인 상태가 되면 원래 curl 명령을 다시 실행하여 문제가 사라졌는지 확인하십시오.

    $ curl -v https://docker-registry.default.svc:5000/healthz

    시간 초과가 지속되면 MTU 크기를 50바이트 단위로 계속 조정하면서 프로세스를 반복하십시오.