[Gluster-devel] An Update on GlusterD-2.0

2016-09-22 Thread Kaushal M
The first preview/dev release of GlusterD-2.0 is available now. A
prebuilt binary is available for download from the release-page[1].

This is just a preview of what has been happening in GD2, to give
users a taste of how GD2 is evolving.

GD2 can now form a cluster, list peers, create/delete,(psuedo)
start/stop and list volumes. Most of these will undergo changes and
refined as we progress.

More information on how to test this release can be found on the release page.

We'll providing periodic (hopefully fortnightly) updates on the
changes happening in GD2 from now on.

We'll also be providing periodic dev builds for people to test.
Currently builds are only available for Linux on amd64. Vagrant and
docker releases are planned to make it easier to test GD2.

Thanks,
Kaushal


[1] https://github.com/gluster/glusterd2/releases/tag/v4.0dev-1
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://www.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] An update on GlusterD-2.0

2015-06-25 Thread Luis Pabon
Kaushal, 
  This is really cool stuff! I think Heketi will provide the IVC service 
Glusterd-2.0 requires. I also look forward to working with you and KP if you 
guys have the time (and anyone else who want to help, for that matter).  Just 
letting you know, that at least until October, Heketi will be focused on 
providing a solution for Manila and Kubernetes as the priority.  There may be 
other features that Glusterd-2.0 requires which may have to wait, but I think 
it would be great to participate and get used to how Heketi works.  Currently I 
am trying to finalize the API, and I will be sending a follow up email 
requesting a review.  Also, like Deepak pointed out, Heketi will need to deal 
with GlusterFS Certificates, somehow.  That is still TBD.

I look forward to working with you guys.

- Luis

- Original Message -
From: "Kaushal M" 
To: "Gluster Devel" 
Sent: Wednesday, June 17, 2015 11:05:14 AM
Subject: [Gluster-devel] An update on GlusterD-2.0

At the Gluster Summit, everyone agreed that GlusterD should be the
first component to be targeted for GlusterFS-4.0. We had good
discussions on what GlusterD lacks currently and what is required for
GlusterD-2.0. KP and I had promised to send an update to mailing list
summarizing the discussions, and this is it.

Along with the summary, we'll also be discussing our plans for Manila
integration and how we are planning to do it with GlusterD-2.0.

## Gluster Summit Summary
In the summit, KP and I presented a talk titled *GLUSTERD NEXT GEN
OR: HOW WE CAN STOP BEING A ROADBLOCK AND INSTEAD BECOME THE ROAD TO
SCALABILITY*. The slides can be viewed at [1][1]. There is no video
recording of it unfortunately.

The summary of the presentation is below.

### Problems
GlusterD, as it is currently, is not scalable which will prevent
GlusterFS as whole from scaling. The scaling issues can be classified
into,
- Node scalability
- Maintenance scalability
- Integration scalability
- Contribution scalability

 Node scalability
This is the general scalability we all think about, scale in terms of
node/machine/clients. GlusterD scalability is help back in this
because of the store, transaction and synchronization mechanisms used
in GlusterD.

 Maintenance scalability
Maintenance scalability is to with the problems we as GlusterD
maintainers faced. This is mainly related to the huge, monolithic code
base of the current GlusterD, which makes splitting of maintenance and
ownership tasks hard.

 Integration scalability
Integration scalability can split into internal and external integration.
Internal integration is the integration dealing with new features
being added to GlusterFS. Every new feature being added needs to touch
GlusterD or CLI in some way. This has generally been done with
copy/paste coding which has added to the maintenence overhead.
External integration is the integration of Gluster with other projects
or other projects with Gluster. This is hurt due to the
non-availability of a proper API for GlusterD operations. All
interaction with GlusterD currently happens only via the CLI. And the
output we provide is generally inconsistent to be programatically
parsed.

 Contribution scalability
Getting new contributors for GlusterD is hard. New contributors are
put off because GlusterD is hard to understand, and because there
isn't enough documentation.


So GlusterD-2.0 will need to
- be scalable to 1000s of nodes
- have lower maintenance costs
- enable better external and internal integrations
- make it easier for newer contributors

### Design characteristics for GlusterD-2.0
For GlusterD-2.0 to satisfy the above listed requirements and solve
the problems listed before, it should have the following
characteristics.

 Centralized store
This should help with our numbers scalability issues. GlusterD-2.0
will be built around a centralized store. This means, instead of the
GlusterD volume and peer information being persisted on all nodes, it
will be stored only on a subset of the nodes in a trusted storage
pool.

We are looking at solutions like etcd and consul, both of which
provide a distributed key/value store (and some more useful features
on top), to provide the centralized store. The transaction mechanism
for Gluster operations will be built around this centralized store.

Moving to an external store provider and a transaction framework built
around it will reduce a lot of the complexity in GlusterD.

 Plugins
This mainly for the maintainability and internal integration aspects.
GlusterD-2.0 will have a plug-gable, modular design. We expect all the
commands of GlusterD to be implemented as plugins. Certain other parts
of GlusterD, including things like volgen, volume-set, rest api, etc.
This will allow new features to be integrated in to GlusterD easily.
The code for these plugins is expected to live with the feature, and
not in GlusterD.

Doing a plugin design requires the defining of well defined plug

Re: [Gluster-devel] An update on GlusterD-2.0

2015-06-25 Thread Deepak Shetty
On Thu, Jun 25, 2015 at 1:22 PM, Kaushal M  wrote:

> > One other design characteristic I can think of is to have GlusterD-2.0
> > be able to make best use of Nodes based on the Node topology, not sure
> > if this is covered by any other feature below ?
> >
> > IOW, admin should be able to provide a hierarchy of how nodes are
> > provisioned
> > (rack, site, zone, region, geo etc) and glusterd should use this info
> while
> > provisioning bricks for volume creation
> >
>
> The intelligent volume creation support that I mention later is nearly
> this, without the additional markers of rack, site etc. For an initial
> implementation, all we wanted was a way list available space, without
> any special markers, and use this list to create volumes.
>
> The design characteristics I wrote about, are mainly with respect to
> how we want the internal frameworks for GlusterD-2.0 to be. These
> frameworks will be the ones which will be used to implement other
> feature requirements, like volume creation.
>

IMHO i feel this should be a design char as in "Node Topology Awareness"
I know this can be implemented on top of glusterd, but having this as part
of the design ensures we don't do something that won't be then extensible
as needed for glusterd to be topology aware.


>
> > I have 2 things to say here :
> >
> > 1) Manila uses GlusterFS SSL auth mode, so is there any discussion
> happening
> > around adding support in GlusterD-2.0 for managing SSL certificates ?
> >
> > For eg: Other (eg Netapp) storage arrays do provide basic digital cert
> mgmt
> > support for server and client auth.
> >
> > I feel it would be good to have glusterd provide support  to generate,
> > install, manage
> > self-signed and/or CA signed digital certs.
> >
> > This will not just help Manila usecase, but also help GlusterFS provide a
> > complete
> > solution for digital cert management which will aid the SSL auth support
> > feature of GlusterFS
> >
> > In fact, this can be done in a modular way where in the default implm
> will
> > be that of GlusterD
> > cert module, but optionally one can use openstack Barbican service too
> as a
> > cert mgmt service
>
> This one management feature we need add to out list.
>
> >
> > 2) In the manila community there was some intense discussion on the
> > definition of multi-tenancy
> > when applied to storage and network level multi-tenancy was voted as
> being
> > very important in
> > Manila cloud usecase. Do we have any thoughts on how GlusterD-2.0 /
> > GlusterFS-4.0 can
> > look at providing tenant separation at network layer ?
>
> This is a goal for GlusterFS-4.0 and should be discussed along with
> that. Our main priority for GlusterD-2.0 is to build a good management
> framework first and implement the minimum set of functionality
> required to manage a cluster. This will be the base for building the
> other features of GlusterFS-4.0, like network multi-tenancy.
>

GlusterFS-4.0 will have this from the perspetive of providing ability
to serve shares in a private/segmented network. But i think GlusterD
should have the ability to provision/manage the private network/segmentation
and prvoide this network ID ( say ) to GlusterFS as part of volume creation
flow.

Other than that, you also mentioned as part of REST API that
GlusterD should provide ability to query the cluster size, i guess we also
need ability to query the volume size too (currently  client needs to mount
, do df -h and get the free/used size, this should be part of REST API) as i
see that it will be helpful in Manila usecase

thanx,
deepak


>
> >
> > thanx,
> > deepak
> >
>
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://www.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] An update on GlusterD-2.0

2015-06-25 Thread Kaushal M
> One other design characteristic I can think of is to have GlusterD-2.0
> be able to make best use of Nodes based on the Node topology, not sure
> if this is covered by any other feature below ?
>
> IOW, admin should be able to provide a hierarchy of how nodes are
> provisioned
> (rack, site, zone, region, geo etc) and glusterd should use this info while
> provisioning bricks for volume creation
>

The intelligent volume creation support that I mention later is nearly
this, without the additional markers of rack, site etc. For an initial
implementation, all we wanted was a way list available space, without
any special markers, and use this list to create volumes.

The design characteristics I wrote about, are mainly with respect to
how we want the internal frameworks for GlusterD-2.0 to be. These
frameworks will be the ones which will be used to implement other
feature requirements, like volume creation.

> I have 2 things to say here :
>
> 1) Manila uses GlusterFS SSL auth mode, so is there any discussion happening
> around adding support in GlusterD-2.0 for managing SSL certificates ?
>
> For eg: Other (eg Netapp) storage arrays do provide basic digital cert mgmt
> support for server and client auth.
>
> I feel it would be good to have glusterd provide support  to generate,
> install, manage
> self-signed and/or CA signed digital certs.
>
> This will not just help Manila usecase, but also help GlusterFS provide a
> complete
> solution for digital cert management which will aid the SSL auth support
> feature of GlusterFS
>
> In fact, this can be done in a modular way where in the default implm will
> be that of GlusterD
> cert module, but optionally one can use openstack Barbican service too as a
> cert mgmt service

This one management feature we need add to out list.

>
> 2) In the manila community there was some intense discussion on the
> definition of multi-tenancy
> when applied to storage and network level multi-tenancy was voted as being
> very important in
> Manila cloud usecase. Do we have any thoughts on how GlusterD-2.0 /
> GlusterFS-4.0 can
> look at providing tenant separation at network layer ?

This is a goal for GlusterFS-4.0 and should be discussed along with
that. Our main priority for GlusterD-2.0 is to build a good management
framework first and implement the minimum set of functionality
required to manage a cluster. This will be the base for building the
other features of GlusterFS-4.0, like network multi-tenancy.

>
> thanx,
> deepak
>
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://www.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] An update on GlusterD-2.0

2015-06-25 Thread Deepak Shetty
On Wed, Jun 17, 2015 at 8:35 PM, Kaushal M  wrote:

> At the Gluster Summit, everyone agreed that GlusterD should be the
> first component to be targeted for GlusterFS-4.0. We had good
> discussions on what GlusterD lacks currently and what is required for
> GlusterD-2.0. KP and I had promised to send an update to mailing list
> summarizing the discussions, and this is it.
>
> Along with the summary, we'll also be discussing our plans for Manila
> integration and how we are planning to do it with GlusterD-2.0.
>
> ## Gluster Summit Summary
> In the summit, KP and I presented a talk titled *GLUSTERD NEXT GEN
> OR: HOW WE CAN STOP BEING A ROADBLOCK AND INSTEAD BECOME THE ROAD TO
> SCALABILITY*. The slides can be viewed at [1][1]. There is no video
> recording of it unfortunately.
>
> The summary of the presentation is below.
>
> ### Problems
> GlusterD, as it is currently, is not scalable which will prevent
> GlusterFS as whole from scaling. The scaling issues can be classified
> into,
> - Node scalability
> - Maintenance scalability
> - Integration scalability
> - Contribution scalability
>
>  Node scalability
> This is the general scalability we all think about, scale in terms of
> node/machine/clients. GlusterD scalability is help back in this
> because of the store, transaction and synchronization mechanisms used
> in GlusterD.
>
>  Maintenance scalability
> Maintenance scalability is to with the problems we as GlusterD
> maintainers faced. This is mainly related to the huge, monolithic code
> base of the current GlusterD, which makes splitting of maintenance and
> ownership tasks hard.
>
>  Integration scalability
> Integration scalability can split into internal and external integration.
> Internal integration is the integration dealing with new features
> being added to GlusterFS. Every new feature being added needs to touch
> GlusterD or CLI in some way. This has generally been done with
> copy/paste coding which has added to the maintenence overhead.
> External integration is the integration of Gluster with other projects
> or other projects with Gluster. This is hurt due to the
> non-availability of a proper API for GlusterD operations. All
> interaction with GlusterD currently happens only via the CLI. And the
> output we provide is generally inconsistent to be programatically
> parsed.
>
>  Contribution scalability
> Getting new contributors for GlusterD is hard. New contributors are
> put off because GlusterD is hard to understand, and because there
> isn't enough documentation.
>
>
> So GlusterD-2.0 will need to
> - be scalable to 1000s of nodes
> - have lower maintenance costs
> - enable better external and internal integrations
> - make it easier for newer contributors
>
> ### Design characteristics for GlusterD-2.0
> For GlusterD-2.0 to satisfy the above listed requirements and solve
> the problems listed before, it should have the following
> characteristics.
>

One other design characteristic I can think of is to have GlusterD-2.0
be able to make best use of Nodes based on the Node topology, not sure
if this is covered by any other feature below ?

IOW, admin should be able to provide a hierarchy of how nodes are
provisioned
(rack, site, zone, region, geo etc) and glusterd should use this info while
provisioning bricks for volume creation



>  Centralized store
> This should help with our numbers scalability issues. GlusterD-2.0
> will be built around a centralized store. This means, instead of the
> GlusterD volume and peer information being persisted on all nodes, it
> will be stored only on a subset of the nodes in a trusted storage
> pool.
>
> We are looking at solutions like etcd and consul, both of which
> provide a distributed key/value store (and some more useful features
> on top), to provide the centralized store. The transaction mechanism
> for Gluster operations will be built around this centralized store.
>
> Moving to an external store provider and a transaction framework built
> around it will reduce a lot of the complexity in GlusterD.
>
>  Plugins
> This mainly for the maintainability and internal integration aspects.
> GlusterD-2.0 will have a plug-gable, modular design. We expect all the
> commands of GlusterD to be implemented as plugins. Certain other parts
> of GlusterD, including things like volgen, volume-set, rest api, etc.
> This will allow new features to be integrated in to GlusterD easily.
> The code for these plugins is expected to live with the feature, and
> not in GlusterD.
>
> Doing a plugin design requires the defining of well defined plugin
> interfaces to not just plug into GlusterD-2.0, but also interact with
> GlusterD well. I'll be posting a document on this to the mailing list
> soon.
>
> The GlusterD maintainers/team will be doing the implementation of a
> few core commands required including volume create, start, stop,
> delete, expand, shrink and set/reset options.
>
>  Rest API
> To provide better a better method for

[Gluster-devel] An update on GlusterD-2.0

2015-06-17 Thread Kaushal M
At the Gluster Summit, everyone agreed that GlusterD should be the
first component to be targeted for GlusterFS-4.0. We had good
discussions on what GlusterD lacks currently and what is required for
GlusterD-2.0. KP and I had promised to send an update to mailing list
summarizing the discussions, and this is it.

Along with the summary, we'll also be discussing our plans for Manila
integration and how we are planning to do it with GlusterD-2.0.

## Gluster Summit Summary
In the summit, KP and I presented a talk titled *GLUSTERD NEXT GEN
OR: HOW WE CAN STOP BEING A ROADBLOCK AND INSTEAD BECOME THE ROAD TO
SCALABILITY*. The slides can be viewed at [1][1]. There is no video
recording of it unfortunately.

The summary of the presentation is below.

### Problems
GlusterD, as it is currently, is not scalable which will prevent
GlusterFS as whole from scaling. The scaling issues can be classified
into,
- Node scalability
- Maintenance scalability
- Integration scalability
- Contribution scalability

 Node scalability
This is the general scalability we all think about, scale in terms of
node/machine/clients. GlusterD scalability is help back in this
because of the store, transaction and synchronization mechanisms used
in GlusterD.

 Maintenance scalability
Maintenance scalability is to with the problems we as GlusterD
maintainers faced. This is mainly related to the huge, monolithic code
base of the current GlusterD, which makes splitting of maintenance and
ownership tasks hard.

 Integration scalability
Integration scalability can split into internal and external integration.
Internal integration is the integration dealing with new features
being added to GlusterFS. Every new feature being added needs to touch
GlusterD or CLI in some way. This has generally been done with
copy/paste coding which has added to the maintenence overhead.
External integration is the integration of Gluster with other projects
or other projects with Gluster. This is hurt due to the
non-availability of a proper API for GlusterD operations. All
interaction with GlusterD currently happens only via the CLI. And the
output we provide is generally inconsistent to be programatically
parsed.

 Contribution scalability
Getting new contributors for GlusterD is hard. New contributors are
put off because GlusterD is hard to understand, and because there
isn't enough documentation.


So GlusterD-2.0 will need to
- be scalable to 1000s of nodes
- have lower maintenance costs
- enable better external and internal integrations
- make it easier for newer contributors

### Design characteristics for GlusterD-2.0
For GlusterD-2.0 to satisfy the above listed requirements and solve
the problems listed before, it should have the following
characteristics.

 Centralized store
This should help with our numbers scalability issues. GlusterD-2.0
will be built around a centralized store. This means, instead of the
GlusterD volume and peer information being persisted on all nodes, it
will be stored only on a subset of the nodes in a trusted storage
pool.

We are looking at solutions like etcd and consul, both of which
provide a distributed key/value store (and some more useful features
on top), to provide the centralized store. The transaction mechanism
for Gluster operations will be built around this centralized store.

Moving to an external store provider and a transaction framework built
around it will reduce a lot of the complexity in GlusterD.

 Plugins
This mainly for the maintainability and internal integration aspects.
GlusterD-2.0 will have a plug-gable, modular design. We expect all the
commands of GlusterD to be implemented as plugins. Certain other parts
of GlusterD, including things like volgen, volume-set, rest api, etc.
This will allow new features to be integrated in to GlusterD easily.
The code for these plugins is expected to live with the feature, and
not in GlusterD.

Doing a plugin design requires the defining of well defined plugin
interfaces to not just plug into GlusterD-2.0, but also interact with
GlusterD well. I'll be posting a document on this to the mailing list
soon.

The GlusterD maintainers/team will be doing the implementation of a
few core commands required including volume create, start, stop,
delete, expand, shrink and set/reset options.

 Rest API
To provide better a better method for external projects to hook on to.
GlusterD-2.0 will provide a HTTP REST API, with JSON output and proper
API versioning. We will be looking for inspiration from other storage
solutions to define the APIs presented to the users and admins.

 Logging
To help with debuggability, GlusterD-2.0 will provide better logs that
should allow easier tracking of operations across machines. We are
currently looking at the oVirt logging mechanism, which tags all logs
of an operation with a unique id, for inspiration.

 Documentation
We hope to do a much better job of documenting the technical details
of GlusterD-2.0, starting wi