[ English | русский | Deutsch | español | Indonesia | English (United Kingdom) ]

Telemetry dengan contoh Gnocchi, Ceph dan Redis

Instalasi openstack-ansible default mengkonfigurasi gnocchi untuk menggunakan file sebagai backend penyimpanan. Ketika Anda sudah memiliki ceph pra-instal, Anda dapat menggunakan ini sebagai backend untuk gnocchi. Dokumentasi ini akan memandu Anda cara mengatur gnocchi untuk menggunakan ceph sebagai backend penyimpanan.

Ceph sebagai penyimpanan metrik

gnocchi_storage_driver: ceph

Anda harus menambahkan beberapa paket pip ke pengaturan gnocchi Anda:

gnocchi_pip_packages:
- cryptography
- gnocchiclient
# this is what we want:
#  - "gnocchi[mysql,ceph,ceph_alternative_lib,redis,keystone]"
# but as there is no librados >=12.2 pip package we have to first install ceph without alternative support
# after adding the ceph repo to gnocchi container, python-rados>=12.2.0 is installed and linked automatically
# and gnocchi will automatically take up the features present in the used rados lib.
- "gnocchi[mysql,ceph,redis,keystone]"
- keystonemiddleware
- python-memcached

Tetapi ketika setup Anda tumbuh, gnocchi mungkin memperlambat atau memblokir instalasi ceph Anda. Anda mungkin mengalami permintaan lambat dan terjebak PG di Ceph Anda. Karena ini mungkin memiliki banyak penyebab, lihat presentasi yang ditautkan di bagian Performance Tests for Gnocchi . Mereka juga menyertakan berbagai parameter yang mungkin Anda tune.

Redis sebagai ukuran penyimpanan

Salah satu solusi untuk masalah kinerja yang mungkin terjadi adalah dengan menggunakan penyimpanan ukuran masuk untuk instalasi gnocchi Anda. The supported storage systems adalah:

  • File (default)

  • Ceph (preferred)

  • OpenStack Swift

  • Amazon S3

  • Redis

When your Swift API endpoint uses Ceph as a backend, the only one left for this setup is Redis.

Jadi, pertama-tama, atur redis server/cluster, mis. dengan ansible role. ini. Selanjutnya, Anda harus mengkonfigurasi Gnocchi dengan OpenStack-Ansible untuk menggunakan Redis Cluster sebagai penyimpanan yang masuk:

gnocchi_conf_overrides:
  incoming:
    driver: redis
    redis_url: redis://{{ hostvars[groups['redis-master'][0]]['ansible_default_ipv4']['address'] }}:{{ hostvars[groups['redis-master'][0]]['redis_sentinel_port'] }}?sentinel=master01{% for host in groups['redis-slave'] %}&sentinel_fallback={{ hostvars[host]['ansible_default_ipv4']['address'] }}:{{ hostvars[host]['redis_sentinel_port'] }}{% endfor %}&db=0

Anda juga harus menginstal paket pip/distro tambahan untuk menggunakan redis cluster:

gnocchi_distro_packages:
- apache2
- apache2-utils
- libapache2-mod-wsgi
- git
- build-essential
- python3-dev
- librados-dev
- libpq-dev
- python3-rados
# additional package for python redis client
- python3-redis
- libsystemd-dev
gnocchi_pip_packages:
- cryptography
- gnocchiclient
# this is what we want:
#  - "gnocchi[mysql,ceph,ceph_alternative_lib,redis,keystone]"
# but as there is no librados >=12.2 pip package we have to first install ceph without alternative support
# after adding the ceph repo to gnocchi container, python-rados>=12.2.0 is installed and linked automatically
# and gnocchi will automatically take up the features present in the used rados lib.
- "gnocchi[mysql,ceph,redis,keystone]"
- keystonemiddleware
- python-memcached
- redis
- systemd-python

Catatan

Kata hati-hati: nama implementasi lib alternatif Ceph (ceph_alternative_lib) bervariasi antara versi Gnocchi.

Zookeeper untuk koordinasi

Saat Anda menggunakan Gnocchi di beberapa server untuk mendistribusikan pekerjaan, tambahkan Zookeeper sebagai backend koordinasi. Untuk mengatur Zookeeper, Anda dapat menggunakan this ansible role.

Buat container untuk Zookeeper:

## conf.d
zookeeper_hosts:
{% for server in groups['control_nodes'] %}
{{ server }}:
  ip: {{ hostvars[server]['ansible_facts']['default_ipv4']['address'] }}
{% endfor%}
## env.d
component_skel:
  zookeeper_server:
    belongs_to:
      - zookeeper_all

container_skel:
  zookeeper_container:
    belongs_to:
      - infra_containers
      - shared-infra_containers
    contains:
      - zookeeper_server
    properties:
      service_name: zookeeper

Sekarang Anda dapat mengatur Zookeeper sebagai backend koordinasi untuk Gnocchi:

gnocchi_coordination_url: "zookeeper://{% for host in groups['zookeeper_all'] %}{{ hostvars[host]['management_address'] }}:2181{% if not loop.last %},{% endif %}{% endfor %}"

Anda juga harus menginstal paket tambahan:

gnocchi_pip_packages:
- cryptography
- gnocchiclient
# this is what we want:
#  - "gnocchi[mysql,ceph,ceph_alternative_lib,redis,keystone]"
# but as there is no librados >=12.2 pip package we have to first install ceph without alternative support
# after adding the ceph repo to gnocchi container, python-rados>=12.2.0 is installed and linked automatically
# and gnocchi will automatically take up the features present in the used rados lib.
- "gnocchi[mysql,ceph,redis,keystone]"
- keystonemiddleware
- python-memcached
- redis
- systemd-python
# addiitional pip packages needed for zookeeper coordination backend
- tooz
- lz4
- kazoo

Tes Kinerja untuk Gnocchi

Untuk lebih banyak ide bagaimana menyetel tumpukan (stack) Gnocchi Anda, lihat presentasi ini: