not possible to share networks between nodegroups

Bug #1473047 reported by Wojciech Sronek
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Fuel for OpenStack
Fix Released
High
Aleksey Kasatkin
7.0.x
Won't Fix
Medium
Fuel Python (Deprecated)

Bug Description

In a deployment with multiple network segments (https://docs.mirantis.com/openstack/fuel/fuel-6.0/reference-architecture.html#mcn-arch) there is no way to assign node interfaces ((private), public, management, storage, and fuelweb_admin) to different Node Groups.

Use cases:
1) (Most probable) Customer has two different network infrastructures (the one with multiple L2 domains, the other with single L2 to which admin or storage network is connected). In that case some of interfaces needs to belong to one Node Group while the others to different Node Group.

2) (Less probable) Customer connects specific node interface to different Node Group.

Secondly, there should be a possibility to assign whatever number of Node Groups to one, particular node.

[FUEL_SERVER ~]# cat /etc/fuel/version.yaml
VERSION:
  feature_groups:
    - mirantis
    - experimental
  production: "docker"
  release: "6.1"
  openstack_version: "2014.2.2-6.1"
  api: "1.0"
  build_number: "521"
  build_id: "2015-06-08_06-13-27"
  nailgun_sha: "4340d55c19029394cd5610b0e0f56d6cb8cb661b"
  python-fuelclient_sha: "4fc55db0265bbf39c369df398b9dc7d6469ba13b"
  astute_sha: "7766818f079881e2dbeedb34e1f67e517ed7d479"
  fuel-library_sha: "f43c2ae1af3b493ee0e7810eab7bb7b50c986c7d"
  fuel-ostf_sha: "7c938648a246e0311d05e2372ff43ef1eb2e2761"
  fuelmain_sha: "bcc909ffc5dd5156ba54cae348b6a07c1b607b24"

description: updated
Revision history for this message
Aleksandr Didenko (adidenko) wrote :

> there should be a possibility to assign whatever number of Node Groups to one, particular node.
Unfortunately it's not possible.

Please check if the following solution covers your use cases and let us know so we could link this bug to appropriate BP:
https://github.com/stackforge/fuel-specs/blob/master/specs/7.0/networking-templates.rst

Changed in fuel:
status: New → Incomplete
Changed in fuel:
assignee: nobody → Fuel Python Team (fuel-python)
Revision history for this message
Andrew Woodward (xarses) wrote :

Added rmoe, Please see if we can address this in part of templates, or if this has to be cleaned up in the follow up for nodegroups.

My thought is that it might work with the flexible network assignment

Changed in fuel:
status: Incomplete → Confirmed
importance: Undecided → High
assignee: Fuel Python Team (fuel-python) → Ryan Moe (rmoe)
importance: High → Medium
milestone: none → next
Revision history for this message
Wojciech Sronek (wsronek) wrote :

No, network templates doesn't cover my use cases. As far as I understand network templates allows to:
- specify number of interfaces that will be used by nodes (remove limitation on 5 interfaces to each)
- assign openstack services listeners to interfaces

The specification doesn't cover assignment of interfaces to dedicated IP subnets. Still 1:1 assignment of node group to node exists.

I attached a drawing that shows current scenario and proposals.

1) The "Interface cluster" name was imaginary.
2) The customer would like to have the "Customer scenario" (currently in LAB).
3) Providing "Interface cluster" instead of Node groups cause that we will be able to connect node to different network infrastructures, i.e.
- Admin to out-of-band management (pure L2 extended to whole DC)
- Storage to dedicated network infrastructure
5) THE BEST DESIGN WOULD BE TO RESIGN FROM NODE GROUPS OR "INTERFACE CLUSTERS" AND ALLOW TO FLEXIBLE ASSIGN NETWORKS TO NODE INTERFACES. IT WILL REQUIRE WELL-PREPARED GUI.

Such feature is very important if we would like to provide Fuel flexibility in network setup.

Revision history for this message
Wojciech Sronek (wsronek) wrote :

My opinion is that we need to provide the best flexibility to configure network as it possible and deliver some kind of node groups/interface cluster (whatever) via GUI as an abstraction. We shouldn't it include it in YAML files.

Revision history for this message
Andrew Woodward (xarses) wrote :

Wojciech,

Please go over the spec for templates again. I'm quite convinced it does/should cover this.

Revision history for this message
Aleksey Kasatkin (alekseyk-ru) wrote :

Wojciech,

Please explain how are the networks
Management - B1 - B2
differ from
Management - B - F - I

Now user can create different networks in each node group , including Admin networks.
Template, in addition, allows to create absolutely different sets of networks for every node group.

Revision history for this message
Wojciech Sronek (wsronek) wrote :

Each node group has assigned a particular set of networks. Each node can be assigned to one particular node group. Assume the following situation where you have Node 1 in node group A and Node 2 in node group B.

Node group A has following subnets
Admin - net A1 - 10.0.1.0/24
Mgmt - net B1- 10.0.2.0/24
Private - net C1- 10.0.3.0/24
Public - net D1- 10.0.4.0/24
Storage - net E1- 10.0.5.0/24

Node group B has following subnets
Admin - net A2 - 172.16.1.0/24
Mgmt - net B2 - 172.16.2.0/24
Private - net C2 - 172.16.3.0/24
Public - net D2 - 172.16.4.0/24
Storage - net E2 - 172.16.5.0/24

What do you have to do to achieve below scenario
Node 1
Admin - net A1 - 10.0.1.10
Mgmt - net B1- 10.0.2.10
Private - net C1- 10.0.3.10
Public - net D1- 10.0.4.10
Storage - net E1- 10.0.5.10

Node 2
Admin - net A2 - 172.16.1.10
Mgmt - net B2 - 172.16.2.10
Private - net C2 - 172.16.3.10
Public - net D2 - 172.16.4.10
Storage - net E1 - 10.0.5.11

How will Fuel manage IP addresses for Storage network E1?

Can we use the same subnets for different node groups and have a certainty that IP addresses from this subnet will be properly managed across different node groups?

Revision history for this message
Wojciech Sronek (wsronek) wrote :

Aleksey, can you answer above questions?

tags: added: feature-nodegroup module-networks
Revision history for this message
Aleksey Kasatkin (alekseyk-ru) wrote :

Wojciech, sorry for delay.

It's proposed here: https://review.openstack.org/115340 to share networks between node groups. So, some networks in group A and group B can be shared (like Storage) and other ones are not (like others in your description).

It will look like just one network E is being used in both node groups not E1 + E2.

Thus, if all the nodes from particular node groups have the same requirements for networks it should work. Actually, it is supposed that nodes are distributed among node groups on the base of network requirements. So, if nodes have different network requirements they should be in different node groups. Does this work for you?

Changed in fuel:
assignee: Ryan Moe (rmoe) → Fuel Python Team (fuel-python)
milestone: next → 8.0
summary: - not possible to assign two different nodegroups to one node
+ not possible to share networks between nodegroups
Dmitry Pyzhov (dpyzhov)
tags: added: covered-by-bp
Dmitry Pyzhov (dpyzhov)
tags: added: area-python
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to fuel-web (master)

Fix proposed to branch: master
Review: https://review.openstack.org/243766

Changed in fuel:
assignee: Fuel Python Team (fuel-python) → Aleksey Kasatkin (alekseyk-ru)
status: Confirmed → In Progress
Changed in fuel:
assignee: Aleksey Kasatkin (alekseyk-ru) → Ryan Moe (rmoe)
Changed in fuel:
assignee: Ryan Moe (rmoe) → Aleksey Kasatkin (alekseyk-ru)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to fuel-web (master)

Reviewed: https://review.openstack.org/243766
Committed: https://git.openstack.org/cgit/openstack/fuel-web/commit/?id=2eb30ed70c2e4ede9b2640155448534e4a24230b
Submitter: Jenkins
Branch: master

commit 2eb30ed70c2e4ede9b2640155448534e4a24230b
Author: Aleksey Kasatkin <email address hidden>
Date: Tue Nov 10 20:24:44 2015 +0200

    Allow VLAN IDs intersection

    Remove old validation of VLAN IDs intersection and add new one.
    Now VLAN IDs cannot be equal within any particular NIC (or bond)
    but they can be equal for different networks in general.
    This new validation covers the case when network template is not in use.

    Partial-Bug: #1473047

    Change-Id: I27a8326edc00acc6b95ee51fce203527e82e47d7
    Blueprint: nodegroups-share-network-parameters

Changed in fuel:
importance: Medium → High
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to fuel-web (master)

Fix proposed to branch: master
Review: https://review.openstack.org/247731

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to fuel-web (master)

Reviewed: https://review.openstack.org/247731
Committed: https://git.openstack.org/cgit/openstack/fuel-web/commit/?id=482743e3e7df0e95e4dae728a872e9233bb72298
Submitter: Jenkins
Branch: master

commit 482743e3e7df0e95e4dae728a872e9233bb72298
Author: Aleksey Kasatkin <email address hidden>
Date: Thu Nov 19 20:33:55 2015 +0200

    Allow sharing of networks between nodegroups

    Networks are considered as shared if they are in different nodegroups,
    have the same Name, CIDR and Gateway values. No routes are geneated between
    shared segments of networks.

    Partial-Bug: #1484008
    Partial-Bug: #1473047

    Change-Id: Ifeaffd76d52a46d95918527c62c302ad356d2fe5
    Blueprint: nodegroups-share-network-parameters

Changed in fuel:
status: In Progress → Fix Committed
Revision history for this message
Maksym Strukov (unbelll) wrote :
Changed in fuel:
status: Fix Committed → Fix Released
tags: added: wontfix-feature
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.