vSphere 환경에 Rancher를 설치하고자 할 경우에 개념적인 구조는 그림과 같습니다.
1. 로드발란서 고려사항
RKE 노드에 있는 랜처 워크로드로 트래픽을 유도하려면 로드 밸런서가 필요합니다.
- Fault Tolerance 및 고가용성을 활용 : 고가용성 기능(F5, NSX-T, Keep Alive 등)을 상속받은 외부(하드웨어 또는 소프트웨어) 로드 밸런서를 사용
- 로드 밸런서 구성을 백업 : 재해 복구 작업 시 로드 밸런서 구성을 사용할 수 있으면 복구 프로세스가 빨라집니다.
- 상태 검사(health check)를 구성 : 상태 점검에 실패한 경우 노드를 사용할 수 없는 것으로 자동으로 표시하도록 로드 밸런서를 구성합니다. 예를 들어 NGINX는 다음을 통해 이를 지원할 수 있습니다.
max_fails=3 fail_fails=5s
- 외부 로드 밸런서를 활용 : 관리 클러스터 내에 소프트웨어 로드 밸런서를 구현하지 않도록 합니다.
- Rancher에 안전하게 액세스 : 랜처 액세스만 표시하도록 적절한 방화벽/ACL 규칙을 구성합니다.
2. VM 고려사항
- Rancher 설명서에 따라 VM의 크기 조정 : https://rancher.com/docs/rancher/v2.6/en/installation/requirements/
- VM 템플릿을 활용하여 환경을 구성 : 환경 전반에 구축된 가상 머신의 일관성을 유지하려면 VM 템플릿 형태의 “골든 이미지”를 사용하는 것을 고려하십시오. 이를 위해 패커를 사용할 수 있으며 사용자 지정 옵션을 추가할 수 있습니다.
- 가능한 경우 DRS 반선호도 규칙을 활용하여 ESXi 호스트 간에 랜처 클러스터 노드를 분리 : 이렇게 하면 노드 VM이 여러 ESXi 호스트에 분산되어 호스트 수준에서 단일 장애 지점을 방지할 수 있습니다.
- 각각의 VM이 사용하는 데이터스토어도 분리해서 단일장애 지점을 제거 : 설명서에는 DRS를 사용하라고 되어있습니다. 그러나 DRS는 데이터스토어 분리 기능은 제공하지 않습니다.
- Kubernetes에 맞게 VM을 구성 : 노드 구축 시 K8 및 etcd 모범 사례를 따르는 것이 중요합니다. 여기에는 스왑 사용 안 함, 클러스터 내의 모든 시스템 간에 고유한 호스트 이름, MAC 주소 및 product_uid를 사용하여 전체 네트워크 연결이 있는지 이중 확인 등이 포함됩니다.
3. 네트워크 고려 사항
- ETCD 노드 간의 짧은 지연 시간, 높은 대역폭 연결을 활용 : 가능한 경우 단일 데이터 센터 내에 etcd 구성원을 배치하여 지연 시간 오버헤드를 방지하고 네트워크 파티셔닝 가능성을 줄입니다. 대부분의 설정에서는 1Gb 연결로 충분합니다. 대규모 클러스터의 경우 10Gb 연결을 통해 백업에서 복원하는 데 걸리는 시간을 줄일 수 있습니다.
- VM의 일관된 IP 주소 지정 : 사용되는 각 노드에는 정적 IP가 구성되어 있어야 합니다. DHCP의 경우 각 노드에 동일한 IP가 할당되도록 하려면 각 노드에 DHCP 예약이 있어야 합니다.
4. 스토리지에 대한 고려 사항
- etcd 노드에 SSD 드라이브를 활용 : etcd는 쓰기 지연 시간에 매우 민감합니다. 따라서 가능한 경우 SSD 디스크를 활용하십시오.
5. 백업 및 재해 복구 기능
- 정기적인 관리 클러스터 백업을 수행 : Rancher는 데이터가 상주하는 Kubernetes 클러스터의 etcd 데이터스토어에 데이터를 저장합니다. 다른 Kubernetes 클러스터와 마찬가지로 이 클러스터에 대해 자주 테스트된 백업을 수행합니다.
- 랜처 클러스터 노드 VM을 백업 : Rancher 관리 노드 VM을 표준 VM 백업 정책에 통합합니다.
아래 출처의 내용을 기준으로 좀 더 꾸며보았습니다.
출처 : https://rancher.com/docs/rancher/v2.6/en/best-practices/rancher-server/rancher-in-vsphere/