RabbitMQ installation
Document version: 245. Automatically generated.
RabbitMQ is an open-source message-broker software (sometimes called message-oriented middleware)
It was originally implemented the Advanced Message Queuing Protocol (AMQP) and has since been extended with a plug-in architecture to support Streaming Text Oriented Messaging Protocol (STOMP), MQ Telemetry Transport (MQTT), and other protocols.
RabbitMQ 3.8 is used for asynchronous communication between applications.
Prerequisites
- Access to GIT repository repo-ext.sentione.com has been granted
- Access to hub.sentione.com RPM repository has been granted
- Dedicated Automate configuration repository has been cloned to local filesystem (eg.
/home/user/automate-config
) - 3 dedicated machines with Red-Hat based operating system (eg. Red-Hat Enterprise, CentOS Stream 9) available for installation
Conventions
CAPITAL_LETTERS_VARIABLE_NAME
- fragment which should be replaced with actual values matching particular environmentAUTOMATE_CONFIG_REPO_PATH
- Path to automate configuration repository (eg./home/user/automate-config
)ENVIRONMENT_NAME
- Environment name (eg.production
)
Example
$ cd AUTOMATE_CONFIG_REPO_PATH/ENVIRONMENT_NAME/external-services
Should be substituted with:
$ cd /home/user/automate-config/production/external-services
Steps
1. Filling in configuration template
1.1 Navigate to Automate configuration repository.
$ cd AUTOMATE_CONFIG_REPO_PATH/ENVIRONMENT_NAME/external-services
1.2 RPM repository credentials
SentiOne should provide credentials to RPM repository at https://hub.sentione.com
Please put these credentials in following section
AUTOMATE_CONFIG_REPO_PATH/ENVIRONMENT_NAME/external-services/inventory
[all:vars]
NEXUS3URL=https://hub.sentione.com
NEXUS3USER=PUT_YOUR_NEXUS_USERNAME_HERE
NEXUS3PASSWORD=PUT_YOUR_NEXUS_PASSWORD_HERE
1.2 Fill in following placeholders in following file
AUTOMATE_CONFIG_REPO_PATH/ENVIRONMENT_NAME/external-services/inventory:
[rabbitmq-master]
x.x.x.x ansible_user=root
[rabbitmq-slave]
x.x.x.x ansible_user=root
x.x.x.x ansible_user=root
[rabbitmq:children]
rabbitmq-master
rabbitmq-slave
[rabbitmq:vars]
RABBITMQ_USER=rabbit_user_name
RABBITMQ_PASSWORD=rabbit_password
....
RABBITMQ_1_IP=x.x.x.x
RABBITMQ_2_IP=x.x.x.x
RABBITMQ_3_IP=x.x.x.x
where:
-RABBITMQ_USER, RABBITMQ_PASSWORD
variables refer to username and password that will be used to connect to the service
- sections
[rabbitmq-master], [rabbitmq-slave]
should be filled in with IP addresses of nodes where RabbitMQ is supposed to be installed. RABBITMQ_1_IP, RABBITMQ_2_IP, RABBITMQ_3_IP
variables should be filled in with IP addresses of nodes where RabbitMQ is supposed to be installed (WARNING:[rabbitmq-master]
section addresses must matchRABBITMQ_1_IP
)
2. SSH Connectivity check
In order to execute next steps you should make sure that you can connect to the nodes (set in configuration files) via SSH using key-based authentication as root user.
Example
user@localhost:~$ ssh [email protected]
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-47-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
[email protected]:~#
3. Cloning GIT repository with Ansible scripts in $HOME
directory
$HOME
directory$ cd ~
$ git clone https://repo-ext.sentione.com/public/external-services.git
Cloning into 'external-services'...
Username for 'https://repo-ext.sentione.com': YOUR_GIT_USERNAME
Password for 'https://[email protected]@repo-ext.sentione.com':
4. Installation
Installation process is all about running two ansible playbooks.
install-rabbitmq-playbook.yaml
will install RabbitMQ service on three independent nodes.create-rabbitmq-cluster-playbook.yaml
will form a cluster composed of three nodes created in first step.
4.1 Navigate to rabbitmq
folder in external-services
GIT repository
rabbitmq
folder in external-services
GIT repository$ cd ~/external-services/rabbitmq
4.2 Run install-rabbitmq-playbook.yaml ansible playbook
$ ansible-playbook
-i AUTOMATE_CONFIG_REPO_PATH/ENVIRONMENT_NAME/external-services/inventory \
install-rabbitmq-playbook.yaml
4.3 Run create-rabbitmq-cluster-playbook.yaml ansible playbook
$ ansible-playbook
-i AUTOMATE_CONFIG_REPO_PATH/ENVIRONMENT_NAME/external-services/inventory \
create-rabbitmq-cluster-playbook.yaml
5. Test
In order to verify whether RabbitMQ was successfully installed you can either:
To log in please use credentials defined in configuration files
RABBITMQ_USER
,RABBITMQ_PASSWORD
-
Open administration panel in Web Browser of your choice:
- http://RABBITMQ_1_IP:15672
- http://RABBITMQ_2_IP:15672
- http://RABBITMQ_3_IP:15672
-
Issue following
curl
command (in case Administration Panel is not available)
$ curl -u "RABBITMQ_USER:RABBITMQ_PASSWORD" http://RABBITMQ_1_IP:15672/api/vhosts
[{"cluster_state":{"[email protected]":"running"}, (...continued...)}]
Updated 22 days ago