消息队列-RabbitMQ 二 安装和使用

2019-08-25  本文已影响0人  SeanJX

环境和版本

ubuntu18, 最新的MQ版本

how

  1. 使用apt软件仓库, 可能会有版本的延迟
  2. 手动安装,使用dpkg -i, 需要手动安装所有依赖

Erlang安装

Rabbit Mq是使用Erlang编写,需要安装合适的版本,最简单的是使用apt安装。
标准的debian和ubuntu仓库可能会提供过期的版本,但是RMQ团队维持了一个Erlang/OTP版本供apt安装。

安装步骤如下

  1. 下载key
https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -
原站勘误
  1. 使用key server
sudo apt-key adv --keyserver "hkps.pool.sks-keyservers.net" --recv-keys "0x6B73A36E6026DFCA"

开启apt https 传输

sudo apt-get install apt-transport-https
# This repository provides RabbitMQ packages
# See below for supported distribution and component values
deb https://dl.bintray.com/rabbitmq/debian $distribution $component

不得不说国外网站讲解的真是细致,国内快猛操的模式,导致大家干啥都很浮躁,没有这种好的态度,不得不说人家只凭这种态度还是值得我们学习的。(什么狗屁的崇洋媚外,在这点我不得不一吐为快,rabbitMQ你值得拥有,当然也不一概而论,我准备在Linux上放弃Vmare了,ubuntu18搭建centos7的nat(wifi网卡)搞得我图血,网站上一点都搜不到相关的知识,有了解的同学可以留言,网上搜出来的不对题的麻烦不要留言,我玩了一整天,看到一万遍c-p。不然今天应该是centos7+rabbitMq了)。下面的我就不翻译了,大家膜拜一下原汁原味的态度吧。

The next couple of sections discuss what distribution and component values are supported.

Distribution

In order to set up an apt repository that provides the correct package, a few decisions have to be made. One is determining the distribution name. It comes from the Debian or Ubuntu release used:

Erlang/OTP Version

Another is what Erlang/OTP release version should be provisioned. It is possible to track a specific series (e.g. 21.x) or install the most recent version available. The choice determines what Debian repository component will be configured.

Consider the following repository file at /etc/apt/sources.list.d/bintray.erlang.list:

# Installs the latest 21.x version available in the repository.
deb http://dl.bintray.com/rabbitmq-erlang/debian bionic erlang-21.x

It configures apt to install the most recent Erlang 21.x version available in the repository and use packages for Ubuntu 18.04 (Bionic).

For Debian Stretch the file would look like this:

# Installs the latest 21.x version available in the repository.
deb http://dl.bintray.com/rabbitmq-erlang/debian stretch erlang-21.x

To use the most recent 20.x patch release available, switch the component to erlang-20.x:

# Installs the latest 20.x version available in the repository.
deb http://dl.bintray.com/rabbitmq-erlang/debian bionic erlang-20.x

erlang-21.x, erlang-19.x, and erlang-16.x are the components for Erlang 21.x, 19.x and R16B03, respectively.

The erlang component installs the most recent version available:

# Installs the latest version available in the repository.
# Consider using version pinning.
deb http://dl.bintray.com/rabbitmq-erlang/debian bionic erlang

That version may or may not be supported by RabbitMQ, so version pinning is highly recommended.

sudo apt-get update -y
# This is recommended. Metapackages such as erlang and erlang-nox must only be used
# with apt version pinning. They do not pin their dependency versions.
sudo apt-get install -y erlang-base \
                        erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
                        erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
                        erlang-runtime-tools erlang-snmp erlang-ssl \
                        erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

包版本和仓库锁定(apt pinning)感兴趣的同学可以自行google
至此我们已经安装完成了Erlang,what?那MQ呢... heihei,同学你已经一只脚迈向了地球(welcome earth, Allies),欢迎来到MQ的地球

使用apt安装rabbit mq

磨刀不误砍柴工,既然你看了上面的安装过程,下面一样

#!/bin/sh

## Install RabbitMQ signing key
curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -

## Install apt HTTPS transport
sudo apt-get install apt-transport-https

## Add Bintray repositories that provision latest RabbitMQ and Erlang 21.x releases
sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF
deb https://dl.bintray.com/rabbitmq-erlang/debian bionic erlang-21.x
deb https://dl.bintray.com/rabbitmq/debian bionic main
EOF

## Update package indices
sudo apt-get update -y

## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing

再次五体投地原汁原味膜拜网站小哥的态度,颤抖吧 E.T

The next couple of sections discusses what distribution and component values are supported.

Distribution

In order to set up an apt repository that provides the correct package, a few decisions have to be made. One is determining the distribution name. It comes from the Debian or Ubuntu release used:

To add the apt repository to the source list directory (/etc/apt/sources.list.d), use:

>echo "deb https://dl.bintray.com/rabbitmq/debian {distribution} main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list

where {distribution} is the name of the Debian or Ubuntu distribution used (see above).

So, on Ubuntu 18.04 the above command becomes

>echo "deb https://dl.bintray.com/rabbitmq/debian bionic main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list

and on Ubuntu 16.04 it would be

>echo "deb https://dl.bintray.com/rabbitmq/debian xenial main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list

It is possible to list multiple repositories, for example, one that provides RabbitMQ and one that provides Erlang/OTP packages. On Ubuntu 18.04 that can be done by modifying the command in the above example like so:

>sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF
deb https://dl.bintray.com/rabbitmq-erlang/debian bionic erlang-21.x
deb https://dl.bintray.com/rabbitmq/debian bionic main
EOF

and on Ubuntu 16.04 it would be

>sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF
deb https://dl.bintray.com/rabbitmq-erlang/debian xenial erlang-21.x
deb https://dl.bintray.com/rabbitmq/debian xenial main
EOF

Install RabbitMQ Package

After updating the list of apt sources it is necessary to run apt-get update:

>sudo apt-get update -y

Then install the package with

>sudo apt-get install -y rabbitmq-server

(手动安装我已不翻译了)

Manual Installation with Dpkg

In some cases it may easier to download the package directly from GitHub and install it manually using sudo dpkg -i. Below is a download link.

Description Download Signature
.deb for Debian-based Linux (from GitHub) rabbitmq-server_3.7.17-1_all.deb Signature

When installing manually with dpkg, it is necessary to install package dependencies first. dpkg, unlike apt, does not resolve or manage dependencies.

Here's an example that does that, installs wget, downloads the RabbitMQ package and installs it:

# sync package metadata
sudo apt-get update
# install dependencies manually
sudo apt-get -y install socat logrotate init-system-helpers adduser

# download the package
sudo apt-get -y install wget
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.17/rabbitmq-server_3.7.17-1_all.deb

# install the package with dpkg
sudo dpkg -i rabbitmq-server_3.7.17-1_all.deb

rm rabbitmq-server_3.7.17-1_all.deb

Installation via apt repositories on Bintray and Package Cloud is recommended over downloading the package directly and installing via dpkg -i. When the RabbitMQ package is installed manually with dpkg -i the operator is responsible for making sure that all package dependencies are met.

User Privilege Requirements

RabbitMQ Debian package will require sudo privileges to install and manage. In environments where sudo isn't available, consider using the generic binary build instead.

让MQ run 起来

安装时,rabbit mq默认以守护进程启动,并且使用没有权限的用户 rabbitmq
可以使用super user的service命令启动。关闭、和查看rabbitmq-server状态

sudo service rabbitmq-server status[start| stop | restart]

端口获取

rabbitMq节点绑定有个开放的tcp端口,用来接受client端和CLI工具的链接。其他的工具或者进程可能占用或者阻止端口,竟会出现错误。要保证一下的端口可用性,因为Firewalls和SeLinux会屏蔽端口连接。

It is possible to configure RabbitMQ to use different ports and specific network interfac

默认user access

broker会创建一个user为guest,密码为guest。通常没有配置的clients使用这个凭证。但是默认的这些凭证只能从localhost连接broker,所以你需要配置user用于网络上的连接。

See the documentation on access control for information on how to create more users and delete the guest user.

系统限制

生产级别的rabbitMq可能需要系统limit和内核参数调优到允许处理高并发连接和缓冲队列,主要是ulimit -n参数,生产环境可以调到最大的65535,开发环境4096,下面knee down & suck

With systemd (Recent Linux Distributions)

On distributions that use systemd, the OS limits are controlled via a configuration file at /etc/systemd/system/rabbitmq-server.service.d/limits.conf. For example, to set the max open file handle limit (nofile) to 64000:

[Service]
LimitNOFILE=64000

See systemd documentation to learn about the supported limits and other directives.

With Docker

To configure kernel limits for Docker contains, use the "default-ulimits" key in Docker daemon configuration file. The file has to be installed on Docker hosts at /etc/docker/daemon.json:

{
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 64000,
      "Soft": 64000
    }
  }
}

Without systemd (Older Linux Distributions)

The most straightforward way to adjust the per-user limit for RabbitMQ on distributions that do not use systemd is to edit the /etc/default/rabbitmq-server (provided by the RabbitMQ Debian package) or rabbitmq-env.conf to invoke ulimit before the service is started.

>ulimit -S -n 4096

This soft limit cannot go higher than the hard limit (which defaults to 4096 in many distributions). The hard limit can be increased via /etc/security/limits.conf. This also requires enabling the pam_limits.so module and re-login or reboot. Note that limits cannot be changed for running OS processes.

For more information about controlling fs.file-max with sysctl, please refer to the excellent Riak guide on open file limit tuning.

验证系统limit(应该只能验证配置参数,系统参数需要系统里面配置)

rabbitnqctl satus
or 
cat /proc/$rabbitmq_bean_process_pid/limits

See the CLI tools guide to learn more.

Log Files and Management

Server logs can be found under the configurable directory, which usually defaults to /var/log/rabbitmq when RabbitMQ is installed via a Linux package manager.

RABBITMQ_LOG_BASE can be used to override log directory location.

Assuming a systemd-based distribution, system service logs can be inspected using

journalctl --system

which requires superuser privileges. Its output can be filtered to narrow it down to RabbitMQ-specific entries:

sudo journalctl --system | grep rabbitmq

The output will look similar to this:

Dec 26 11:03:04 localhost rabbitmq-server[968]: ##  ##
Dec 26 11:03:04 localhost rabbitmq-server[968]: ##  ##      RabbitMQ 3.7.16\. Copyright (c) 2007-2019 Pivotal Software, Inc.
Dec 26 11:03:04 localhost rabbitmq-server[968]: ##########  Licensed under the MPL.  See http://www.rabbitmq.com/
Dec 26 11:03:04 localhost rabbitmq-server[968]: ######  ##
Dec 26 11:03:04 localhost rabbitmq-server[968]: ##########  Logs: /var/log/rabbitmq/rabbit@localhost.log
Dec 26 11:03:04 localhost rabbitmq-server[968]: /var/log/rabbitmq/rabbit@localhost_upgrade.log
Dec 26 11:03:04 localhost rabbitmq-server[968]: Starting broker...
Dec 26 11:03:05 localhost rabbitmq-server[968]: systemd unit for activation check: "rabbitmq-server.service"
Dec 26 11:03:06 localhost rabbitmq-server[968]: completed with 6 plugins.

Log Rotation

The broker always appends to the log files, so a complete log history is retained.

logrotate is the recommended way of log file rotation and compression. By default, the package will set up logrotate to run weekly on files located in default /var/log/rabbitmq directory. Rotation configuration can be found in /etc/logrotate.d/rabbitmq-server.

rabbitmq 有很多命令行工具

感兴趣的可以自行查阅doc文档

上一篇下一篇

猜你喜欢

热点阅读