5.2.2. 마스터 호스트 백업 생성
시스템 업데이트, 업그레이드 또는 기타 중요한 수정 등 OpenShift Container Platform 인프라를 변경하기 전에 이 백업 프로세스를 수행하십시오. 장애가 발생할 경우 최신 데이터를 사용할 수 있도록 데이터를 정기적으로 백업하십시오.
OpenShift Container Platform 파일
마스터 인스턴스는 API, 컨트롤러와 같은 중요한 서비스를 실행합니다. /etc/origin/master
디렉터리에서는 다음과 같은 여러 중요한 파일을 저장합니다.
- 구성, API, 컨트롤러, 서비스 등
- 설치를 통해 생성된 인증서
- 모든 클라우드 공급자 관련 구성
-
키 및 기타 인증 파일(예: htpasswd를 사용하는 경우
htpasswd
) - 기타 등등
로그 레벨 증가 또는 프록시 사용과 같은 OpenShift Container Platform 서비스를 사용자 정의할 수 있습니다. 구성 파일은 /etc/sysconfig
디렉터리에 저장됩니다.
마스터도 노드이므로 전체 /etc/origin
디렉터리를 백업하십시오.
프로시저
각 마스터 노드에서 다음 단계를 수행해야 합니다.
- 여기에 있는 포드 정의의 백업을 생성하십시오.
마스터 호스트 구성 파일의 백업을 생성하십시오.
$ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) $ sudo mkdir -p ${MYBACKUPDIR}/etc/sysconfig $ sudo cp -aR /etc/origin ${MYBACKUPDIR}/etc $ sudo cp -aR /etc/sysconfig/ ${MYBACKUPDIR}/etc/sysconfig/
참고마스터 구성 파일은 /etc/origin/master/master-config.yaml입니다.
주의/etc/origin/master/ca.serial.txt
파일은 Ansible 호스트 인벤토리에 나열된 첫 번째 마스터에서만 생성됩니다. 첫 번째 마스터 호스트를 더 이상 사용하지 않는 경우 프로세스 전에/etc/origin/master/ca.serial.txt
파일을 나머지 마스터 호스트에 복사하십시오.중요여러 마스터를 실행하는 OpenShift Container Platform 3.11 클러스터에서는 마스터 노드 중 하나의
/etc/origin/master
,/etc/etcd/ca
및/etc/etcd/generated_certs
에 추가 CA 인증서가 들어 있습니다. 이러한 인증서는 애플리케이션 노드와 etcd 노드 확장 작업에 필요하며, 원래 마스터를 영구적으로 사용할 수 없게 되는 경우 다른 마스터 노드에 복원해야 합니다. 이러한 디렉터리는 기본적으로 여기에 설명된 백업 프로시저에 포함됩니다.백업을 계획할 때 고려해야 할 다른 중요한 파일은 다음과 같습니다.
파일
설명
/etc/cni/*
컨테이너 네트워크 인터페이스 구성(사용된 경우)
/etc/sysconfig/iptables
iptables
규칙의 저장 위치/etc/sysconfig/docker-storage-setup
container-storage-setup
명령의 입력 파일/etc/sysconfig/docker
docker
구성 파일/etc/sysconfig/docker-network
docker
네트워킹 구성(예: MTU)/etc/sysconfig/docker-storage
docker
스토리지 구성(container-storage-setup
으로 생성)/etc/dnsmasq.conf
dnsmasq
의 기본 구성 파일/etc/dnsmasq.d/*
다른
dnsmasq
구성 파일/etc/sysconfig/flanneld
flannel
구성 파일(사용된 경우)/etc/pki/ca-trust/source/anchors/
시스템에 추가된 인증서(예: 외부 레지스트리용)
다음 파일의 백업을 생성하십시오.
$ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) $ sudo mkdir -p ${MYBACKUPDIR}/etc/sysconfig $ sudo mkdir -p ${MYBACKUPDIR}/etc/pki/ca-trust/source/anchors $ sudo cp -aR /etc/sysconfig/{iptables,docker-*,flanneld} \ ${MYBACKUPDIR}/etc/sysconfig/ $ sudo cp -aR /etc/dnsmasq* /etc/cni ${MYBACKUPDIR}/etc/ $ sudo cp -aR /etc/pki/ca-trust/source/anchors/* \ ${MYBACKUPDIR}/etc/pki/ca-trust/source/anchors/
패키지가 실수로 제거되었거나
rpm
패키지에 포함된 파일을 복원해야 하는 경우 시스템에rhel
패키지 목록이 설치되어 있으면 유용할 수 있습니다.참고콘텐츠 뷰 또는 사실 저장소와 같은 Red Hat Satellite 기능을 사용하는 경우 누락된 패키지 및 시스템에 설치된 패키지의 히스토리 데이터를 다시 설치하는 적절한 메커니즘을 제공하십시오.
시스템에 설치된 현재
rhel
패키지 목록을 작성하려면 다음을 수행하십시오.$ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) $ sudo mkdir -p ${MYBACKUPDIR} $ rpm -qa | sort | sudo tee $MYBACKUPDIR/packages.txt
이전 단계를 수행했다면 백업 디렉터리에 다음 파일이 있습니다.
$ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) $ sudo find ${MYBACKUPDIR} -mindepth 1 -type f -printf '%P\n' etc/sysconfig/flanneld etc/sysconfig/iptables etc/sysconfig/docker-network etc/sysconfig/docker-storage etc/sysconfig/docker-storage-setup etc/sysconfig/docker-storage-setup.rpmnew etc/origin/master/ca.crt etc/origin/master/ca.key etc/origin/master/ca.serial.txt etc/origin/master/ca-bundle.crt etc/origin/master/master.proxy-client.crt etc/origin/master/master.proxy-client.key etc/origin/master/service-signer.crt etc/origin/master/service-signer.key etc/origin/master/serviceaccounts.private.key etc/origin/master/serviceaccounts.public.key etc/origin/master/openshift-master.crt etc/origin/master/openshift-master.key etc/origin/master/openshift-master.kubeconfig etc/origin/master/master.server.crt etc/origin/master/master.server.key etc/origin/master/master.kubelet-client.crt etc/origin/master/master.kubelet-client.key etc/origin/master/admin.crt etc/origin/master/admin.key etc/origin/master/admin.kubeconfig etc/origin/master/etcd.server.crt etc/origin/master/etcd.server.key etc/origin/master/master.etcd-client.key etc/origin/master/master.etcd-client.csr etc/origin/master/master.etcd-client.crt etc/origin/master/master.etcd-ca.crt etc/origin/master/policy.json etc/origin/master/scheduler.json etc/origin/master/htpasswd etc/origin/master/session-secrets.yaml etc/origin/master/openshift-router.crt etc/origin/master/openshift-router.key etc/origin/master/registry.crt etc/origin/master/registry.key etc/origin/master/master-config.yaml etc/origin/generated-configs/master-master-1.example.com/master.server.crt ...[OUTPUT OMITTED]... etc/origin/cloudprovider/openstack.conf etc/origin/node/system:node:master-0.example.com.crt etc/origin/node/system:node:master-0.example.com.key etc/origin/node/ca.crt etc/origin/node/system:node:master-0.example.com.kubeconfig etc/origin/node/server.crt etc/origin/node/server.key etc/origin/node/node-dnsmasq.conf etc/origin/node/resolv.conf etc/origin/node/node-config.yaml etc/origin/node/flannel.etcd-client.key etc/origin/node/flannel.etcd-client.csr etc/origin/node/flannel.etcd-client.crt etc/origin/node/flannel.etcd-ca.crt etc/pki/ca-trust/source/anchors/openshift-ca.crt etc/pki/ca-trust/source/anchors/registry-ca.crt etc/dnsmasq.conf etc/dnsmasq.d/origin-dns.conf etc/dnsmasq.d/origin-upstream-dns.conf etc/dnsmasq.d/node-dnsmasq.conf packages.txt
필요한 경우 파일을 압축하여 공간을 절약할 수 있습니다.
$ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) $ sudo tar -zcvf /backup/$(hostname)-$(date +%Y%m%d).tar.gz $MYBACKUPDIR $ sudo rm -Rf ${MYBACKUPDIR}
이러한 파일을 처음부터 새로 생성할 수 있도록 openshift-ansible-contrib
리포지토리에는 이전 단계를 수행하는 backup_master_node.sh
스크립트가 포함되어 있습니다. 이 스크립트는 스크립트를 실행하는 호스트에 디렉터리를 생성하고 앞서 언급된 모든 파일을 복사합니다.
Openshift-ansible-contrib
스크립트는 Red Hat에서 지원되지 않지만, 코드가 정의된 대로 작동하고 안전한지 참조 아키텍처 팀에서 테스트합니다.
다음을 사용하여 모든 마스터 호스트에서 이 스크립트를 실행할 수 있습니다.
$ mkdir ~/git $ cd ~/git $ git clone https://github.com/openshift/openshift-ansible-contrib.git $ cd openshift-ansible-contrib/reference-architecture/day2ops/scripts $ ./backup_master_node.sh -h