RabbitMQ:修订间差异
(→安裝) |
|||
第100行: | 第100行: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo rabbitmqctl set_policy ha-two "^ha\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}' | sudo rabbitmqctl set_policy ha-two "^ha\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}' | ||
</syntaxhighlight> | |||
== 防火牆設定 == | |||
這邊依照官方所有有列出的TCP port資料<ref>{{Cite web |url=https://www.rabbitmq.com/networking.html |title=Networking and RabbitMQ |accessdate=2023-05-17 |language=en}}</ref>: | |||
<syntaxhighlight lang="txt"> | |||
1883,4369,5552,5551,5671,5672,6000-6500,8883,15671,15672,15674,15675,15692,25672,35672-35682,61613,61614 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
2023年5月17日 (三) 13:08的版本
RabbitMQ是一套软件。
需求
在AWS上用t4g.nano
安装(512 MB的内存),会在开机后就马上吃到Swap空间(机器上设定512 MB的Swap),这边建议建议开发环境至少用t4g.micro
,正式环境的内存可以再往上开大。
要注意RabbitMQ预设要求要有40%(0.4
)的内存是空闲的,不然会开始罢工。考虑到这点,建议在正式环境上可以多保留一些内存,或是将0.4
调小一点。
安装
RabbitMQ的安装会跨越好几个APT Repository:
sudo sudo apt-key adv --keyserver hkps://keys.openpgp.org --recv-keys 0x0A9AF2115F4687BD29803A206B73A36E6026DFCA; sudo add-apt-repository -y ppa:rabbitmq/rabbitmq-erlang; 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"}'
防火墙设定
这边依照官方所有有列出的TCP port资料[1]:
1883,4369,5552,5551,5671,5672,6000-6500,8883,15671,15672,15674,15675,15692,25672,35672-35682,61613,61614
外部链接
- 官方网站 (英文)
- ↑ Networking and RabbitMQ. [2023-05-17] (English).