Спробуйте скористатися плагіном rabbitmq / rabbitmq-autocluster :
Плагін RabbitMQ, який кластеризує вузли автоматично, використовуючи ряд механізмів виявлення однолітків:
- Консул ,
- etcd2
- Записи DNS A
- Теги AWS EC2
- Групи автоматичного масштабування AWS
Для отримання цієї налаштування потрібно підключити трохи конфігурації, зокрема встановлення політики IAM та додавання тегів EC2 до випадків, які ви хочете стати учасниками вашого кластеру.
Якби ви використовували групи автоматичного масштабування AWS, тоді ви додали б таке rabbitmq.config
:
[
{rabbit, [ ... ]},
{autocluster, [
{backend, aws},
{aws_autoscaling, true},
{aws_ec2_region, "us-west-2"}
]}
].
Якщо ви не використовуєте групи автоматичного масштабування AWS, ви все одно можете досягти бажаного результату, використовуючи теги на своїх екземплярах EC2:
[
{rabbit, [ ... ]},
{autocluster, [
{backend, aws},
{aws_ec2_tags, [{"region", "us-west-2"}, {"service", "rabbitmq"}]},
{aws_ec2_region, "us-east-1"},
{aws_access_key, "..."},
{aws_secret_key, "..."}
]}
].
Зважаючи на все це, я настійно рекомендую використовувати Consul від HashiCorp в якості механізму виявлення послуг, з часом ви отримуєте значно більшу гнучкість у плані роз’єднання частин вашої системи один від одного.