Contrail Insights OpenStack in 고가용성(HA)
고가용성(HA) 설계 개요
Contrail Insights 플랫폼은 고가용성을 위해 여러 호스트에 구축할 고가용성(HA). 플랫폼 서비스는 가상 IP 주소에서 수신하는 API 프록시를 사용하여 계속 통신합니다. 한 호스트만이 한 때 가상 IP를 가지기 때문에 하나의 API 프록시만 한 때 "활성" API 프록시가 됩니다.
API 프록시는 HAProxy에 의해 구현됩니다. HAProxy는 서비스에 따라 활성-대기 또는 로드 능동 활성 모드에서 서비스를 사용하도록 구성됩니다.
대부분의 경우, 한 호스트에 지정된 시간 내 가상 IP가 할당됩니다. 이 호스트는 "활성" HAproxy로 간주됩니다. 선선에 VRRP 프로토콜을 사용하는 keepalived를 통해 가상 IP 주소가 호스트에 할당됩니다.
서비스는 서로 다른 운영 모드로 복제됩니다. HAProxy는 "active-passive" 모드에서 단일 서비스 인스턴스로 모든 요청을 전송합니다. 서비스에 장애가 발생하면 HAProxy는 다른 호스트로부터 새로운 "활성"을 선택하고 새로운 "활성" 서비스에 요청을 전송합니다. "active-active" 모드에서 HAProxy 로드는 서비스가 운영되는 호스트 전반에서 요청의 균형을 맞출 수 있습니다.
Contrail Insights 플랫폼은 고가용성을 위해 3 노드, 5 노드 또는 7 노드 구성에 구축할 수 있습니다.
요구 사항
플랫폼이 설치된 각 호스트의 경우 Contrail Insights 소프트웨어 요구 사항에 대한 Contrail Insights 일반 요구 사항을 참조하십시오. 에이전트 지원 Contrail Insights 목록은 Contrail Insights Agent Requirements를 참조하세요.
-
참고:
업그레이드 공지: Contrail Insights 3.2.6에서 시작하여 라이선스 파일에 대한 요구 사항이 제거됩니다. 3.2.6보다 일찍 버전을 설치하는 경우 설치 전에 라이선스가 필요합니다.
라이선스 키를 에서 얻을 수 mailto:APPFORMIX-KEY-REQUEST@juniper.net. 요청 시 다음과 같은 정보를 제공합니다.
Group name: Target customers or use: Cluster type: OpenStack Number of hosts: Number of instances:
연결
하나의 가상 IP 주소가 모든 플랫폼 호스트 간 공유됩니다. 이 IP 주소는 설치하기 전에 호스트에서 사용할 수 없습니다. 설치 후 모든 플랫폼 호스트에서 도달할 수 있습니다.
대시보드 클라이언트(브라우저 내)는 가상 IP에 IP 연결이 있어야 합니다.
설치를 위한 각 플랫폼 호스트와 통신을 위해 이들 호스트에서 실행되는 서비스를 위한 IP 주소입니다.
keepalived_vrrp_interface IP 주소를 할당하는 데 사용되는 각 플랫폼 호스트에 대해 설명됩니다. 이 인터페이스의 구성 방법에 대한 자세한 내용은 이 섹션에서 sample_inventory 설명하고 있습니다.
고가용성을 위해 Contrail Insights 설치
고가용성을 위해 Contrail Insights 호스트에 설치하려면 다음을 제공합니다.
소프트웨어 다운로드에서 Contrail Insights 플랫폼 노드로 다운로드할 수 있는 Contrail Insights 패키지를 다운로드하십시오. 아래 파일 다운로드:
contrail-insights-<version>.tar.gz contrail-insights-dependencies-images-<version>.tar.gz contrail-insights-openstack-images-<version>.tar.gz contrail-insights-platform-images-<version>.tar.gz contrail-insights-network_device-images-<version>.tar.gz
3.2.6보다 일찍 버전을 설치하는 경우 Contrail Insights 플랫폼 노드에 Contrail Insights 라이선스 파일을 복사합니다.
설치자 노드에 Ansible을 설치합니다. Ansible은 에 docker와 docker Python 패키지를
appformix_controller
설치합니다.# sudo apt-get install python-pip python-dev build-essential libssl-dev libffi-dev # sudo pip install ansible==2.7.6 markupsafe httplib2
Ansible 2.3용:
# sudo pip install ansible==2.3 markupsafe httplib2 cryptography==1.5
Ansible이 설치 노드와 노드 간에 실행될 수 있도록 Python과 모든 플랫폼 호스트에
python-pip
appformix_controller
설치하십시오.# sudo apt-get install -y python python-pip
에이전트가 실행되는 호스트에
python pip
Contrail Insights 설치합니다.# apt-get install -y python-pip
Ansible에 의해 모든 플랫폼 호스트에 암호 없이 로그인하려면, Ansible 플레이북이 실행되는 노드에서 SSH 공용 키를 만든 다음 키를 모든 플랫폼 호스트에 복사합니다.
# ssh-keygen -t rsa #Creates Keys # ssh-copy-id -i ~/.ssh/id_rsa.pub <platform_host_1>.........#Copies key from the node to all platform hosts # ssh-copy-id -i ~/.ssh/id_rsa.pub <platform_host_2>.........#Copies key from the node to all platform hosts # ssh-copy-id -i ~/.ssh/id_rsa.pub <platform_host_3>.........#Copies key from the node to all platform hosts
sample_inventory 파일을 템플릿으로 사용하여 호스트 파일을 생성합니다. 모든 플랫폼 호스트 및 컴퓨팅 호스트 세부 정보를 추가합니다.
# List all compute hosts which needs to be monitored by Contrail Insights [compute] 203.0.113.5 203.0.113.17 # Contrail Insights controller hosts [appformix_controller] 203.0.113.119 keepalived_vrrp_interface=eth0 203.0.113.120 keepalived_vrrp_interface=eth0 203.0.113.121 keepalived_vrrp_interface=eth0
참고:참고: 5-node 또는 7-node 구축의 경우 에 모든 노드를
appformix_controller
나열합니다.최상위 디렉토리에서 이름을 지정한 디렉토리를 만든 다음 이 디렉토리 내부에 명명된 파일을
group_vars
all
생성합니다.# mkdir group_vars # touch group_vars/all
새로 생성된 파일에 다음 항목을
all
추가합니다.appformix_vip: <ip-address> appformix_docker_images: - /path/to/contrail-insights-platform-images-<version>.tar.gz - /path/to/contrail-insights-dependencies-images-<version>.tar.gz - /path/to/contrail-insights-openstack-images-<version>.tar.gz
3.2. Contrail Insights 6보다 일찍 버전을 설치하는 경우
group_vars/all
appformix_license: path/to/<contrail-insights-license-file>.sig
OpenStack 컨트롤러 노드()에서 파일을 복사하여 소스에 복사하여 컨트롤러 서비스에 대한 관리 권한에 액세스하기 위한
openrc
/etc/contrail/openrc
appformix_controller
어댑터를 인증합니다.root@installer_node:~# cat /etc/contrail/openrc export OS_USERNAME=<admin user> export OS_PASSWORD=<password> export OS_TENANT_NAME=admin export OS_AUTH_URL=http://<openstack-auth-URL>/v2.0/ export OS_NO_CACHE=1 root@installer_node:~# source /etc/contrail/openrc
참고:3.Contrail Insights 버전에서는 OpenStack Octavia Load Balancer 서비스 발견에 대한 지원이 추가됩니다. Contrail Insights 상태 정보(예: 로드 런서 상태 정보 및 특징 정보)만
provisioning_status
operating_status
수집합니다. 이 서비스 검색을 위해 옥타비아 서비스의 엔드포인트를 파일 내 변수로appformix_octavia_endpoint_url
group_vars/all
제공합니다. 예를 들어:appformix_octavia_endpoint_url: http://10.1.1.1:9876
옥타비아 로드 런서(Load Balancer) 서비스에 대한 비용도 구성할 수 있습니다. 로드 런서 비용 구성을 참조합니다.
생성된 인벤토리 파일로 Ansible을 실행합니다.
ansible-playbook -i inventory appformix_openstack_ha.yml
플레이북을 루트 사용자로 실행하면 이 단계를 건너 뜁니다. 루트가 아닌 사용자(예: "ubuntu"), 사용자 "ubuntu"는 사용자 그룹에
docker
액세스해야 합니다. 다음 명령어는 사용자를 docker 그룹에 추가합니다.sudo usermod -aG docker ubuntu