RabbitMQ'yu Yapılandırma

*nix Sistemlerinde RabbitMQ’yu Yapılandırma

Ortamınızı yapılandırma

RabbitMQ, /etc/rabbitmq/rabbitmq-env.conf içinde bir dizi ortam değişkeni arar. Mevcut değilse, varsayılan değerleri varsayar. ‘rabbitmq-env.conf’ içindeki tüm değerler, RabbitMQ sunucusunun bir ‘RABBITMQ_’ öneki ile çalıştığı ortama aktarılır; bu önek, yapılandırma dosyasına dahil değildir. Aşağıdaki değişkenler ayarlanabilir (“anahtar=değer” sözdiziminde):

NODENAME: RabbitMQ düğümünün adını ayarlar.

CONFIG_FILE: RabbitMQ yapılandırma dosyasının konumunu ayarlar (bu ortam dosyası değil)

NODE_IP_ADDRESS: Dinlenecek belirli IP adresini ayarlar.

NODE_PORT: Dinlenecek bağlantı noktasını ayarlar

DIST_PORT: Kümeleme için dinlenecek bağlantı noktasını ayarlar

USE_LONGNAME: Düğümleri tanımlamak için tam nitelikli adların kullanılıp kullanılmayacağını belirten Boole değeri. Aynı kısa adlara sahip ortamlarda kullanışlıdır.

CTL_ERL_ARGS: rabbitmqctl çalıştırılırken çağrılan erl komutu için argümanları ayarlar. Hata ayıklamak için kullanışlıdır.

SERVER_ERL_ARGS: RabbitMQ başlatılırken çağrılan erl komutu için argümanları ayarlar. Bu değeri ayarlamak, varsayılanı geçersiz kılar (aşağıdaki örnek yapılandırmaya bakın).

SERVER_ADDITIONAL_ERL_ARGS: RabbitMQ başlatılırken çağrılan erl komutu için ek argümanlar ayarlar. Bu değerin ayarlanması, “SERVER_ERL_ARGS” değişkenine eklenir ve varsayılan olarak boştur.

SERVER_START_ARGS: Ayrıca RabbitMQ başlatılırken çağrılan erl komutu için de ayarlanır.

Örnek bir yapılandırma dosyası (tüm değerler aslında varsayılan değerlerdir):

[email protected]    
CONFIG_FILE=/etc/rabbitmq/rabbitmq.config
NODE_IP_ADDRESS=""
NODE_PORT=5672
DIST_PORT=25672
USE_LONGNAME=false
CTL_ERL_ARGS=""
SERVER_ERL_ARGS="+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true}]"
SERVER_ADDITIONAL_ERL_ARGS=""
SERVER_START_ARGS=""

RabbitMQ’yu Yapılandırma

Not: RabbitMQ’nun yapılandırma dosyası, standart Erlang yapılandırma sözdizimindedir. Erlang’a aşina değilseniz, bu ilk başta kafa karıştırıcı olabilir. Aşağıdaki formatı takip eder:

[
    {rabbit,
        [
            {config_value_1, []},
            {config_value_2, []}
        ]
    },
    {additional_rabbitmq_plugins,
        [...]
    }
]

RabbitMQ’nun konfigürasyon bölümünde aşağıdaki anahtarlar bulunur (https://www.rabbitmq.com/configure.html adresinden alınmıştır):

  • tcp_listeners: AMQP bağlantılarının dinleneceği bağlantı noktalarının listesi (SSL olmadan). Bir veya daha fazla arayüzde dinlemek için tamsayılar (“tüm arayüzlerde dinle” anlamına gelir) veya “{“127.0.0.1”, 5672}` gibi tanımlama grupları içerebilir.

Varsayılan: “[5672]”

  • num_tcp_acceptors: TCP dinleyicileri için bağlantıları kabul edecek Erlang işlemlerinin sayısı.

Varsayılan: “10”

  • handshake_timeout: AMQP 0-8/0-9/0-9-1 el sıkışma (soket bağlantısı ve SSL el sıkışmasından sonra) için milisaniye cinsinden maksimum süre.

Varsayılan: “10000”

  • ssl_listeners: SSL bağlantıları için yukarıdaki gibidir.

Varsayılan: “[]”

  • num_ssl_acceptors: SSL dinleyicileri için bağlantıları kabul edecek Erlang işlemlerinin sayısı.

Varsayılan: “1”

  • ssl_options: SSL yapılandırması.

Varsayılan: “[]”

  • ssl_handshake_timeout: SSL anlaşması zaman aşımı, milisaniye cinsinden.

Varsayılan: “5000”

  • vm_memory_high_watermark: Akış kontrolünün tetiklendiği bellek eşiği. Bellek tabanlı akış denetimi belgelerine bakın.

Varsayılan: “0.4”

  • vm_memory_high_watermark_paging_ratio: Kuyrukların belleği boşaltmak için mesajları diske göndermeye başladığı yüksek filigran sınırının oranı. Bellek tabanlı akış denetimi belgelerine bakın.

Varsayılan: “0.5”

  • disk_free_limit: RabbitMQ’nun veri depoladığı bölümün disk boş alan sınırı. Kullanılabilir disk alanı bu sınırın altına düştüğünde akış denetimi tetiklenir. Değer, toplam RAM miktarına göre ayarlanabilir (ör. {mem_relative, 1.0}). Değer ayrıca bir tamsayı bayt sayısına da ayarlanabilir. Veya alternatif olarak bilgi birimlerinde (ör. "50MB"). Varsayılan olarak boş disk alanı 50 MB’ı aşmalıdır. Disk Alarmları belgelerine bakın.

Varsayılan: “50000000”

  • log_levels: Günlüğe kaydetmenin ayrıntı düzeyini kontrol eder. Değer, günlük olay kategorisi ve günlük düzeyi çiftlerinin bir listesidir.

Seviye, “hiçbiri” (hiçbir olay günlüğe kaydedilmez), “hata” (yalnızca hatalar günlüğe kaydedilir), ‘uyarı’ (yalnızca hatalar ve uyarılar günlüğe kaydedilir), ‘info’ (hatalar, uyarılar ve bilgi mesajları günlüğe kaydedilir) olabilir. ) veya “hata ayıklama” (hatalar, uyarılar, bilgi mesajları ve hata ayıklama mesajları günlüğe kaydedilir).

Şu anda tanımlanmış dört kategori vardır. Diğer, şu anda kategorize edilmemiş olaylar her zaman günlüğe kaydedilir.

Kategoriler:

  • “kanal” - AMQP kanallarıyla ilgili tüm olaylar için

  • “bağlantı” - ağ bağlantılarıyla ilgili tüm olaylar için

  • ‘federasyon’ - federasyonla ilgili tüm etkinlikler için

  • “yansıtma” - yansıtılmış kuyruklarla ilgili tüm olaylar için

Varsayılan: `[{bağlantı, bilgi}]’

  • frame_max: İstemcilerle anlaşmak için izin verilen maksimum çerçeve boyutu (bayt cinsinden). 0’a ayarlamak “sınırsız” anlamına gelir ancak bazı QPid istemcilerinde bir hatayı tetikleyecektir. Daha büyük bir değer ayarlamak verimi artırabilir; daha küçük bir değer ayarlamak gecikmeyi artırabilir.

Varsayılan: “131072”

  • channel_max: Müşterilerle anlaşmak için izin verilen maksimum kanal sayısı. 0’a ayarlamak “sınırsız” anlamına gelir. Daha fazla kanal kullanmak, aracının bellek ayak izini artırır.

Varsayılan: “0”

  • channel_operation_timeout: Milisaniye cinsinden kanal işlem zaman aşımı (dahili olarak kullanılır, mesajlaşma protokolü farklılıkları ve sınırlamaları nedeniyle doğrudan istemcilere gösterilmez).

Varsayılan: “15000”

  • “kalp atışı”: Sunucunun connection.tune çerçevesinde gönderdiği kalp atışı gecikmesini saniye cinsinden temsil eden değer. 0 olarak ayarlanırsa, kalp atışları devre dışı bırakılır. İstemciler sunucu önerisine uymayabilir, daha fazla ayrıntı için AMQP referansına bakın. Sinyallerin devre dışı bırakılması, çok sayıda bağlantının olduğu durumlarda performansı iyileştirebilir, ancak etkin olmayan bağlantıları kapatan ağ cihazlarının varlığında bağlantıların düşmesine neden olabilir.

Varsayılan: “60” (3.5.5 sürümünden önce “580”)

  • default_vhost: RabbitMQ sıfırdan yeni bir veritabanı oluşturduğunda oluşturulacak sanal ana bilgisayar. amq.rabbitmq.log alışverişi bu sanal ana bilgisayarda bulunacaktır.

Varsayılan: <<"/">>

  • default_user: RabbitMQ sıfırdan yeni bir veritabanı oluşturduğunda oluşturulacak kullanıcı adı.

Varsayılan: <<"misafir">>

  • default_pass: Varsayılan kullanıcı için şifre.

Varsayılan: <<"misafir">>

  • default_user_tags: Varsayılan kullanıcı için etiketler.

Varsayılan: “[yönetici]”

  • default_permissions: Oluştururken varsayılan kullanıcıya atanacak izinler.

Varsayılan: [<<".*">>, <<".*">>, <<".*">>]

  • “loopback_users”: Aracıya yalnızca bir geri döngü arabirimi (yani, yerel ana bilgisayar) aracılığıyla bağlanmasına izin verilen kullanıcıların listesi.

Varsayılan konuk kullanıcının uzaktan bağlanmasına izin vermek istiyorsanız, bunu [] olarak değiştirmeniz gerekir.

Varsayılan: [<<"misafir">>]

  • cluster_nodes: Bunu, bir düğüm ilk kez başladığında kümelemenin otomatik olarak gerçekleşmesi için ayarlayın. Tuple’ın ilk elemanı, düğümün kümelemeye çalışacağı düğümlerdir. İkinci eleman ya disk ya da ram’dir ve düğüm tipini belirler.

Varsayılan: {[], disk}

  • server_properties: Bağlantıda istemcilere duyurulacak anahtar/değer çiftlerinin listesi.

Varsayılan: “[]”

  • collect_statistics: İstatistik toplama modu. Öncelikle yönetim eklentisi için alakalı. Seçenekler:

  • “none” (istatistik olaylarını yayınlamayın)

  • “kaba” (sıra başına / kanal başına / bağlantı başına istatistik yayar)

  • “iyi” (ayrıca mesaj başına istatistik yayar)

Muhtemelen bunu kendin değiştirmek istemezsin.

Varsayılan: “yok”

  • collect_statistics_interval: Milisaniye cinsinden istatistik toplama aralığı. Öncelikle yönetim eklentisi için alakalı.

Varsayılan: “5000”

  • auth_mekanizmaları: Müşterilere sunulacak SASL kimlik doğrulama mekanizmaları.

Varsayılan: `[‘DÜZ’, ‘AMQPLAIN’]’

  • auth_backends: Kullanılacak kimlik doğrulama / yetkilendirme arka uçlarının listesi. Bu liste, modüllerin adlarını (bu durumda hem kimlik doğrulama hem de yetkilendirme için aynı modül kullanılır) veya “{ModN, ModZ}” gibi 2 demet içerebilir; bu durumda kimlik doğrulama için ModN ve yetkilendirme için ModZ kullanılır.

2 demet durumunda ModZ, tüm öğelerinin her bir yetkilendirme sorgusunu onaylaması gereken bir liste ile değiştirilebilir, örn. {ModN, [ModZ1, ModZ2]}. Bu, yetkilendirme eklentilerinin karıştırılmasına ve ek güvenlik kısıtlamaları sağlamasına olanak tanır.

“rabbit_auth_backend_internal” dışındaki diğer veritabanları eklentiler aracılığıyla kullanılabilir.

Varsayılan: “[rabbit_auth_backend_internal]”

  • reverse_dns_lookups: RabbitMQ’nun istemci bağlantılarında ters DNS araması yapması ve bu bilgiyi rabbitmqctl ve yönetim eklentisi aracılığıyla sunması için true olarak ayarlayın.

Varsayılan: “yanlış”

  • “delegate_count”: Küme içi iletişim için kullanılacak temsilci işlemlerinin sayısı. Çok sayıda çekirdeğe sahip olan ve aynı zamanda bir kümenin parçası olan bir makinede bu değeri artırmak isteyebilirsiniz.

Varsayılan: “16”

  • trace_vhosts: İzleyici tarafından dahili olarak kullanılır. Bunu değiştirmemelisin.

Varsayılan: “[]”

  • tcp_listen_options: Varsayılan soket seçenekleri. Muhtemelen bunu değiştirmek istemezsiniz.

Varsayılan:

  [{backlog,       128},
   {nodelay,       true},
   {exit_on_close, false}]
  • hipe_compile: RabbitMQ’nun parçalarını Erlang için tam zamanında derleyici olan HiPE ile önceden derlemek için true olarak ayarlayın. Bu, artan başlatma süresi pahasına sunucu verimini artıracaktır.

Başlangıçta birkaç dakikalık gecikme pahasına %20-50 daha iyi performans görebilirsiniz. Bu rakamlar büyük ölçüde iş yüküne ve donanıma bağlıdır.

HiPE desteği, Erlang kurulumunuza derlenmemiş olabilir. Değilse, bu seçeneğin etkinleştirilmesi sadece bir uyarı mesajının görüntülenmesine neden olur ve başlatma normal şekilde devam eder. Örneğin Debian/Ubuntu kullanıcılarının ’erlang-base-hipe’ paketini kurması gerekecek.

HiPE, özellikle Windows dahil olmak üzere bazı platformlarda hiç mevcut değildir.

HiPE, 17.5’ten önceki Erlang/OTP sürümlerinde bilinen sorunlara sahiptir. HiPE için yeni bir Erlang/OTP sürümünün kullanılması şiddetle tavsiye edilir.

Varsayılan: “yanlış”

  • cluster_partition_handling: Ağ bölümleri nasıl işlenir. Kullanılabilir modlar şunlardır:

  • “yoksay”

  • pause_minority

  • {pause_if_all_down, [düğümler], yoksay | autoheal} burada “[düğümler]” düğüm adlarının bir listesidir (ör: ['tavş[email protected]üğüm1', 'tavş[email protected]üğüm2'])

  • “otomatik iyileştirme”

Daha fazla bilgi için bölümlerle ilgili belgelere bakın.

Varsayılan: “yoksay”

  • cluster_keepalive_interval: Düğümlerin diğer düğümlere ne sıklıkla canlı tutma mesajları göndermesi gerektiği (milisaniye cinsinden). Bunun “net_ticktime” ile aynı şey olmadığını unutmayın; kaçırılan canlı tutma mesajları, düğümlerin devre dışı kalmasına neden olmaz.

Varsayılan: “10000”

  • queue_index_embed_msgs_below: Aşağıda mesajların doğrudan kuyruk indeksine gömüleceği mesajın bayt cinsinden boyutu. Bunu değiştirmeden önce kalıcı ayar belgelerini okumanız önerilir.

Varsayılan: “4096”

  • msg_store_index_module: Kuyruk indeksleme için uygulama modülü. Bunu değiştirmeden önce kalıcı ayar belgelerini okumanız önerilir.

Varsayılan: “rabbit_msg_store_ets_index”

  • backing_queue_module: Sıra içeriği için uygulama modülü. Muhtemelen bunu değiştirmek istemezsiniz.

Varsayılan: “rabbit_variable_queue”

  • msg_store_file_size_limit: Kalıcı için ayarlanabilir değer. Bunu neredeyse kesinlikle değiştirmemelisiniz.

Varsayılan: “16777216”

  • mnesia_table_loading_timeout: Bir kümedeki Mnesia tablolarının kullanılabilir hale gelmesi beklenirken kullanılan zaman aşımı.

Varsayılan: “30000”

  • queue_index_max_journal_entries: Kalıcı için ayarlanabilir değer. Bunu neredeyse kesinlikle değiştirmemelisiniz.

Varsayılan: “65536”

  • queue_master_locator: Kuyruk ana konum stratejisi. Mevcut stratejiler şunlardır:

  • <<"min-master">>

  • <<"istemci-yerel">>

  • <<"rastgele">>

Daha fazla bilgi için kuyruk ana konumu hakkındaki belgelere bakın.

Varsayılan: <<"client-local">>