37.2. 설치
OpenShift Container Platform에서 집계 로깅 스택을 설치하는 일반적인 절차는 컨테이너 로그 집계에 설명되어 있습니다. 설치 가이드를 수행하는 동안 다음과 같은 몇 가지 중요한 사항에 유의해야 합니다.
로깅 Pod가 클러스터에 균등하게 분배되려면 프로젝트를 생성할 때 비어 있는 노드 선택기 를 사용해야 합니다.
$ oc adm new-project logging --node-selector=""
나중에 수행되는 노드 레이블링과 함께 로깅 프로젝트 전체에서 Pod 배치를 제어합니다.
Elasticsearch(ES)는 노드 장애에 대한 복원력을 위해 3개 이상의 클러스터 크기로 배포해야 합니다. 이는 인벤토리 호스트 파일에서 openshift_logging_es_cluster_size
매개 변수를 설정하여 지정합니다.
매개 변수 전체 목록은 Ansible 변수를 참조하십시오.
Kibana에는 브라우저가 액세스하는 데 사용할 수 있는 호스트 이름이 필요합니다. 예를 들어 랩탑에서 실행되는 웹 브라우저에서 Kibana에 액세스하려면 Kibana의 DNS 별칭을 회사 이름 서비스에 추가해야 할 수 있습니다. 로깅 배포는 "인프라" 노드 또는 OpenShift 라우터가 실행될 때마다 Kibana에 대한 경로를 생성합니다. Kibana 호스트 이름 별칭은 이 시스템을 가리켜야 합니다. 이 호스트 이름은 Ansible openshift_logging_kibana_hostname
변수로 지정됩니다.
설치는 레지스트리에서 이미지를 이미 검색했는지 여부와 클러스터 크기에 따라 다소 시간이 걸릴 수 있습니다.
openshift-logging 프로젝트에서 oc get all
을 사용하여 배포를 확인할 수 있습니다.
$ oc get all NAME REVISION REPLICAS TRIGGERED BY logging-curator 1 1 logging-es-6cvk237t 1 1 logging-es-e5x4t4ai 1 1 logging-es-xmwvnorv 1 1 logging-kibana 1 1 NAME DESIRED CURRENT AGE logging-curator-1 1 1 3d logging-es-6cvk237t-1 1 1 3d logging-es-e5x4t4ai-1 1 1 3d logging-es-xmwvnorv-1 1 1 3d logging-kibana-1 1 1 3d NAME HOST/PORT PATH SERVICE TERMINATION LABELS logging-kibana kibana.example.com logging-kibana reencrypt component=support,logging-infra=support,provider=openshift logging-kibana-ops kibana-ops.example.com logging-kibana-ops reencrypt component=support,logging-infra=support,provider=openshift NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE logging-es 172.24.155.177 <none> 9200/TCP 3d logging-es-cluster None <none> 9300/TCP 3d logging-es-ops 172.27.197.57 <none> 9200/TCP 3d logging-es-ops-cluster None <none> 9300/TCP 3d logging-kibana 172.27.224.55 <none> 443/TCP 3d logging-kibana-ops 172.25.117.77 <none> 443/TCP 3d NAME READY STATUS RESTARTS AGE logging-curator-1-6s7wy 1/1 Running 0 3d logging-deployer-un6ut 0/1 Completed 0 3d logging-es-6cvk237t-1-cnpw3 1/1 Running 0 3d logging-es-e5x4t4ai-1-v933h 1/1 Running 0 3d logging-es-xmwvnorv-1-adr5x 1/1 Running 0 3d logging-fluentd-156xn 1/1 Running 0 3d logging-fluentd-40biz 1/1 Running 0 3d logging-fluentd-8k847 1/1 Running 0 3d
다음과 유사한 설정으로 끝나야 합니다.
$ oc get pods -o wide NAME READY STATUS RESTARTS AGE NODE logging-curator-1-6s7wy 1/1 Running 0 3d ip-172-31-24-239.us-west-2.compute.internal logging-deployer-un6ut 0/1 Completed 0 3d ip-172-31-6-152.us-west-2.compute.internal logging-es-6cvk237t-1-cnpw3 1/1 Running 0 3d ip-172-31-24-238.us-west-2.compute.internal logging-es-e5x4t4ai-1-v933h 1/1 Running 0 3d ip-172-31-24-235.us-west-2.compute.internal logging-es-xmwvnorv-1-adr5x 1/1 Running 0 3d ip-172-31-24-233.us-west-2.compute.internal logging-fluentd-156xn 1/1 Running 0 3d ip-172-31-24-241.us-west-2.compute.internal logging-fluentd-40biz 1/1 Running 0 3d ip-172-31-24-236.us-west-2.compute.internal logging-fluentd-8k847 1/1 Running 0 3d ip-172-31-24-237.us-west-2.compute.internal logging-fluentd-9a3qx 1/1 Running 0 3d ip-172-31-24-231.us-west-2.compute.internal logging-fluentd-abvgj 1/1 Running 0 3d ip-172-31-24-228.us-west-2.compute.internal logging-fluentd-bh74n 1/1 Running 0 3d ip-172-31-24-238.us-west-2.compute.internal ... ...
기본적으로 각 ES 인스턴스에 할당된 RAM의 크기는 16GB입니다. openshift_logging_es_memory_limit
는 openshift-ansible 호스트 인벤토리 파일에서 사용되는 매개 변수입니다. 이 값의 절반은 개별 elasticsearch Pod java 프로세스 힙 크기로 전달됩니다.
37.2.1. 대규모 클러스터
100개 이상의 노드에서 먼저 docker pull registry.redhat.io/openshift3/logging-fluentd:v3.11
에서 로깅 이미지를 미리 가져오는 것이 좋습니다. 로깅 인프라 Pod(Elasticsearch, Kibana 및 Curator)를 배포한 후 노드 레이블은 한 번에 20개의 노드 단계에서 수행해야 합니다. 예를 들면 다음과 같습니다.
간단한 반복문 사용:
$ while read node; do oc label nodes $node logging-infra-fluentd=true; done < 20_fluentd.lst
다음 작업도 수행합니다.
$ oc label nodes 10.10.0.{100..119} logging-infra-fluentd=true
그룹의 노드에 레이블을 지정하면 OpenShift 로깅에서 사용하는 DaemonSet이 진행되므로 이미지 레지스트리와 같은 공유 리소스의 경합을 방지하는 데 도움이 됩니다.
"CrashLoopBackOff | ImagePullFailed | Error" 문제가 발생하는지 확인하십시오. oc logs <pod>
, oc describe pod <pod>
및 oc get event
는 유용한 진단 명령입니다.