Forked from fernandoaleman/install-rabbitmq-centos-7.md
Created
December 8, 2021 03:28
-
-
Save tkt028/f810fa4efe459894c7bb4d38eadb05c8 to your computer and use it in GitHub Desktop.
Revisions
-
fernandoaleman revised this gist
Sep 16, 2020 . 1 changed file with 28 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -55,6 +55,29 @@ Automatically start RabbitMQ at boot time sudo systemctl enable rabbitmq-server ``` ## RabbitMQ Config (Optional) Create rabbitmq conf file at `/etc/rabbitmq/rabbitmq.conf` ``` listeners.ssl.default = 5671 ssl_options.cacertfile = /path/to/cacertfile.pem ssl_options.certfile = /path/to/certfile.pem ssl_options.keyfile = /path/to/keyfile.pem ssl_options.verify = verify_peer ssl_options.versions.1 = tlsv1.2 ssl_options.versions.2 = tlsv1.1 ssl_options.fail_if_no_peer_cert = false tcp_listen_options.backlog = 128 tcp_listen_options.nodelay = true tcp_listen_options.exit_on_close = false tcp_listen_options.keepalive = false heartbeat = 580 ``` ## Firewall If you have a firewall installed and running @@ -121,17 +144,17 @@ To access the RabbitMQ admin http://Your_Server_IP:15672 ``` ## RabbitMQ Web Management SSL (Recommended) Create or update rabbitmq conf file at `/etc/rabbitmq/rabbitmq.conf` ``` management.listener.port = 15672 management.listener.ssl = true management.listener.ssl_opts.cacertfile = /path/to/cacertfile.pem management.listener.ssl_opts.certfile = /path/to/certfile.pem management.listener.ssl_opts.keyfile = /path/to/keyfile.pem ``` ## RabbitMQ Cluster -
fernandoaleman revised this gist
Sep 16, 2020 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -28,7 +28,7 @@ sudo yum -y install erlang socat logrotate Download RabbitMQ package ``` wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.8/rabbitmq-server-3.8.8-1.el6.noarch.rpm ``` Add signing key @@ -40,7 +40,7 @@ sudo rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc Install rabbitmq-server ``` sudo rpm -Uvh rabbitmq-server-3.8.8-1.el6.noarch.rpm ``` Start RabbitMQ -
fernandoaleman revised this gist
Dec 14, 2018 . 1 changed file with 41 additions and 35 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,112 +1,118 @@ # Install RabbitMQ on CentOS 7 ``` sudo yum -y install epel-release sudo yum -y update ``` ## Install Erlang Download repository ``` wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm ``` Add repository ``` sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm ``` Install erlang and dependencies ``` sudo yum -y install erlang socat logrotate ``` ## Install RabbitMQ Download RabbitMQ package ``` wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm ``` Add signing key ``` sudo rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc ``` Install rabbitmq-server ``` sudo rpm -Uvh rabbitmq-server-3.7.9-1.el7.noarch.rpm ``` Start RabbitMQ ``` sudo systemctl start rabbitmq-server ``` Automatically start RabbitMQ at boot time ``` sudo systemctl enable rabbitmq-server ``` ## Firewall If you have a firewall installed and running ``` sudo firewall-cmd --zone=public --permanent --add-port=4369/tcp sudo firewall-cmd --zone=public --permanent --add-port=25672/tcp sudo firewall-cmd --zone=public --permanent --add-port=5671-5672/tcp sudo firewall-cmd --zone=public --permanent --add-port=15672/tcp sudo firewall-cmd --zone=public --permanent --add-port=61613-61614/tcp sudo firewall-cmd --zone=public --permanent --add-port=1883/tcp sudo firewall-cmd --zone=public --permanent --add-port=8883/tcp ``` Reload the firewall ``` sudo firewall-cmd --reload ``` ## SELinux If you have SELinux enabled ``` sudo setsebool -P nis_enabled 1 ``` ## RabbitMQ Web Management Console Enable RabbitMQ web management console ``` sudo rabbitmq-plugins enable rabbitmq_management ``` Modify file permissions ``` sudo chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/ ``` Create an admin user (Change `password` to a strong password) ``` sudo rabbitmqctl add_user admin password ``` Make admin user and administrator ``` sudo rabbitmqctl set_user_tags admin administrator ``` Set admin user permissions ``` sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" ``` To access the RabbitMQ admin -
fernandoaleman revised this gist
Nov 14, 2018 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -27,7 +27,7 @@ echo "====================="; OUT=/tmp/master.out MASTER_HOSTNAME=$(getHostname "Enter the master server's hostname"); echo "[$MASTER_HOSTNAME] Setting up master"; ssh -t $MASTER_HOSTNAME "bash -c '$SETUP_MASTER_SCRIPT cat /var/lib/rabbitmq/.erlang.cookie;'" | tee $OUT; COOKIE=$(cat $OUT | tail -n1) rm $OUT; echo "Master's Erlang Cookie : '$COOKIE'" -
fernandoaleman created this gist
Nov 14, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,133 @@ # Install RabbitMQ on CentOS 7 ``` yum -y install epel-release yum -y update ``` ## Install Erlang Create erlang yum repo file at `/etc/yum.repos.d/rabbitmq-erlang.repo` ``` [rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7 gpgcheck=1 gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc repo_gpgcheck=0 enabled=1 ``` Install erlang and dependencies ``` yum -y install erlang socat logrotate ``` ## Install RabbitMQ Create rabbitmq yum repo file at `/etc/yum.repos.d/rabbitmq.repo` ``` [bintray-rabbitmq-server] name=bintray-rabbitmq-rpm baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/ gpgcheck=1 gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc repo_gpgcheck=0 enabled=1 ``` Install rabbitmq-server ``` yum -y install rabbitmq-server ``` Start RabbitMQ ``` systemctl start rabbitmq-server ``` Automatically start RabbitMQ at boot time ``` systemctl enable rabbitmq-server ``` ## Firewall If you have a firewall installed and running ``` firewall-cmd --zone=public --permanent --add-port=4369/tcp firewall-cmd --zone=public --permanent --add-port=25672/tcp firewall-cmd --zone=public --permanent --add-port=5671-5672/tcp firewall-cmd --zone=public --permanent --add-port=15672/tcp firewall-cmd --zone=public --permanent --add-port=61613-61614/tcp firewall-cmd --zone=public --permanent --add-port=1883/tcp firewall-cmd --zone=public --permanent --add-port=8883/tcp ``` Reload the firewall ``` firewall-cmd --reload ``` ## SELinux If you have SELinux enabled ``` setsebool -P nis_enabled 1 ``` ## RabbitMQ Web Management Console Enable RabbitMQ web management console ``` rabbitmq-plugins enable rabbitmq_management ``` Create an admin user (Change `password` to a strong password) ``` rabbitmqctl add_user admin password ``` Make admin user and administrator ``` rabbitmqctl set_user_tags admin administrator ``` Set admin user permissions ``` rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" ``` To access the RabbitMQ admin ``` http://Your_Server_IP:15672 ``` ## RabbitMQ SSL Create rabbitmq conf file at `/etc/rabbitmq/rabbitmq.conf` ``` management.listener.port = 15672 management.listener.ssl = true management.listener.ssl_opts.cacertfile = /path/to/your/ca_certificate.pem management.listener.ssl_opts.certfile = /path/to/your/certificate.pem management.listener.ssl_opts.keyfile = /path/to/your/key.pem ``` ## RabbitMQ Cluster Setup multiple RabbitMQ servers, copy script below to `/usr/local/sbin/rabbitmq-cluster.sh` and run the script This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,76 @@ #!/bin/bash set -e function getHostname() { local HOST='' while test -z "$HOST" do read -p "$1 : " HOST done echo $HOST; } SETUP_MASTER_SCRIPT=' rabbitmqctl stop_app; rabbitmqctl reset; rabbitmqctl start_app; '; # Step 1 : Setup the Master. Get the erlang cookie echo "Setup RabbitMQ Master"; echo "====================="; OUT=/tmp/master.out MASTER_HOSTNAME=$(getHostname "Enter the master server's hostname"); echo "[$MASTER_HOSTNAME] Setting up master"; ssh -t $MASTER_HOSTNAME "bash -c '$SETUP_MASTER_SCRIPT sudo cat /var/lib/rabbitmq/.erlang.cookie;'" | tee $OUT; COOKIE=$(cat $OUT | tail -n1) rm $OUT; echo "Master's Erlang Cookie : '$COOKIE'" MASTER_IP=$(getHostname "Enter the master server's IP as seen from the slaves (Use a local IP if available)"); # Step 2 : Setup the slaves SETUP_SLAVE_SCRIPT=" sed -i \"s/^$/$MASTER_IP $MASTER_HOSTNAME\n/\" /etc/hosts bash -c \"echo -n '$COOKIE' > /var/lib/rabbitmq/.erlang.cookie\"; rabbitmqctl stop_app; rabbitmqctl reset; rabbitmqctl join_cluster --ram rabbit@$MASTER_HOSTNAME; rabbitmqctl start_app; rabbitmqctl cluster_status; "; echo "Setup RabbitMQ Slaves"; echo "====================="; SERVER=$(getHostname "Enter slave's hostname or 'q' to quit"); while test "$SERVER" != "q" do echo "Setting up slave"; echo "ssh '$SERVER'"; ssh -t $SERVER "bash -c '$SETUP_SLAVE_SCRIPT'"; SERVER=$(getHostname "Enter another slave's hostname or 'q' to quit"); done # Step 3 : Create admin user echo "[$MASTER_HOSTNAME] Setting up admin user"; ssh -t $MASTER_HOSTNAME "bash -c 'rabbitmqctl add_user admin password'"; ssh -t $MASTER_HOSTNAME "bash -c 'rabbitmqctl set_user_tags admin administrator'"; ssh -t $MASTER_HOSTNAME "bash -c 'rabbitmqctl set_permissions -p / admin \".*\" \".*\" \".*\"'"; # Step 3 : Delete guest user echo "[$MASTER_HOSTNAME] Removing user"; ssh -t $MASTER_HOSTNAME "bash -c 'rabbitmqctl delete_user guest'"; # Step 5 : Create sync policy echo "[$MASTER_HOSTNAME] Synchronizing cluster"; ssh -t $MASTER_HOSTNAME $"bash -c 'rabbitmqctl set_policy -p / ha-all \"\" '\''{\"ha-mode\":\"all\",\"ha-sync-mode\":\"automatic\"}'\'''"; echo "Done";