Installasjon og oppsett av RabbitMQ for Cerebrum utviklere

Informasjon om installasjon og oppsett av RabbitMQ for Cerebrum utvikling.

1   Installasjon

Viktig

This document is out of date.

1.1   Installasjon og oppsett med Ansible

RabbitMQ kan installeres og settes opp ved hjelp av Ansible 2 på følgende måte:

sudo yum install ansible
# endre / sette opp host i ~/.ssh/config
git clone git@github.uio.no:IT-INT/int-ansible-hosts.git
cd int-ansible-hosts
ansible-playbook --ask-become-pass -v --extra-vars '{"hosts": "mq-prod01"}' rabbitmq_playbook.yml

RabbitMQ skal da være tilgjengelig på https://mq-prod01.uio.no for administratorbruker guest med passord guest.

1.2   Manuell installasjon i RH7 med SELinux

UAIT har fått RH7 virtuell instans med SELinux: mq-ext-utv02.uio.no.

Det forutsettes at alle kommandoer kjøres med administrator (root) rettigheter.

RabbitMQ 3.3.5 installeres ved hjelp av yum

yum install rabbitmq-server.noarch

Konfigurasjonsmappen /etc/rabbitmq vil bli opprettet automatisk.

Etter at serveren er satt opp / konfigurert kan den startes på følgende måte

systemctl start rabbitmq-server.service

og stoppes:

systemctl stop rabbitmq-server.service

2   Manuelt oppsett

Eksemplet viser generell oppsett av RabbitMQ med AMQP, STOMP og web-management støtte.

2.1   SELinux

Portene 61613 (STOMP) 61614 (STOMP-ssl) må legges til domenet rabbitmq_port_t.

semanage port -a -t rabbitmq_port_t -p tcp 61613-61614

Ved bruk av SSH-nøkler må authorized_keys få riktig SELinux label. Kommandoen /sbin/restorecon -v $HOME/.ssh/authorized_keys bør fikse dette.

2.2   Plugins

Vi kan få oversikt over tilgengelige RabbitMQ plugins og deres status ved hjelp av

rabbitmq-plugins list

Vi vil aktivere rabbitmq_stomp og rabbitmq_management.

rabbitmq-plugins enable rabbitmq_stomp
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_auth_mechanism_ssl

RabbitMQ vil automatisk oprette (eller endre): <konfigurasjonsmappe>/enabled_plugins

2.3   rabbitmq.config

En fungerende <konfigurasjonsmappe>/rabbitmq.config kan inneholde følgende

%% -*- mode: erlang -*-
[
 {ssl, [{versions, ['tlsv1.2']}]},
 {rabbit, [{tcp_listeners, []},
           {ssl_listeners, [5671]},
           {ssl_options, [{cacertfile, "mittsertifikaterbedreendittsertifikat.crt"},
                          {certfile, "minoffentligenokkel.crt"},
                          {keyfile, "hemmelig.key"},
                          {verify,verify_peer},
                          {fail_if_no_peer_cert,false}]},
           % Use CN from certificate as username
           {ssl_cert_login_from, common_name},
           % Define authentication mechanisms. Note EXTERNAL (for certificate auth).
           {auth_mechanisms, ['PLAIN', 'AMQPLAIN', 'EXTERNAL']}]},
  {rabbitmq_management, [{listener, [{port, 15671},
                                     {ssl, true},
                                     {ssl_opts, [{cacertfile, "saanderreca.crt"},
                                                 {certfile, "sannderresertifikat.crt"},
                                                 {keyfile, "saanderredings.key"}]}]}]},
  {rabbitmq_stomp, [{tcp_listeners, []},
                    {ssl_listeners, [61614]},
                    % Enable client certificate authentication
                    {ssl_cert_login, true}]}
].

Se rabbitmq-sample.config for flere detaljer!

N.B. Hvis RabbitMQ kjører på erlang <= 16 (f.eks. RH7), vil den ikke kunne bruke elliptic curve ciphers og klienter som prøver å koble seg til med slike (f.eks. klienter som bruker OpenSSL >= 1.0.2) vil feile. En kan sjekke hvilke ciphers støttes av RabbitMQ ved å kjøre

rabbitmqctl eval 'ssl:cipher_suites(openssl).'

2.4   Oppsett av vhosts(s) og admin bruker

Oppsett av vhosts(s) og admin bruker krever at RabbitMQ serveren kjører.

Nyinstallert RabbitMQ vil automatisk opprette administratorbrukeren guest med passord guest.

guest brukeren vil kunne koble seg mot RabbitMQ serveren kun fra localhost.

rabbitmqctl er det ofisielle administrasjonsverktøyet til RabbitMQ.

Hvis rabbitmq_management plugin er aktivert, vil RabbitMQ også kunne lytte for HTTP tilkoblinger på port 15672.

For at en skal kunne benytte seg av http://mq-ext-utv02.uio.no:15672, må en enten legge til en ny administratorbruker ved hjelp av rabbitmqctl, bruke {loopback_users, []}, i rabbitmq.config eller bruke ssh-tunnel som f.eks.

ssh -2 -N -L 15672:localhost:15672 <brukernavn>@mq-ext-utv02.uio.no

Webgrensesnittet vil kunne tilby en enklere måte å administrare brukere, vhosts og ressurser på.

Eksemplene i dette dokumentet vil derimot bruke rabbitmqctl.

2.4.1   brukere

Liste alle eksisterende brukere.

rabbitmqctl list_users

Legge til dedikert admin bruker (rmq_admin).

rabbitmqctl add_user rmq_admin <passord>

Gi administrator rettigheter til rmq_admin.

rabbitmqctl set_user_tags rmq_admin administrator

Fjerne eksisterende guest bruker.

rabbitmqctl delete_user guest

2.4.2   vhosts

Liste alle eksisterende vhosts.

rabbitmqctl list_vhosts

Legge til vhost (/test/cerebrum_test).

rabbitmqctl add_vhost /test/cerebrum_test
Av sgs
Publisert 19. mai 2016 09:17 - Sist endret 2. des. 2022 10:57