Contrail Insights OpenStack을 위한 설치 및 구성
OpenStack 시작하기
Contrail Insights OpenStack 클러스터의 호스트 및 가상 머신에 대한 리소스 제어 및 가시성을 제공합니다. 이 주제에서는 OpenStack 클러스터에 Contrail Insights 설치하는 방법을 설명합니다. Contrail Insights Agent는 호스트 상에서 실행되어 호스트 자체의 리소스 소비와 해당 호스트에서 실행되는 가상 머신을 모니터링합니다. 본 Contrail Insights 본 Contrail Insights 및 Contrail Insights Agent Requirements를 참조하십시오. 그림 1은 OpenStack을 Contrail Insights 아키텍처를 보여줍니다.

Contrail Insights Agent는 컴퓨팅 노드의 리소스 사용량을 모니터링합니다.
Contrail Insights 플랫폼은 시스템을 구성하는 REST API를 제공합니다.
Contrail Insights DataManager는 여러 에이전트의 데이터를 저장합니다.
Contrail Insights 대시보드는 웹 기반 사용자 인터페이스를 제공합니다.
어댑터는 플랫폼별 리소스를 발견하고 Contrail Insights 플랫폼을 구성합니다.
어댑터는 OpenStack 및 Kubernetes용입니다.
요구 사항
다음은 OpenStack을 위한 Contrail Insights 요구 사항입니다.
지원되는 OpenStack 버전: Icehouse, Juno, Kilo, Liberty, Mitaka, Newton, Ocata.
소프트웨어 Contrail Insights 요구 사항에 대한 일반 요구 사항을 참조하십시오.
관리자는 OpenStack을 관리합니다.
OpenStack 서비스에 대한 API 액세스: Cinder, Glance, Heat, Keystone, Neutron, Nova, Swift. Contrail Insights 서비스에서 정보를 읽습니다. 관리자 계정은 읽기 전용 API 호출에 대한 충분한 권한을 제공해야 합니다. 또한 Contrail Insights 플랫폼은 해당 서비스가 수신되는 호스트 및 포트에 대한 연결을 열 수 있어야 합니다. Contrail Insights , 또는 서비스 엔드포인트를 사용하도록
admin
internal
public
구성할 수 있습니다. 섹션의OS_ENDPOINT_TYPE
OpenStack 환경 변수를 참조하십시오. Contrail Insights 10.-
참고:
업그레이드 공지: 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:
3단계 워크플로우
설치는 다음 단계로 구성됩니다.
OpenStack을 구성합니다.
Ansible 인벤토리 생성
설치 Contrail Insights.
OpenStack 구성
운영자에 대한 관리자 Contrail Insights OpenStack Horizon 대시보드에서 다음 단계를 수행합니다.
사용자 계정을 만들고 Appformix에 이름을 지정합니다.
사용자 계정에 대한 새 프로젝트를 선택합니다.
admin 역할을 선택합니다.
Ansible 인벤토리 생성
Ansible은 소프트웨어를 컴퓨팅 노드 및 플랫폼 호스트에 구축하는 데 사용됩니다. Ansible 인벤토리 파일은 클러스터의 호스트 그룹을 설명합니다. 릴리스 파일과 별도로 인벤토리를 정의하여 인벤토리를 업그레이드를 위해 사용할 수 있습니다.
Contrail Insights 2개의 그룹 컴퓨팅과 appformix_controller. 각 그룹은 해당 그룹의 호스트를 나열합니다. 에이전트만이 컴퓨팅 호스트에 설치됩니다. 에이전트와 Contrail Insights 플랫폼 서비스는 호스트에 appformix_controller 설치됩니다.
선택적으로 openstack_controller 그룹을 정의할 수 있습니다. Agent는 OpenStack 컨트롤러 서비스를 실행하는 호스트를 모니터링하기 위해 이 그룹의 호스트에 설치됩니다. (v2.3.0의 신규)
파일과 파일이 포함된 디렉토리(또는 선택한 inventory
hosts
이름)를 group_vars/all
생성합니다. 예를 들어:
inventory/ hosts # inventory file group_vars/ all # configuration variables
이 파일에는 각 그룹의 호스트 inventory/hosts
목록이 포함되어 있습니다. 예를 들어:
[appformix_controller] appformix01 [compute] compute01 compute02 compute03 [openstack_controller] openstack_infra01 openstack_infra02
Ansible 구성 변수
이 Contrail Insights 소프트웨어에는 네트워크 설정 구성을 수행하는 많은 Ansible Contrail Insights 있습니다. 향후 업그레이드를 위해 설정 및 인벤토리를 사용할 수 있을 때 파일의 변수 값을 inventory/group_vars/all
정의합니다.
파일에서 OpenStack에 대한 네트워크 구성을 위해 Contrail Insights inventory/group_vars/all
변수를 구성합니다.
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
사전 사전 준비를 위한 HTTP Proxy 구성
Ansible 플레이북은 인터넷에서 파일을 페치하여 플랫폼 호스트에 사전 사전 전제어를 설치합니다. Platform Host가 인터넷 액세스에 대한 HTTP 프록시를 요구하는 경우 다음과 같은 변수를 inventory/group_vars/all
구성합니다.
http_proxy_url: 'http://proxy.example.com:1234' prerequisites_env: http_proxy: '{{ http_proxy_url }}' https_proxy: '{{ http_proxy_url }}'
은 사전 전제어를 설치하기 위해 명령을 호출할 때 사용되는 환경 변수를 정의하는 prerequisites_env
스크리전입니다. 위 예제에서 단일 프록시를 HTTP 및 HTTPS URL에 액세스하는 데 단일 프록시를 사용할 수 있기 때문에 위 예제에서 동일한 프록시 URL(http://proxy.example.com:1234)이 두 가지 환경 변수 모두에 http_proxy
https_proxy
사용됩니다. 편리한 경우, 프록시 URL은 변수에서 한 번 http_proxy_url
정의됩니다. 네트워크의 프록시 요구 사항에 필요한 경우 prerequisites_env
조정
설치 Contrail Insights
설치하려면 Contrail Insights:
Ansible을 기본 플랫폼 노드에 Contrail Insights 설치합니다. Ansible은 플랫폼에 docker와 docker-py를 설치합니다.
#Ubuntu apt-get install python-pip python-dev #Installs Pip pip install ansible==2.3.0 #Installs Ansible 2.3 sudo apt-get install build-essential libssl-dev libffi-dev #Dependencies pip install markupsafe httplib2 requests #Dependencies #RHEL/CentOS yum install epel-release #Enable EPEL repository In case the above command does not work, manually download and install the epel-release package with one of the below commands, depending on your system’s version. yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm yum groupinstall 'Development Tools' #Install development tools yum install openssl-devel libffi libffi-devel #Dependencies yum install python-pip python-devel #Install Pip pip install ansible==2.3.0 #Install Ansible 2.3 pip install markupsafe httplib2 requests #Dependencies
참고:RHEL의 경우 포트 9000에 액세스하려면 다음과 같은 IPtables 규칙이 필요합니다.
iptables -t filter -A IN_public_allow -p tcp --dport 9000 -j ACCEPT
다음 명령을 사용하여 컴퓨팅
libvirt
노드에 설치합니다.yum -y install libvirt
커널 기반 가상 머신(KVM)과 컴퓨팅 노드에서 실행되는 가상 머신에서 데이터를 수집하기 위한 관련 패키지를 설치합니다.
Contrail Insights Agent가 실행되는 컴퓨팅 노드에서 python이 설치된지
virtualenv
확인합니다.#Ubuntu apt-get install -y python-pip pip install virtualenv #RHEL/CentOS yum install -y python-pip pip install virtualenv
Ansible을 통해 Contrail Insights 플랫폼 노드에서 암호 없는 로그인을 통해 노드에 에이전트를 설치할 수 있습니다. Ansible 플레이북이 실행되는 노드에서 SSH 공용 키를 만든 다음 키를 노드에
appformix_controller
복사합니다.ssh-keygen -t rsa #Creates Keys ssh-copy-id -i ~/.ssh/id_rsa.pub <target_host> #Copies key from the node to other hosts
파일을
Sample_Inventory
템플릿으로 사용하여 호스트 파일을 만듭니다.# Example naming schemes are as below: # hostname ansible_ssh_user='username' ansible_sudo_pass='password' # List all Compute Nodes [compute] 172.16.70.5 172.16.70.17 # appformix_controller host # # Host variables can be defined to control Contrail Insights configuration parameters # for particular host. For example, to specify the directory in which MongoDB # data is stored on hostname1 (the default is /opt/appformix/mongo/data): # # hostname1 appformix_mongo_data_dir=/var/lib/appformix/mongo # # For variables with same value for all appformix_controller hosts, set group # variables below. # [appformix_controller] 172.16.70.119 [openstack_controller] 172.16.70.120
인벤토리 파일에 나열된 모든 호스트가 Contrail Insights 있는지 확인
export ANSIBLE_HOST_KEY_CHECKING=False # Eliminates interactive experience prompting for Known_Hosts ansible -i inventory -m ping all # Pings all the hosts in the inventory file
배포의 최상위 수준에서 으로 명명된 디렉토리를
group_vars
생성합니다.mkdir group_vars
소프트웨어 다운로드에서 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 라이선스 파일을 복사합니다.
group_vars
디렉토리에서 으로 명명된 파일을all
생성합니다. 다음을 추가하십시오.openstack_platform_enabled: true appformix_manager_version: <version> 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
Contrail Insights OpenStack 클러스터와 통신하도록 구성해야 합니다. Ansible 플레이북은 OpenStack 환경 변수를 사용하여 openStack 환경의 Contrail Insights 구성합니다.
OS_AUTH_URL Keystone URL (e.g., https://host:5000/) OS_ENDPOINT_TYPE endpoint type to communicate with service (default: publicURL) OS_USERNAME admin account to be used by Contrail Insights OS_PASSWORD password for admin account OS_PROJECT_NAME admin project created for Contrail Insights account OS_PROJECT_DOMAIN_NAME domain for admin project OS_USER_DOMAIN_NAME domain for admin user OS_DOMAIN_NAME (optional) use domain-scoped token for admin account
10개 환경 변수를 포함하는 파일을 소스로 하여
openrc
Ansible-playbook을 실행할 쉘 환경에 변수가 포함되도록 합니다. 그런 다음 플레이북을 Contrail Insights 다운로드하여appformix_openstack.yml
설치합니다. 이전 작성한inventory
디렉토리로의 경로를 지정합니다.웹 브라우저에서 Contrail Insights Dashboard를 오픈합니다. 예를 들어:
http://<contrail-insights-platform-node-ip>:9000
OpenStack 환경 변수를 사용하여 Ansible에 의해 최초 구성이 수행되어 10 에서Skip Installation을 선택합니다. OpenStack Contrail Insights 사용하여 대시보드에 로그인합니다.
추가 Ansible 구성
추가 Ansible 구성 설정:
Keystone SSL 지원 클러스터에 설치하려면 파일에 다음과 같은 변수를
group_vars/all
포함합니다.appformix_keystone_ssl_ca: '/path/to/keystone_ca.crt'
Contrail Insights Ansible은 이 CA(certificate authority) 모든 Contrail Insights 플랫폼 노드에 이 Contrail Insights 이 CA(certificate authority) 파일을 사용하여 Keystone에 알려 줄 것입니다.
참고:데프문(Deprecation Notice) : 이전에는 2.19.5에서 시작된 매개 변수가 Contrail Insights 이제 더 이상
appformix_mongo_cache_size_gb
Contrail Insights 3.2.0에서 지원되지 않습니다. Mongo는 Contrail Insights 3.2.0 버전에서 시작하여 Contrail Insights 플랫폼 노드에서 최대 40%의 가용 메모리를 사용하도록 구성됩니다.클러스터에서 네트워크 디바이스 모니터링을 활성화하려면 파일에 다음을
group_vars/all
포함하십시오.# For enabling pre-requisites for packdge installation. appformix_install_snmp_dependencies: true appformix_install_jti_dependencies: true # For running the appformix-network-device-adapter network_device_discovery_enabled: true appformix_plugins: '{{ appformix_network_device_factory_plugins }}' # After 3.1, SNMP Traps can be enabled also so appformix_plugins can be specified as below: # appformix_plugins: '{{ appformix_network_device_factory_plugins }} + {{ appformix_snmp_trap_factory_plugins }}'
클러스터에 Contrail Insights 인증된 플러그인을 설치하려면 파일에 다음과 같은 변수를
group_vars/all
포함합니다.appformix_plugins: <list of certified plugins to be installed> appformix_openstack_log_plugins: <list of OpenStack log plugins to be installed>
예를 들어:
appformix_plugins: - { plugin_info: 'certified_plugins/cassandra_node_usage.json' } - { plugin_info: 'certified_plugins/contrail_vrouter.json' } - { plugin_info: 'certified_plugins/zookeeper_usage.json' } - { plugin_info: 'certified_plugins/heavy_hitters.json' } appformix_openstack_log_plugins: - { plugin_info: 'certified_plugins/cinder_api_logparser.json', log_file_path: '/var/log/cinder/cinder-api.log' } - { plugin_info: 'certified_plugins/glance_logparser.json', log_file_path: '/var/log/glance/glance-api.log' } - { plugin_info: 'certified_plugins/keystone_logparser.json', log_file_path: '/var/log/apache2/keystone_access.log,/var/log/httpd/keystone_wsgi_admin_access.log,/var/log/keystone/keystone.log' }
설치할 수 Contrail Insights 인증 받은 플러그인의 목록은 파일에서 시작하는 항목을
plugin_info
찾아야roles/appformix_defaults/defaults/main.yml
합니다.OpenStack 로그 파서 플러그인은 각 OpenStack 서비스의 API 로그 파일을 파서 분석하여 API 통화 및 응답 상태 코드에 대한 메트릭을 수집합니다. 위의 플러그인을 설치하려면 위의 변수에
appformix_openstack_log_plugins
group_vars/all
플러그인을 추가하십시오. 이 목록의 각 플러그인 엔트리에는 지정해야 하는 매개log_file_path
변수가 필요합니다. 이 매개 변수는 OpenStack Controller 노드의 서비스 API 로그 파일에 대한 전체 경로로 설정해야 합니다. 여러 콤마 분리된 경로를 지정할 수 있습니다.에 지정될 올바른 로그 파일을 식별하려면 클라이언트 IP 주소, REST 호출 유형 및 응답 상태 코드를 포함하는 다음과 같은 항목을
log_file_path
찾아야 합니다.2019-04-02 06:50:13.103 3465 INFO nova.osapi_compute.wsgi.server [req-d07e953a-6921-4224-a056-afb6ff69adde 953ea56a96b944b3b170a299af9e87bd 10c9e8809feb4bd1b55955d9c2ed5aba - - -] 172.18.0.6 "GET /v2/10c9e8809feb4bd1b55955d9c2ed5aba/os-hypervisors/detail HTTP/1.1" status: 200 len: 1427 time: 0.0208740 2019-04-02 06:50:13.183 3465 INFO nova.osapi_compute.wsgi.server [req-34b2f686-9eb5-4112-b3fc-e0b37798a302 953ea56a96b944b3b170a299af9e87bd 10c9e8809feb4bd1b55955d9c2ed5aba - - -] 172.18.0.6 "GET /v2/10c9e8809feb4bd1b55955d9c2ed5aba/servers/detail?all_tenants=1&status=SHELVED_OFFLOADED HTTP/1.1" status: 200 len: 211 time: 0.0754580
이들 파일의 기본 위치는 의 변수에
appformix_openstack_log_factory_plugins
나열되어roles/appformix_defaults/defaults/main.yml
있습니다.버전 Contrail Insights 2.19.8에서 OpenStack 서비스에 연결하기 위해 타임아웃 값을 구성할 수 있습니다. 이 타임아웃의 기본값은 초로, 초 또는 초 사이의 값(두 가지 포함)으로 변경할
10
5
수20
있습니다. 값을 변경하기 위해 다음 변수를group_vars/all
추가하십시오.appformix_openstack_session_timeout: <number of seconds>
Contrail Insights 플랫폼이 설치된 후 타임아웃 값을 수정하려면 위에서 설명한 대로 변수를 파일에 추가하고 설치 플레이북을 다시 Contrail Insights
group_vars/all
있습니다. 플레이북이 완료된 후appformix-openstack-adapter
Docker 컨테이너를 다시 시작합니다.docker restart appformix-openstack-adapter
업그레이드 공지
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.yml
버전 3.Contrail Insights 경우 변수는 사용 appformix_openstack_factory_plugins
안 됩니다. 모든 OpenStack 로그 파서 플러그인은 변수에 지정해야 appformix_openstack_log_plugins
합니다. 이전 버전에서 버전 3.0으로 업그레이드할 때 에 정의되어 있는 모든 OpenStack 로그 파서 플러그인을 으로 appformix_openstack_factory_plugins
appformix_plugins
appformix_openstack_log_plugins
이동하십시오. 또한, Contrail Insights 버전 3.0에서 위의 3단계에 설명된 대로 이 목록의 모든 엔트리를 값으로 log_file_path
지정해야 합니다.
버전 2.18.x에서 버전 3.0으로 업그레이드할 때 파일에서 다음과 같은 변경을 group_vars/all
합니다.
버전 2.18.x:
appformix_openstack_factory_plugins: - { plugin_info: 'certified_plugins/cinder_api_logparser.json', log_file_path: '/var/log/cinder/cinder-api.log'} - { plugin_info: 'certified_plugins/glance_logparser.json',log_file_path: '/var/log/glance/api.log'} - { plugin_info: 'certified_plugins/heavy_hitters.json' } - { plugin_info: 'certified_plugins/keystone_logparser.json', log_file_path: '/var/log/keystone/keystone.log'} - { plugin_info: 'certified_plugins/neutron_logparser.json', log_file_path: '/var/log/neutron/server.log'} - { plugin_info: 'certified_plugins/nova_logparser.json', log_file_path: '/var/log/nova/nova-api.log'} appformix_plugins: {{ appformix_openstack_factory_plugins }} + ...
버전 3.0.x:
appformix_plugins: - { plugin_info: 'certified_plugins/heavy_hitters.json' } appformix_openstack_log_plugins: - { plugin_info: 'certified_plugins/cinder_api_logparser.json', log_file_path: '/var/log/cinder/cinder-api.log'} - { plugin_info: 'certified_plugins/glance_logparser.json',log_file_path: '/var/log/glance/api.log'} - { plugin_info: 'certified_plugins/keystone_logparser.json', log_file_path: '/var/log/keystone/keystone.log'} - { plugin_info: 'certified_plugins/neutron_logparser.json', log_file_path: '/var/log/neutron/server.log'} - { plugin_info: 'certified_plugins/nova_logparser.json', log_file_path: '/var/log/nova/nova-api.log'}
OpenStack 컨트롤러 노드 ()에서 Contrail Insights 플랫폼 노드로 파일을 소스하여 컨트롤러 서비스에 대한 관리자 권한에 액세스하기 위해 어댑터를 openrc
/etc/contrail/openstackrc
인증합니다. 파일에는 다음과 같이 표시됩니다.
export OS_USERNAME=admin export OS_PASSWORD=<admin-password> export OS_AUTH_URL=http://172.16.80.2:5000/v2.0/ export OS_NO_CACHE=1 export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=admin export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
생성된 인벤토리 파일로 Ansible을 실행합니다.
ansible-playbook -i inventory appformix_openstack.yml
노드를 다른 노드에서 Contrail Insights
다음에서 노드를 Contrail Insights:
인벤토리 파일을 편집하고 제거하려는 각 노드에
appformix_state=absent
Contrail Insights.# Example naming schemes are as below: # hostname ansible_ssh_user='username' ansible_sudo_pass='password' # List all Compute Nodes [compute] 172.16.70.5 appformix_state=absent 172.16.70.17
편집된 인벤토리 파일로 Ansible을 실행합니다. 그러면 노드와 모든 리소스가 노드에서 Contrail Insights.
ansible-playbook -i inventory appformix_openstack.yml
OpenStack Contrail Insights 업그레이드
Contrail Insights 플레이북을 실행하여 손쉽게 appformix_openstack.yml
업그레이드할 수 있습니다. 설치와 동일한 절차를 따르고
OpenStack 클러스터에서 Contrail Insights 제거
모든 Contrail Insights 제거하고 삭제하기 위해 다음 명령을 실행합니다.
ansible-playbook -i <inventory_file> clean_appformix_openstack.yml