5.7. 영역 Aware 샘플 애플리케이션 설치
영역 인식 샘플 애플리케이션을 배포하여 OpenShift Data Foundation의 확장 클러스터 설정이 올바르게 구성되었는지 확인합니다.
데이터 영역 간 대기 시간을 사용하면 노드와 영역(예: 동일한 위치에 있는 모든 노드) 간에 대기 시간이 짧은 OpenShift 클러스터에 비해 성능이 저하될 것으로 예상할 수 있습니다. 성능 저하의 속도 또는 성능은 영역 간 대기 시간과 스토리지를 사용한 애플리케이션 동작(예: 쓰기 트래픽)에 따라 달라집니다. 필요한 서비스 수준에 충분한 애플리케이션 성능을 보장하기 위해 클러스터 구성을 확장하여 중요한 애플리케이션을 테스트해야 합니다.
ReadWriteMany(RWX) PVC(영구 볼륨 클레임)는 ocs-storagecluster-cephfs 스토리지 클래스를 사용하여 생성됩니다. 여러 Pod에서 새로 생성된 RWX PVC를 동시에 사용합니다. 사용되는 애플리케이션을 File Uploader라고 합니다.
사이트 중단 시 애플리케이션을 계속 사용할 수 있도록 애플리케이션이 토폴로지 영역에 분배되는 방법에 대한 데모입니다.
이 데모는 이 애플리케이션이 파일을 저장하기 위해 동일한 RWX 볼륨을 공유하므로 가능합니다. Red Hat OpenShift Data Foundation은 영역 인식 및 고가용성을 사용하여 확장된 클러스터로 구성되어 있기 때문에 영구 데이터 액세스에도 작동합니다.
새 프로젝트를 생성합니다.
oc new-project my-shared-storage
$ oc new-project my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow file-uploader라는 예제 PHP 애플리케이션을 배포합니다.
oc new-app openshift/php:latest~https://github.com/mashetty330/openshift-php-upload-demo --name=file-uploader
$ oc new-app openshift/php:latest~https://github.com/mashetty330/openshift-php-upload-demo --name=file-uploaderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 빌드 로그를 보고 애플리케이션이 배포될 때까지 기다립니다.
oc logs -f bc/file-uploader -n my-shared-storage
$ oc logs -f bc/file-uploader -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 프롬프트는
푸시 성공이 표시된 후 tail 모드에서 out of the tail 모드를 반환합니다.참고new-app 명령은 Git 리포지토리에서 직접 애플리케이션을 배포하고 OpenShift 템플릿을 사용하지 않으므로 OpenShift 경로 리소스는 기본적으로 생성되지 않습니다. 경로를 수동으로 생성해야 합니다.
애플리케이션 스케일링
애플리케이션을 4개의 복제본으로 확장하고 해당 서비스를 노출하여 애플리케이션 영역을 인식하고 사용할 수 있도록 합니다.
oc expose svc/file-uploader -n my-shared-storage
$ oc expose svc/file-uploader -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale --replicas=4 deploy/file-uploader -n my-shared-storage
$ oc scale --replicas=4 deploy/file-uploader -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -o wide -n my-shared-storage
$ oc get pods -o wide -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 몇 분 내에 4개의 file-uploader Pod가 있어야 합니다.
실행 중상태에 4개의 file-uploader Pod가 있을 때까지 위의 명령을 반복합니다.PVC를 생성하여 애플리케이션에 연결합니다.
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
$ 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-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 다음과 같습니다.
- PVC를 생성합니다.
- 볼륨 정의를 포함하도록 애플리케이션 배포를 업데이트합니다.
- 지정된 mount-path에 볼륨 마운트를 연결하도록 애플리케이션 배포를 업데이트합니다.
- 4개의 애플리케이션 포드를 사용하여 새 배포를 생성합니다.
볼륨을 추가한 결과를 확인합니다.
oc get pvc -n my-shared-storage
$ oc get pvc -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-shared-storage Bound pvc-5402cc8a-e874-4d7e-af76-1eb05bd2e7c7 10Gi RWX ocs-storagecluster-cephfs 52s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-shared-storage Bound pvc-5402cc8a-e874-4d7e-af76-1eb05bd2e7c7 10Gi RWX ocs-storagecluster-cephfs 52sCopy to Clipboard Copied! Toggle word wrap Toggle overflow ACCESS MODE가 RWX로 설정되어 있는지 확인합니다.4개의
file-uploaderPod 모두 동일한 RWX 볼륨을 사용합니다. 이 액세스 모드가 없으면 OpenShift에서 동일한 PV(영구 볼륨)에 여러 Pod를 안정적으로 연결하지 않습니다. RWO(ReadWriteOnce) PV를 사용하는 배포를 확장하려고 하면 Pod가 동일한 노드에 배치될 수 있습니다.
5.7.1. 설치 후 애플리케이션 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
애플리케이션을 4개의 복제본으로 확장하고 해당 서비스를 노출하여 애플리케이션 영역을 인식하고 사용할 수 있도록 합니다.
oc expose svc/file-uploader -n my-shared-storage
$ oc expose svc/file-uploader -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale --replicas=4 deploy/file-uploader -n my-shared-storage
$ oc scale --replicas=4 deploy/file-uploader -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -o wide -n my-shared-storage
$ oc get pods -o wide -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 몇 분 내에 4개의 file-uploader Pod가 있어야 합니다.
실행 중상태에 4개의 file-uploader Pod가 있을 때까지 위의 명령을 반복합니다.PVC를 생성하여 애플리케이션에 연결합니다.
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
$ 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-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 다음과 같습니다.
- PVC를 생성합니다.
- 볼륨 정의를 포함하도록 애플리케이션 배포를 업데이트합니다.
- 지정된 mount-path에 볼륨 마운트를 연결하도록 애플리케이션 배포를 업데이트합니다.
- 4개의 애플리케이션 포드를 사용하여 새 배포를 생성합니다.
볼륨을 추가한 결과를 확인합니다.
oc get pvc -n my-shared-storage
$ oc get pvc -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-shared-storage Bound pvc-5402cc8a-e874-4d7e-af76-1eb05bd2e7c7 10Gi RWX ocs-storagecluster-cephfs 52s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-shared-storage Bound pvc-5402cc8a-e874-4d7e-af76-1eb05bd2e7c7 10Gi RWX ocs-storagecluster-cephfs 52sCopy to Clipboard Copied! Toggle word wrap Toggle overflow ACCESS MODE가 RWX로 설정되어 있는지 확인합니다.4개의
file-uploaderPod 모두 동일한 RWX 볼륨을 사용합니다. 이 액세스 모드가 없으면 OpenShift에서 동일한 PV(영구 볼륨)에 여러 Pod를 안정적으로 연결하지 않습니다. RWO(ReadWriteOnce) PV를 사용하는 배포를 확장하려고 하면 Pod가 동일한 노드에 배치될 수 있습니다.
5.7.2. 배포를 영역 Aware로 수정 링크 복사링크가 클립보드에 복사되었습니다!
현재 file-uploader Deployment는 영역을 인식하지 않으며 동일한 영역에 있는 모든 Pod를 예약할 수 있습니다. 이 경우 사이트 중단이 있는 경우 애플리케이션을 사용할 수 없습니다. 자세한 내용은 Pod 토폴로지 분배 제약 조건을 사용하여 Pod 배치 제어를 참조하십시오.
애플리케이션 배포 구성에 포드 배치 규칙을 추가하여 애플리케이션 영역을 인식하도록 합니다.
다음 명령을 실행하고 출력을 검토합니다.
oc get deployment file-uploader -o yaml -n my-shared-storage | less
$ oc get deployment file-uploader -o yaml -n my-shared-storage | lessCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 토폴로지 영역 레이블을 사용하도록 배포를 편집합니다.
oc edit deployment file-uploader -n my-shared-storage
$ oc edit deployment file-uploader -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 시작과종료사이에 다음 새 행을 추가합니다(이전 단계의 출력에 표시됨).Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
deployment.apps/file-uploader edited
deployment.apps/file-uploader editedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
배포를 제로 포드로 축소한 다음 Pod 4 개로 돌아갑니다. 이는 배포가 Pod 배치 측면에서 변경되었기 때문에 필요합니다.
- Pod 0으로 축소
oc scale deployment file-uploader --replicas=0 -n my-shared-storage
$ oc scale deployment file-uploader --replicas=0 -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
deployment.apps/file-uploader scaled
deployment.apps/file-uploader scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Pod 4 개까지 확장
oc scale deployment file-uploader --replicas=4 -n my-shared-storage
$ oc scale deployment file-uploader --replicas=4 -n my-shared-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
deployment.apps/file-uploader scaled
deployment.apps/file-uploader scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4개의 포드가 datacenter1 및 datacenter2 영역의 4개의 노드에 분산되어 있는지 확인합니다.
oc get pods -o wide -n my-shared-storage | egrep '^file-uploader'| grep -v build | awk '{print $7}' | sort | uniq -c$ oc get pods -o wide -n my-shared-storage | egrep '^file-uploader'| grep -v build | awk '{print $7}' | sort | uniq -cCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
1 perf1-mz8bt-worker-d2hdm 1 perf1-mz8bt-worker-k68rv 1 perf1-mz8bt-worker-ntkp8 1 perf1-mz8bt-worker-qpwsr
1 perf1-mz8bt-worker-d2hdm 1 perf1-mz8bt-worker-k68rv 1 perf1-mz8bt-worker-ntkp8 1 perf1-mz8bt-worker-qpwsrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 사용되는 영역 레이블을 검색합니다.
oc get nodes -L topology.kubernetes.io/zone | grep datacenter | grep -v master
$ oc get nodes -L topology.kubernetes.io/zone | grep datacenter | grep -v masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
perf1-mz8bt-worker-d2hdm Ready worker 35d v1.20.0+5fbfd19 datacenter1 perf1-mz8bt-worker-k68rv Ready worker 35d v1.20.0+5fbfd19 datacenter1 perf1-mz8bt-worker-ntkp8 Ready worker 35d v1.20.0+5fbfd19 datacenter2 perf1-mz8bt-worker-qpwsr Ready worker 35d v1.20.0+5fbfd19 datacenter2
perf1-mz8bt-worker-d2hdm Ready worker 35d v1.20.0+5fbfd19 datacenter1 perf1-mz8bt-worker-k68rv Ready worker 35d v1.20.0+5fbfd19 datacenter1 perf1-mz8bt-worker-ntkp8 Ready worker 35d v1.20.0+5fbfd19 datacenter2 perf1-mz8bt-worker-qpwsr Ready worker 35d v1.20.0+5fbfd19 datacenter2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 파일을 업로드하려면 브라우저를 사용하여 file-uploader 웹 애플리케이션을 사용합니다.
생성된 경로를 찾습니다.
oc get route file-uploader -n my-shared-storage -o jsonpath --template="http://{.spec.host}{'\n'}"$ oc get route file-uploader -n my-shared-storage -o jsonpath --template="http://{.spec.host}{'\n'}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
http://file-uploader-my-shared-storage.apps.cluster-ocs4-abdf.ocs4-abdf.sandbox744.opentlc.com
http://file-uploader-my-shared-storage.apps.cluster-ocs4-abdf.ocs4-abdf.sandbox744.opentlc.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 단계의 경로를 사용하여 브라우저에서 웹 애플리케이션을 가리킵니다.
웹 애플리케이션은 업로드된 모든 파일을 나열하고 새 파일을 업로드할 수 있는 기능을 제공하며 기존 데이터를 다운로드할 수 있습니다. 바로 지금, 아무 것도 없습니다.
로컬 시스템에서 임의의 파일을 선택하여 애플리케이션에 업로드합니다.
- 파일 선택을 클릭하여 임의의 파일을 선택합니다.
업로드를 클릭합니다.
그림 5.1. 간단한 PHP 기반 파일 업로드 도구
- 업로드된 파일 목록을 클릭하여 현재 업로드된 모든 파일 목록을 확인합니다.
OpenShift Container Platform 이미지 레지스트리, 수신 라우팅 및 모니터링 서비스는 영역을 인식하지 못합니다.