Добрый день!
Да, ваша задача вполне реализуема. Для настройки изолированных виртуальных локальных сетей для разных групп виртуальных машин, вы можете использовать Open vSwitch вместе с VLAN или отдельными виртуальными сетями (например, с использованием tap-устройств). Давайте рассмотрим оба подхода:
### Подход с VLAN
1. **Создание VLAN**: Выберите уникальные VLAN ID для каждой группы. Например:
- Группа 1: VLAN 10 (192.168.2.0/24)
- Группа 2: VLAN 20 (192.168.3.0/24)
2. **Настройка Open vSwitch**: Создайте виртуальные порты с соответствующими VLAN ID. Например:
```bash
ovs-vsctl add-br br-vlan10
ovs-vsctl set bridge br-vlan10 vlan_mode=native-tagged
ovs-vsctl add-port br-vlan10 vm_port1 tag=10
```
3. **Конфигурация DHCP**: Настройте DHCP-сервер для каждой из VLAN, чтобы выдавать IP-адреса в соответствующих подсетях:
- Для VLAN 10 (группа 1) — 192.168.2.0/24
- Для VLAN 20 (группа 2) — 192.168.3.0/24
4. **Изоляция сетей**: Поскольку VLAN обеспечивает уровень изоляции, виртуальные машины в одной VLAN не смогут общаться с виртуальными машинами в другой VLAN.
5. **Доступ к хост-сети**: Для доступа к хост-сети вам нужно будет настроить маршрутизатор или использовать анти-обратный NAT (если Open vSwitch находится на хосте) для достижения этих виртуальных машин из хост-сети. Альтернативно, вы можете создать дополнительный интерфейс на хосте с IP в одной из подсетей и настроить маршруты.
### Подход без VLAN
Если вы не хотите использовать VLAN, вы можете создать отдельные виртуальные сети с помощью Open vSwitch:
1. **Создание виртуальных сетей**:
```bash
ovs-vsctl add-br br-group1
ovs-vsctl add-br br-group2
```
2. **Добавление портов в мосты**:
Для каждой виртуальной машины добавьте её к нужному мосту:
```bash
ovs-vsctl add-port br-group1 vm1
ovs-vsctl add-port br-group1 db1
ovs-vsctl add-port br-group1 msg_broker
ovs-vsctl add-port br-group2 lb1
ovs-vsctl add-port br-group2 vm2
ovs-vsctl add-port br-group2 db2
```
3. **Конфигурация DHCP**: Настройте отдельные DHCP-серверы для каждой из сетей, аналогично описанному выше.
4. **Маршрутизация для доступа к хост-сети**: Для доступа к хост-сети вам нужно будет настроить некоторые маршруты или использовать NAT.
### Использование NAT для доступа наружу
Если виртуальные машины в группах должны иметь возможность выходить в интернет или к хост-сети, вам придется потратить немного времени на настройку NAT на хосте. Обычно это делается с помощью iptables:
```bash
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j MASQUERADE
```
### Заключение
Таким образом, вы можете выбрать подходящий метод реализации изоляции сетей в зависимости от ваших нужд. VLAN часто предпочтительнее из-за большей гибкости и управления, но вы можете использовать и второй метод, если у вас есть ограничения по оборудованию или программному обеспечению. Не забудьте также установить правильные правила брандмауэра, если это необходимо.