RabbitMQ:修订间差异

来自Gea-Suan Lin's Wiki
跳到导航 跳到搜索
此页面具有访问限制。如果您看见此消息,则说明您没有权限访问此页面。
→‎LDAP
第91行: 第91行:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
sudo rabbitmqctl stop_app
sudo rabbitmqctl stop_app; sudo rabbitmqctl join_cluster rabbit@rabbitmq-1-dev; sudo rabbitmqctl start_app
sudo rabbitmqctl join_cluster rabbit@rabbitmq-1-dev
sudo rabbitmqctl start_app
</syntaxhighlight>
</syntaxhighlight>



2021年7月28日 (三) 00:14的版本

RabbitMQ是一套软体。

需求

AWS上用t3a.nano安装(512 MB的记忆体),会在开机后就马上吃到Swap空间(机器上设定512 MB的Swap),这边建议建议开发环境至少用t3a.micro,正式环境的记忆体可以再往上开大。

要注意RabbitMQ预设要求要有40%(0.4)的记忆体是空闲的,不然会开始罢工。考虑到这点,建议在正式环境上可以多保留一些记忆体,或是将0.4调小一点。

安装

RabbitMQ的安装会跨越好几个APT Repository:

sudo sudo apt-key adv --keyserver hkps://keys.openpgp.org --recv-keys 0x0A9AF2115F4687BD29803A206B73A36E6026DFCA; sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F77F1EDA57EBB1CC; curl -1sLf 'https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey' | sudo apt-key add -; sudo apt update; sudo apt install -y rabbitmq-server

基本设定

通常我们会先打开Web管理界面:

sudo rabbitmq-plugins enable rabbitmq_management

登入的界面是http://x.x.x.x:15672/,预设的帐号是guest,密码也是guest,虽然叫做guest,但是这组帐号是管理员。

另外要注意的是,预设的guest帐号只能从本机localhost连线登入,如果要开放远端可以连的话,可以透过/etc/rabbitmq/rabbitmq.conf设定修改(这个档案有可能不存在,需要自己建立):

loopback_users = none

登入后建议先建立admin帐号,并且移除guest帐号(这个名称太雷)或是移除权限。

LDAP

先安装对应的plugin:

sudo apt-get install -y erlang-eldap; sudo rabbitmq-plugins enable rabbitmq_auth_backend_ldap

/etc/rabbitmq/rabbitmq.conf内设定:

#
auth_backends.1 = ldap
auth_backends.2 = internal
auth_ldap.servers.1 = ldap.example.com
auth_ldap.dn_lookup_attribute = uid
auth_ldap.dn_lookup_base = dc=example,dc=com
auth_ldap.user_dn_pattern = uid=${username},ou=People,dc=example,dc=com

另外在/etc/rabbitmq/advanced.config内设定:

[{rabbitmq_auth_backend_ldap,[
  {tag_queries, [{administrator, {in_group, "cn=rabbitmqadmin,ou=Groups,dc=example,dc=com", "member"}},
                 {management, {in_group, "cn=rabbitmqadmin,ou=Groups,dc=example,dc=com", "member"}}]}
]}].

Cluster设定

建议至少三台机器,建议会是奇数(考虑到quorum)。

.erlang.cookie

先把rabbitmq-1-dev上的/var/lib/rabbitmq/.erlang.cookie复制到其他台。

DNS

每一台机器的/etc/hosts内要把其他机器的位置都设定进去,这边有这三台机器:

  • rabbitmq-1-dev
  • rabbitmq-2-dev
  • rabbitmq-3-dev

set_cluster_name

在rabbitmq-1-dev上把Cluster改名成rabbitmq-dev,预设的名称会是主机的名称(在这边的例子就是rabbitmq-1-dev):

sudo rabbitmqctl set_cluster_name rabbitmq-dev

join_cluster

在rabbitmq-2-dev与rabbitmq-3-dev上加入:

sudo rabbitmqctl stop_app; sudo rabbitmqctl join_cluster rabbit@rabbitmq-1-dev; sudo rabbitmqctl start_app

set_policy

在任何一台机器上设定Policy ha-two,设定会同步到其他机器上:

sudo rabbitmqctl set_policy ha-two "^ha\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'

外部连结