검색

5장. 영역 인식 샘플 애플리케이션 설치

download PDF

이 섹션을 사용하여 OpenShift Container Storage Metro Disaster 복구 설정을 검증하기 위해 영역 인식 샘플 애플리케이션을 배포합니다.

중요

데이터 영역 간 대기 시간을 사용하면 노드와 영역(예: 동일한 위치에 있는 모든 노드) 간 대기 시간이 짧은 OpenShift 클러스터에 비해 성능 저하가 발생할 수 있습니다. 성능이 저하되는 정도는 스토리지(예: 쓰기 트래픽)를 사용하는 영역과 애플리케이션 동작 사이의 대기 시간에 따라 달라집니다. 필요한 서비스 수준에 대한 애플리케이션 성능을 충분히 보장하기 위해 Metro DR 클러스터 구성으로 중요한 애플리케이션을 테스트하십시오.

5.1. 영역 인식 샘플 애플리케이션 설치

이 섹션에서는 ocs-storagecluster-cephfs 스토리지 클래스를 사용하여 동시에 여러 포드에서 사용할 수 있는 Read-Write-Many(RWX) PVC를 생성합니다. 우리가 사용할 애플리케이션을 File Uploader라고 합니다.

이 애플리케이션은 파일을 저장하기 위해 동일한 RWX 볼륨을 공유하므로 사이트 중단 시 계속 사용할 수 있도록 애플리케이션을 토폴로지 영역에 분산하는 방법을 보여줄 수 있습니다. OpenShift Container Storage는 영역 인식과 고가용성을 갖춘 Metro DR 확장 클러스터로 구성되어 있기 때문에 영구 데이터 액세스에도 사용됩니다.

  1. 새 프로젝트를 생성합니다.

    oc new-project my-shared-storage
  2. file-uploader라는 예제 PHP 애플리케이션을 배포합니다.

    oc new-app openshift/php:7.2-ubi8~https://github.com/christianh814/openshift-php-upload-demo --name=file-uploader

    샘플 출력:

    Found image 4f2dcc0 (9 days old) in image stream "openshift/php" under tag "7.2-ubi8" for "openshift/php:7.2-
    ubi8"
    
    Apache 2.4 with PHP 7.2
    -----------------------
    PHP 7.2 available as container is a base platform for building and running various PHP 7.2 applications and frameworks. PHP is an HTML-embedded scripting language. PHP attempts to make it easy for developers to write dynamically generated web pages. PHP also offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled webpage with PHP is fairly simple. The most common
    use of PHP coding is probably as a replacement for CGI scripts.
    
    Tags: builder, php, php72, php-72
    
    * A source build using source code from https://github.com/christianh814/openshift-php-upload-demo will be cr
    eated
    * The resulting image will be pushed to image stream tag "file-uploader:latest"
    * Use 'oc start-build' to trigger a new build
    
    --> Creating resources ...
        imagestream.image.openshift.io "file-uploader" created
        buildconfig.build.openshift.io "file-uploader" created
        deployment.apps "file-uploader" created
        service "file-uploader" created
    --> Success
        Build scheduled, use 'oc logs -f buildconfig/file-uploader' to track its progress.
    
        Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
         'oc expose service/file-uploader'
    
        Run 'oc status' to view your app.
  3. 빌드 로그를 보고 애플리케이션이 배포될 때까지 기다립니다.

    oc logs -f bc/file-uploader -n my-shared-storage

    출력 예:

    Cloning "https://github.com/christianh814/openshift-php-upload-demo" ...
    
        [...]
        Generating dockerfile with builder image image-registry.openshift-image-regis
    try.svc:5000/openshift/php@sha256:d97466f33999951739a76bce922ab17088885db610c
    0e05b593844b41d5494ea
    STEP 1: FROM image-registry.openshift-image-registry.svc:5000/openshift/php@s
    ha256:d97466f33999951739a76bce922ab17088885db610c0e05b593844b41d5494ea
    STEP 2: LABEL "io.openshift.build.commit.author"="Christian Hernandez <christ
    ian.hernandez@yahoo.com>"       "io.openshift.build.commit.date"="Sun Oct 1 1
    7:15:09 2017 -0700"       "io.openshift.build.commit.id"="288eda3dff43b02f7f7
    b6b6b6f93396ffdf34cb2"       "io.openshift.build.commit.ref"="master"       "
    io.openshift.build.commit.message"="trying to modularize"       "io.openshift
    .build.source-location"="https://github.com/christianh814/openshift-php-uploa
    d-demo"       "io.openshift.build.image"="image-registry.openshift-image-regi
    stry.svc:5000/openshift/php@sha256:d97466f33999951739a76bce922ab17088885db610
    c0e05b593844b41d5494ea"
    STEP 3: ENV OPENSHIFT_BUILD_NAME="file-uploader-1"     OPENSHIFT_BUILD_NAMESP
    ACE="my-shared-storage"     OPENSHIFT_BUILD_SOURCE="https://github.com/christ
    ianh814/openshift-php-upload-demo"     OPENSHIFT_BUILD_COMMIT="288eda3dff43b0
    2f7f7b6b6b6f93396ffdf34cb2"
    STEP 4: USER root
    STEP 5: COPY upload/src /tmp/src
    STEP 6: RUN chown -R 1001:0 /tmp/src
    STEP 7: USER 1001
    STEP 8: RUN /usr/libexec/s2i/assemble
    ---> Installing application source...
    => sourcing 20-copy-config.sh ...
    ---> 17:24:39     Processing additional arbitrary httpd configuration provide
    d by s2i ...
    => sourcing 00-documentroot.conf ...
    => sourcing 50-mpm-tuning.conf ...
    => sourcing 40-ssl-certs.sh ...
    STEP 9: CMD /usr/libexec/s2i/run
    STEP 10: COMMIT temp.builder.openshift.io/my-shared-storage/file-uploader-1:3
    b83e447
    Getting image source signatures
    
    [...]

    Push successful(내보내기 성공)이 표시되면 명령 프롬프트에서 tail 모드로 돌아갑니다.

참고

new-app 명령은 git 리포지토리에서 직접 애플리케이션을 배포하고 OpenShift 템플릿을 사용하지 않으므로 OpenShift 경로 리소스는 기본적으로 생성되지 않습니다. 경로를 수동으로 생성해야 합니다.

4개의 복제본으로 확장하고 서비스를 노출하여 애플리케이션 영역을 인식하고 사용할 수 있도록 합니다.

oc expose svc/file-uploader -n my-shared-storage
oc scale --replicas=4 deploy/file-uploader -n my-shared-storage
oc get pods -o wide -n my-shared-storage

몇 분 내에 4개의 파일 업로더 Pod가 있어야 합니다. Running STATUS에 파일 업로더 Pod 4개가 있을 때까지 위의 명령을 반복합니다.

PersistentVolumeClaim을 생성하여 oc set volume 명령을 사용하여 애플리케이션에 연결할 수 있습니다. 다음을 실행합니다

oc set volume deploy/file-uploader --add --name=my-shared-storage \
-t pvc --claim-mode=ReadWriteMany --claim-size=10Gi \
--claim-name=my-shared-storage --claim-class=ocs-storagecluster-cephfs \
--mount-path=/opt/app-root/src/uploaded \
-n my-shared-storage

이 명령은 다음을 수행합니다.

  • 영구 볼륨 클레임 만들기
  • 볼륨 정의를 포함하도록 애플리케이션 배포를 업데이트합니다.
  • 지정된 mount-path에 볼륨을 연결하도록 애플리케이션 배포를 업데이트합니다.
  • 4 애플리케이션 포드의 새 배포 발생

이제 볼륨을 추가한 결과를 살펴보겠습니다.

oc get pvc -n my-shared-storage

출력 예:

NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
my-shared-storage   Bound    pvc-5402cc8a-e874-4d7e-af76-1eb05bd2e7c7   10Gi       RWX            ocs-storagecluster-cephfs   52s

ACCESSMODE가 RWX(ReadWriteMany)로 설정되어 있는지 확인합니다.

4개의 file-uploaderPods가 모두 동일한 RWX 볼륨을 사용하고 있습니다. 이 ACCESSMODE가 없으면 OpenShift는 동일한 영구 볼륨에 여러 포드를 안정적으로 연결하지 않습니다. RWO(ReadWriteOnce) 영구 볼륨을 사용하는 배포를 확장하려고 하면 Pod가 동일한 노드에 공동 배치됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.