Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-15 Thread Justin Clift
On 15/09/2014, at 8:19 PM, Kaushal M wrote:

> For the present we (GlusterD maintainers, KP and me, and other
> GlusterD contributers) would like to start off GlusterD-2.0 by using
> Consul for membership and config storage. The initial implementation
> would probably only just have the minimum cluster management
> functions, and would mainly be a POC or prototype kind of
> implementation. We'll try to keep it clean and reusable for later. We
> have been planning to use Go as the language of development, as we
> believe it is easy for C developers to pick up and provides features
> that make it easier to write distributed systems. There has been
> another mail thread on the topic of language choices, which should
> probably answer any questions on this decision.
> 
> What does the list think of my thoughts above?

To be clear, this is just an experimental proof-of-concept yeah?

If so, how much time is expected to be needed for it, what are
the success/failure criteria (to judge it at the end), and when
is this PoC expected to be completed?

+ Justin

--
GlusterFS - http://www.gluster.org

An open source, distributed file system scaling to several
petabytes, and handling thousands of clients.

My personal twitter: twitter.com/realjustinclift

___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-15 Thread Kaushal M
I was away on a small vacation last week, so I haven't been able to
reply to this thread till now.

There has been quite some discussion while I was away. This kind of
discussion was exactly what we wanted.
I've read through the thread, and I'd like to summarize what I feel is
the general feeling shared by all.

- GlusterD has shortcomings in its store and membership functionality
and is in need of improvement.
This is the immediate goal that we were targeting. We started this
discussion because we did not want to start the development without
hearing what the community has to say.

- We'd like to move to using external utilities to manage some of the
things GlusterD currently does.
This is because we don't want to burden ourselves with creating new
implementations for doing tasks other tools do well already. This is
the reason for our exploration of consul. Consul does distributed
simple storage and membership well, and could replace the existing
store and peer membership mechanism as implemented in GlusterD.

- There is also a need to improve and build upon the current cluster
management facilities provided by GlusterD.
Users want to be able to do more using GlusterD than what is currently
possible. This, IMO, mainly is with regards to monitoring and
automation. Users want more information from GlusterD regarding the
cluster state, and want to run automated tasks based on the obtained
information. We'd like to move these kind of improvements away from
core GlusterD as well, and this is where the automation tools like
Puppet, Saltstack, etc. come in.

- Users want GlusterFS to remain easy to deploy
With the talk of all the external utilities, some users are concerned
GlusterFS is going to become hard to deploy, with even small
deployments needing lots of dependencies to be pulled in. This is a
something I am concerned with as well, as ease of deployment is one of
the notable characters of GlusterFS and we shouldn't lose it.

With these details in mind, I have an initial idea on how GlusterD-2.0
and GlusterFS-Quattro are going to shape up.

GlusterD will continue to exist and will do most of the functions it
performs today. Where ever possible it would delegate it's functions
to external utilities. We need to make sure that these external
utilities don't need any further configuration from the user to be
usable (how we are going to accomplish this is a problem on its own).
Retaining GlusterD in this way should satisfy the easy to deploy
character.
The higher level automation and monitoring capabilities will be
handled by tools like Puppet, Saltstack, Chef etc.  We would probably
need to pick one among these for initial community support. I have no
preference among these, but since we already have a puppet-gluster
module, I think Puppet would be the most likely choice. GlusterD would
be extended to provide more internal, cluster information to these
tools, for them to make their intelligent decisions.

The choice of programming language and external utilities we make,
will decide how hard achieving the above would be.

For the present we (GlusterD maintainers, KP and me, and other
GlusterD contributers) would like to start off GlusterD-2.0 by using
Consul for membership and config storage. The initial implementation
would probably only just have the minimum cluster management
functions, and would mainly be a POC or prototype kind of
implementation. We'll try to keep it clean and reusable for later. We
have been planning to use Go as the language of development, as we
believe it is easy for C developers to pick up and provides features
that make it easier to write distributed systems. There has been
another mail thread on the topic of language choices, which should
probably answer any questions on this decision.

What does the list think of my thoughts above?

~kaushal
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-13 Thread Prasad, Nirmal
"it also has Zookeeper support etc." - just to correct this and remove the 
perception that LogCabin somehow requires Zookeeper or works with it.

LogCabin as I understand is the C++ implementation of a small store based on 
the Raft consensus protocol - to provide a consistent and a small distributed 
store.

The Zookeeper part is a RAMCloud thing for storing co-ordinator information to 
an external cluster and it does not come with LogCabin.

-Original Message-
From: gluster-users-boun...@gluster.org 
[mailto:gluster-users-boun...@gluster.org] On Behalf Of Prasad, Nirmal
Sent: Friday, September 12, 2014 5:58 PM
To: James; Krishnan Parthasarathi
Cc: Balamurugan Arumugam; gluster-us...@gluster.org; Gluster Devel
Subject: Re: [Gluster-users] [Gluster-devel] Proposal for GlusterD-2.0

Has anyone looked into whether LogCabin can provide the consistent small 
storage based on RAFT for Gluster?

https://github.com/logcabin/logcabin

I have no experience with using it so I cannot say if it is good or suitable.

I do know the following project uses it and it's just not as easy to setup as 
Gluster is - it also has Zookeeper support etc. 

https://ramcloud.atlassian.net/wiki/display/RAM/RAMCloud

-Original Message-
From: gluster-users-boun...@gluster.org 
[mailto:gluster-users-boun...@gluster.org] On Behalf Of James
Sent: Friday, September 12, 2014 4:17 AM
To: Krishnan Parthasarathi
Cc: Gluster Devel; gluster-us...@gluster.org; Balamurugan Arumugam
Subject: Re: [Gluster-users] [Gluster-devel] Proposal for GlusterD-2.0

On Fri, Sep 12, 2014 at 12:02 AM, Krishnan Parthasarathi  
wrote:
> - Original Message -
>> On Thu, Sep 11, 2014 at 4:55 AM, Krishnan Parthasarathi 
>>  wrote:
>> >
>> > I think using Salt as the orchestration framework is a good idea.
>> > We would still need to have a consistent distributed store. I hope 
>> > Salt has the provision to use one of our choice. It could be consul 
>> > or something that satisfies the criteria for choosing alternate technology.
>> > I would wait for a couple of days for the community to chew on this 
>> > and share their thoughts. If we have a consensus on this, we could 'port'
>> > the 'basic'[1] volume management commands to a system built using 
>> > Salt and see for real how it fits our use case. Thoughts?
>>
>>
>> I disagree. I think puppet + puppet-gluster would be a good idea :) 
>> One advantage is that the technology is already proven, and there's a 
>> working POC.
>> Feel free to prove me wrong, or to request any features that it's 
>> missing. ;)
>>
>
> I am glad you joined this discussion. I was expecting you to join 
> earlier :)
Assuming non-sarcasm, then thank you :)
I didn't join earlier, because 1) I'm not a hardcore algorithmist like most of 
you are and, 2) I'm busy a lot :P

>
> IIUC, puppet-gluster uses glusterd to perform glusterfs deployments. I 
> think it's important to consider puppet given its acceptance.What are 
> your thoughts on building 'glusterd' using puppet?
I think I can describe my proposal simply, and then give the reason why...

Proposal:
glusterd shouldn't go away or aim to greatly automate / do much more than it 
does today already (with a few exceptions).
puppet-gluster should be used as a higher layer abstraction to do the complex 
management. More features would still need to be added to address every use 
case and corner case, but I think we're a good deal of the way there. My work 
on automatically growing gluster volumes was demo-ed as a POC but never 
finished and pushed to git master.

I have no comment on language choices or rewrites of glusterd itself, since 
functionality wise it mostly "works for me".

Why?
The reasons this makes a lot of sense:
1) Higher level declarative languages can guarantee a lot of "safety"
in terms of avoiding incorrect operations. It's easy to get the config 
management graph to error out, which typically means there is a bug in the code 
to be fixed. In this scenario, no code actually runs! This means your data 
won't get accidentally hurt, or put into a partial state.
2) Lines of code to accomplish certain things in puppet might be an order of 
magnitude less than in a typical imperative language.
Statistically speaking, by keeping LOC down, the logic can be more concise, and 
have fewer bugs. This also lets us reason about things from a higher POV.
3) Understanding the logic in puppet can be easier than reading a pile of c or 
go code. This is why you can look at a page of python and understand, but 
staring at three pages of assembly is useless.

In any case, I don't think it's likely that Gluster will end up using puppet, 
although I do hope people will think about this a bit more and at least 
consider it seriously. Since many people are not very familiar with 
configuration management, please don't be shy if you'd like to have a quick 
chat about it, and maybe a little demo to show you what's truly possible.

HTH,
James


>
> The proposal mail describes the f

Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-13 Thread Prasad, Nirmal
Has anyone looked into whether LogCabin can provide the consistent small 
storage based on RAFT for Gluster?

https://github.com/logcabin/logcabin

I have no experience with using it so I cannot say if it is good or suitable.

I do know the following project uses it and it's just not as easy to setup as 
Gluster is - it also has Zookeeper support etc. 

https://ramcloud.atlassian.net/wiki/display/RAM/RAMCloud

-Original Message-
From: gluster-users-boun...@gluster.org 
[mailto:gluster-users-boun...@gluster.org] On Behalf Of James
Sent: Friday, September 12, 2014 4:17 AM
To: Krishnan Parthasarathi
Cc: Gluster Devel; gluster-us...@gluster.org; Balamurugan Arumugam
Subject: Re: [Gluster-users] [Gluster-devel] Proposal for GlusterD-2.0

On Fri, Sep 12, 2014 at 12:02 AM, Krishnan Parthasarathi  
wrote:
> - Original Message -
>> On Thu, Sep 11, 2014 at 4:55 AM, Krishnan Parthasarathi 
>>  wrote:
>> >
>> > I think using Salt as the orchestration framework is a good idea.
>> > We would still need to have a consistent distributed store. I hope 
>> > Salt has the provision to use one of our choice. It could be consul 
>> > or something that satisfies the criteria for choosing alternate technology.
>> > I would wait for a couple of days for the community to chew on this 
>> > and share their thoughts. If we have a consensus on this, we could 'port'
>> > the 'basic'[1] volume management commands to a system built using 
>> > Salt and see for real how it fits our use case. Thoughts?
>>
>>
>> I disagree. I think puppet + puppet-gluster would be a good idea :) 
>> One advantage is that the technology is already proven, and there's a 
>> working POC.
>> Feel free to prove me wrong, or to request any features that it's 
>> missing. ;)
>>
>
> I am glad you joined this discussion. I was expecting you to join 
> earlier :)
Assuming non-sarcasm, then thank you :)
I didn't join earlier, because 1) I'm not a hardcore algorithmist like most of 
you are and, 2) I'm busy a lot :P

>
> IIUC, puppet-gluster uses glusterd to perform glusterfs deployments. I 
> think it's important to consider puppet given its acceptance.What are 
> your thoughts on building 'glusterd' using puppet?
I think I can describe my proposal simply, and then give the reason why...

Proposal:
glusterd shouldn't go away or aim to greatly automate / do much more than it 
does today already (with a few exceptions).
puppet-gluster should be used as a higher layer abstraction to do the complex 
management. More features would still need to be added to address every use 
case and corner case, but I think we're a good deal of the way there. My work 
on automatically growing gluster volumes was demo-ed as a POC but never 
finished and pushed to git master.

I have no comment on language choices or rewrites of glusterd itself, since 
functionality wise it mostly "works for me".

Why?
The reasons this makes a lot of sense:
1) Higher level declarative languages can guarantee a lot of "safety"
in terms of avoiding incorrect operations. It's easy to get the config 
management graph to error out, which typically means there is a bug in the code 
to be fixed. In this scenario, no code actually runs! This means your data 
won't get accidentally hurt, or put into a partial state.
2) Lines of code to accomplish certain things in puppet might be an order of 
magnitude less than in a typical imperative language.
Statistically speaking, by keeping LOC down, the logic can be more concise, and 
have fewer bugs. This also lets us reason about things from a higher POV.
3) Understanding the logic in puppet can be easier than reading a pile of c or 
go code. This is why you can look at a page of python and understand, but 
staring at three pages of assembly is useless.

In any case, I don't think it's likely that Gluster will end up using puppet, 
although I do hope people will think about this a bit more and at least 
consider it seriously. Since many people are not very familiar with 
configuration management, please don't be shy if you'd like to have a quick 
chat about it, and maybe a little demo to show you what's truly possible.

HTH,
James


>
> The proposal mail describes the functions glusterd performs today. 
> With that as a reference could you elaborate on how we could use 
> puppet to perform some (or all) the functions of glusterd?
>
> ~KP
___
Gluster-users mailing list
gluster-us...@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-users
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-12 Thread Jeff Darcy
> Has anyone looked into whether LogCabin can provide the consistent small
> storage based on RAFT for Gluster?
> 
> https://github.com/logcabin/logcabin
> 
> I have no experience with using it so I cannot say if it is good or suitable.
> 
> I do know the following project uses it and it's just not as easy to setup as
> Gluster is - it also has Zookeeper support etc.
> 
> https://ramcloud.atlassian.net/wiki/display/RAM/RAMCloud

LogCabin is the canonical implementation of Raft, by the author of the Raft
protocol, so it was the first implementation I looked at.  Sad to say, it
didn't seem that stable.  AFAIK RAMCloud - itself an academic project - is
the only user, whereas etcd and consul are being used by multiple projects
and in production.  Also, I found the etcd code at least more readable than
LogCabin despite the fact that I've worked in C++ before and had never seen
any Go code until that time.  Then again, those were early days for all
three projects (consul didn't even exist yet) so things might have changed.
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-12 Thread Balamurugan Arumugam


- Original Message -
> From: "Jeff Darcy" 
> To: "Balamurugan Arumugam" 
> Cc: "Justin Clift" , gluster-us...@gluster.org, "Gluster 
> Devel" 
> Sent: Thursday, September 11, 2014 7:45:52 PM
> Subject: Re: [Gluster-users] [Gluster-devel] Proposal for GlusterD-2.0
> 
> > Yes.  I came across Salt currently for unified management for storage to
> > manage gluster and ceph which is still in planning phase.  I could think of
> > a complete requirement of infra requirement to solve from glusterd to
> > unified management.  Calamari ceph management already uses Salt.  It would
> > be the ideal solution with Salt (or any infra) if gluster, ceph and unified
> > management uses.
> 
> 
> I think the idea of using Salt (or similar) is interesting, but it's also
> key that Ceph still has its mon cluster as well.  (Is "mon calamari" an
> *intentional* Star Wars reference?)  As I see it, glusterd or anything we
> use to replacement has multiple responsibilities:
> 
> (1) Track the current up/down state of cluster members and resources.
> 
> (2) Store configuration and coordinate changes to it.
> 
> (3) Orchestrate complex or long-running activities (e.g. rebalance).
> 
> (4) Provide service discovery (current portmapper).
> 
> Salt and its friends clearly shine at (2) and (3), though they "outsource"
> the actual data storage to an external data store.  With such a data
> store, (4) becomes pretty trivial.  The sticking point for me is (1).  How
> does Salt handle that need, or how might it be satisfied on top of the
> facilities Salt does provide?  I can see *very* clearly how to do it on
> top of etcd or consul.  Could those in fact be used for Salt's data store?
> It seems like Salt shouldn't need a full-fledged industrial strength
> database, just something with high consistency/availability and some basic
> semantics.
> 
> Maybe we should try to engage with the Salt developers to come up with
> ideas.  Or find out exactly what functionality they found still needs to
> be in the mon cluster and not in Salt.
> 

Salt has a way to push events to salt-master from salt-minions.  At 
salt-master, we would extend reactor[1] to handle such (any) events.  This 
helps to solve (1).


Regards,
Bala

[1] http://docs.saltstack.com/en/latest/topics/reactor/
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-12 Thread Balamurugan Arumugam


- Original Message -
> From: "Jeff Darcy" 
> To: "Balamurugan Arumugam" 
> Cc: "Justin Clift" , gluster-us...@gluster.org, "Gluster 
> Devel" 
> Sent: Thursday, September 11, 2014 7:45:52 PM
> Subject: Re: [Gluster-users] [Gluster-devel] Proposal for GlusterD-2.0
> 
> > Yes.  I came across Salt currently for unified management for storage to
> > manage gluster and ceph which is still in planning phase.  I could think of
> > a complete requirement of infra requirement to solve from glusterd to
> > unified management.  Calamari ceph management already uses Salt.  It would
> > be the ideal solution with Salt (or any infra) if gluster, ceph and unified
> > management uses.
> 
> 
> I think the idea of using Salt (or similar) is interesting, but it's also
> key that Ceph still has its mon cluster as well.  (Is "mon calamari" an
> *intentional* Star Wars reference?)  As I see it, glusterd or anything we
> use to replacement has multiple responsibilities:
> 
> (1) Track the current up/down state of cluster members and resources.
> 
> (2) Store configuration and coordinate changes to it.
> 
> (3) Orchestrate complex or long-running activities (e.g. rebalance).
> 
> (4) Provide service discovery (current portmapper).
> 
> Salt and its friends clearly shine at (2) and (3), though they "outsource"
> the actual data storage to an external data store.  With such a data
> store, (4) becomes pretty trivial.  The sticking point for me is (1).  How
> does Salt handle that need, or how might it be satisfied on top of the
> facilities Salt does provide?  I can see *very* clearly how to do it on
> top of etcd or consul.  Could those in fact be used for Salt's data store?
> It seems like Salt shouldn't need a full-fledged industrial strength
> database, just something with high consistency/availability and some basic
> semantics.
> 
> Maybe we should try to engage with the Salt developers to come up with
> ideas.  Or find out exactly what functionality they found still needs to
> be in the mon cluster and not in Salt.
> 

Salt has a way to push events to salt-master from salt-minions.  At 
salt-master, we would extend reactor[1] to handle such (any) events.  This 
helps to solve (1).


Regards,
Bala

[1] http://docs.saltstack.com/en/latest/topics/reactor/
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-12 Thread James
On Fri, Sep 12, 2014 at 12:02 AM, Krishnan Parthasarathi
 wrote:
> - Original Message -
>> On Thu, Sep 11, 2014 at 4:55 AM, Krishnan Parthasarathi
>>  wrote:
>> >
>> > I think using Salt as the orchestration framework is a good idea.
>> > We would still need to have a consistent distributed store. I hope
>> > Salt has the provision to use one of our choice. It could be consul
>> > or something that satisfies the criteria for choosing alternate technology.
>> > I would wait for a couple of days for the community to chew on this and
>> > share their thoughts. If we have a consensus on this, we could 'port'
>> > the 'basic'[1] volume management commands to a system built using Salt and
>> > see for real how it fits our use case. Thoughts?
>>
>>
>> I disagree. I think puppet + puppet-gluster would be a good idea :)
>> One advantage is that the technology is already proven, and there's a
>> working POC.
>> Feel free to prove me wrong, or to request any features that it's missing. ;)
>>
>
> I am glad you joined this discussion. I was expecting you to join earlier :)
Assuming non-sarcasm, then thank you :)
I didn't join earlier, because 1) I'm not a hardcore algorithmist like
most of you are and, 2) I'm busy a lot :P

>
> IIUC, puppet-gluster uses glusterd to perform glusterfs deployments. I think 
> it's
> important to consider puppet given its acceptance.What are your thoughts on 
> building
> 'glusterd' using puppet?
I think I can describe my proposal simply, and then give the reason why...

Proposal:
glusterd shouldn't go away or aim to greatly automate / do much more
than it does today already (with a few exceptions).
puppet-gluster should be used as a higher layer abstraction to do the
complex management. More features would still need to be added to
address every use case and corner case, but I think we're a good deal
of the way there. My work on automatically growing gluster volumes was
demo-ed as a POC but never finished and pushed to git master.

I have no comment on language choices or rewrites of glusterd itself,
since functionality wise it mostly "works for me".

Why?
The reasons this makes a lot of sense:
1) Higher level declarative languages can guarantee a lot of "safety"
in terms of avoiding incorrect operations. It's easy to get the config
management graph to error out, which typically means there is a bug in
the code to be fixed. In this scenario, no code actually runs! This
means your data won't get accidentally hurt, or put into a partial
state.
2) Lines of code to accomplish certain things in puppet might be an
order of magnitude less than in a typical imperative language.
Statistically speaking, by keeping LOC down, the logic can be more
concise, and have fewer bugs. This also lets us reason about things
from a higher POV.
3) Understanding the logic in puppet can be easier than reading a pile
of c or go code. This is why you can look at a page of python and
understand, but staring at three pages of assembly is useless.

In any case, I don't think it's likely that Gluster will end up using
puppet, although I do hope people will think about this a bit more and
at least consider it seriously. Since many people are not very
familiar with configuration management, please don't be shy if you'd
like to have a quick chat about it, and maybe a little demo to show
you what's truly possible.

HTH,
James


>
> The proposal mail describes the functions glusterd performs today. With that
> as a reference could you elaborate on how we could use puppet to perform some
> (or all) the functions of glusterd?
>
> ~KP
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread Krishnan Parthasarathi
- Original Message -
> On Thu, Sep 11, 2014 at 4:55 AM, Krishnan Parthasarathi
>  wrote:
> >
> > I think using Salt as the orchestration framework is a good idea.
> > We would still need to have a consistent distributed store. I hope
> > Salt has the provision to use one of our choice. It could be consul
> > or something that satisfies the criteria for choosing alternate technology.
> > I would wait for a couple of days for the community to chew on this and
> > share their thoughts. If we have a consensus on this, we could 'port'
> > the 'basic'[1] volume management commands to a system built using Salt and
> > see for real how it fits our use case. Thoughts?
> 
> 
> I disagree. I think puppet + puppet-gluster would be a good idea :)
> One advantage is that the technology is already proven, and there's a
> working POC.
> Feel free to prove me wrong, or to request any features that it's missing. ;)
> 

I am glad you joined this discussion. I was expecting you to join earlier :)

IIUC, puppet-gluster uses glusterd to perform glusterfs deployments. I think 
it's
important to consider puppet given its acceptance.What are your thoughts on 
building
'glusterd' using puppet? 

The proposal mail describes the functions glusterd performs today. With that
as a reference could you elaborate on how we could use puppet to perform some
(or all) the functions of glusterd? 

~KP
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread James
On Thu, Sep 11, 2014 at 12:01 PM, Prasad, Nirmal  wrote:
> I really hope whatever the outcome and final choice is ... as an end user I 
> hope that Gluster stays as simple to deploy as it is today.

I think it's pretty simple already with puppet-gluster. It takes me
around 15 minutes while I'm off drinking a $BEVERAGE.
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread James
On Thu, Sep 11, 2014 at 4:55 AM, Krishnan Parthasarathi
 wrote:
>
> I think using Salt as the orchestration framework is a good idea.
> We would still need to have a consistent distributed store. I hope
> Salt has the provision to use one of our choice. It could be consul
> or something that satisfies the criteria for choosing alternate technology.
> I would wait for a couple of days for the community to chew on this and
> share their thoughts. If we have a consensus on this, we could 'port'
> the 'basic'[1] volume management commands to a system built using Salt and
> see for real how it fits our use case. Thoughts?


I disagree. I think puppet + puppet-gluster would be a good idea :)
One advantage is that the technology is already proven, and there's a
working POC.
Feel free to prove me wrong, or to request any features that it's missing. ;)
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread mike
I'm so glad to read this. I was thinking the same thing.

On Sep 11, 2014, at 7:22 AM, Jeff Darcy  wrote:

>> For distributed store, I would think of MongoDB which provides
>> distributed/replicated/highly available/master read-write/slave read-only
>> database.  Lets get what community think about SaltStack and/or MongoDB.
> 
> 
> I definitely do not think MongoDB is the right tool for this job.  I'm
> not one of those people who just bash MongoDB out of fashion, either.  I
> frequently defend them against such attacks, and I used MongoDB for some
> work on CloudForms a while ago.  However, a full MongoDB setup carries a
> pretty high operational complexity, to support high scale and rich
> features . . . which we don't need.  This part of our system doesn't
> need sharding.  It doesn't need complex ad-hoc query capability.  If we
> don't need those features, we *certainly* don't need the complexity that
> comes with them.  We need something with the very highest levels of
> reliability and consistency, with as little complexity as possible to go
> with that.  Even its strongest advocates would probably agree that
> MongoDB doesn't fit those requirements very well.
> ___
> Gluster-users mailing list
> gluster-us...@gluster.org
> http://supercolony.gluster.org/mailman/listinfo/gluster-users

___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread Jeff Darcy
> For distributed store, I would think of MongoDB which provides
> distributed/replicated/highly available/master read-write/slave read-only
> database.  Lets get what community think about SaltStack and/or MongoDB.


I definitely do not think MongoDB is the right tool for this job.  I'm
not one of those people who just bash MongoDB out of fashion, either.  I
frequently defend them against such attacks, and I used MongoDB for some
work on CloudForms a while ago.  However, a full MongoDB setup carries a
pretty high operational complexity, to support high scale and rich
features . . . which we don't need.  This part of our system doesn't
need sharding.  It doesn't need complex ad-hoc query capability.  If we
don't need those features, we *certainly* don't need the complexity that
comes with them.  We need something with the very highest levels of
reliability and consistency, with as little complexity as possible to go
with that.  Even its strongest advocates would probably agree that
MongoDB doesn't fit those requirements very well.
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread Jeff Darcy
> Yes.  I came across Salt currently for unified management for storage to
> manage gluster and ceph which is still in planning phase.  I could think of
> a complete requirement of infra requirement to solve from glusterd to
> unified management.  Calamari ceph management already uses Salt.  It would
> be the ideal solution with Salt (or any infra) if gluster, ceph and unified
> management uses.


I think the idea of using Salt (or similar) is interesting, but it's also
key that Ceph still has its mon cluster as well.  (Is "mon calamari" an
*intentional* Star Wars reference?)  As I see it, glusterd or anything we
use to replacement has multiple responsibilities:

(1) Track the current up/down state of cluster members and resources.

(2) Store configuration and coordinate changes to it.

(3) Orchestrate complex or long-running activities (e.g. rebalance).

(4) Provide service discovery (current portmapper).

Salt and its friends clearly shine at (2) and (3), though they "outsource"
the actual data storage to an external data store.  With such a data
store, (4) becomes pretty trivial.  The sticking point for me is (1).  How
does Salt handle that need, or how might it be satisfied on top of the
facilities Salt does provide?  I can see *very* clearly how to do it on
top of etcd or consul.  Could those in fact be used for Salt's data store?
It seems like Salt shouldn't need a full-fledged industrial strength
database, just something with high consistency/availability and some basic
semantics.

Maybe we should try to engage with the Salt developers to come up with
ideas.  Or find out exactly what functionality they found still needs to
be in the mon cluster and not in Salt.


___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread Balamurugan Arumugam


- Original Message -
> From: "Justin Clift" 
> To: "Balamurugan Arumugam" 
> Cc: "Krishnan Parthasarathi" , 
> gluster-us...@gluster.org, "Gluster Devel"
> 
> Sent: Thursday, September 11, 2014 2:48:41 PM
> Subject: Re: [Gluster-devel] [Gluster-users]  Proposal for GlusterD-2.0
> 
> On 11/09/2014, at 10:16 AM, Balamurugan Arumugam wrote:
> 
> > For distributed store, I would think of MongoDB which provides
> > distributed/replicated/highly available/master read-write/slave read-only
> > database.  Lets get what community think about SaltStack and/or MongoDB.
> 
> 
> Is this relevant for MongoDB still? (it's from 12+ months
> ago)
> 
>   http://aphyr.com/posts/284-call-me-maybe-mongodb
> 


I haven't tried using Mongo yet.  A PoC would help to identify how helpful 
mongodb is :)


Regards,
Bala
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread Balamurugan Arumugam


- Original Message -
> From: "Justin Clift" 
> To: "Balamurugan Arumugam" 
> Cc: "Krishnan Parthasarathi" , 
> gluster-us...@gluster.org, "Gluster Devel"
> 
> Sent: Thursday, September 11, 2014 2:48:41 PM
> Subject: Re: [Gluster-devel] [Gluster-users]  Proposal for GlusterD-2.0
> 
> On 11/09/2014, at 10:16 AM, Balamurugan Arumugam wrote:
> 
> > For distributed store, I would think of MongoDB which provides
> > distributed/replicated/highly available/master read-write/slave read-only
> > database.  Lets get what community think about SaltStack and/or MongoDB.
> 
> 
> Is this relevant for MongoDB still? (it's from 12+ months
> ago)
> 
>   http://aphyr.com/posts/284-call-me-maybe-mongodb
> 


I haven't tried using Mongo yet.  A PoC would help to identify how helpful 
mongodb is :)


Regards,
Bala
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread Justin Clift
On 11/09/2014, at 10:16 AM, Balamurugan Arumugam wrote:

> For distributed store, I would think of MongoDB which provides 
> distributed/replicated/highly available/master read-write/slave read-only 
> database.  Lets get what community think about SaltStack and/or MongoDB.


Is this relevant for MongoDB still? (it's from 12+ months
ago)

  http://aphyr.com/posts/284-call-me-maybe-mongodb

+ Justin

--
GlusterFS - http://www.gluster.org

An open source, distributed file system scaling to several
petabytes, and handling thousands of clients.

My personal twitter: twitter.com/realjustinclift

___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread Balamurugan Arumugam


- Original Message -
> From: "Krishnan Parthasarathi" 
> To: "Balamurugan Arumugam" 
> Cc: gluster-us...@gluster.org, "Gluster Devel" 
> Sent: Thursday, September 11, 2014 2:25:45 PM
> Subject: Re: [Gluster-users] [Gluster-devel] Proposal for GlusterD-2.0
> 
> Bala,
> 
> I think using Salt as the orchestration framework is a good idea.
> We would still need to have a consistent distributed store. I hope
> Salt has the provision to use one of our choice. It could be consul
> or something that satisfies the criteria for choosing alternate technology.
> I would wait for a couple of days for the community to chew on this and
> share their thoughts. If we have a consensus on this, we could 'port'
> the 'basic'[1] volume management commands to a system built using Salt and
> see for real how it fits our use case. Thoughts?
> 

For distributed store, I would think of MongoDB which provides 
distributed/replicated/highly available/master read-write/slave read-only 
database.  Lets get what community think about SaltStack and/or MongoDB.



> 
> [1] basic commands - peer-probe, volume-create, volume-start and
> volume-add-brick
> 

Regards,
Bala
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-11 Thread Krishnan Parthasarathi
Bala,

I think using Salt as the orchestration framework is a good idea. 
We would still need to have a consistent distributed store. I hope
Salt has the provision to use one of our choice. It could be consul
or something that satisfies the criteria for choosing alternate technology.
I would wait for a couple of days for the community to chew on this and
share their thoughts. If we have a consensus on this, we could 'port'
the 'basic'[1] volume management commands to a system built using Salt and
see for real how it fits our use case. Thoughts?


[1] basic commands - peer-probe, volume-create, volume-start and 
volume-add-brick

~KP

- Original Message -
> 
> 
> - Original Message -
> > From: "Justin Clift" 
> > To: "Balamurugan Arumugam" 
> > Cc: "Kaushal M" , gluster-us...@gluster.org, "Gluster
> > Devel" 
> > Sent: Thursday, September 11, 2014 7:33:52 AM
> > Subject: Re: [Gluster-users] [Gluster-devel] Proposal for GlusterD-2.0
> > 
> > On 11/09/2014, at 2:46 AM, Balamurugan Arumugam wrote:
> > 
> > > WRT glusterd problem, I see Salt already resolves most of them at
> > > infrastructure level.  Its worth considering it.
> > 
> > 
> > Salt used to have (~12 months ago) a reputation for being really
> > buggy.  Any idea if that's still the case?
> > 
> 
> I heard from various presentations about that due to zeromq 2.x issues.  With
> zeromq 3.x, its all gone.  But we could explore more on stability point of
> view.
> 
> 
> > Apart from that though, using Salt is an interesting idea. :)
> > 
> 
> Yes.  I came across Salt currently for unified management for storage to
> manage gluster and ceph which is still in planning phase.  I could think of
> a complete requirement of infra requirement to solve from glusterd to
> unified management.  Calamari ceph management already uses Salt.  It would
> be the ideal solution with Salt (or any infra) if gluster, ceph and unified
> management uses.
> 
> 
> Regards,
> Bala
> ___
> Gluster-users mailing list
> gluster-us...@gluster.org
> http://supercolony.gluster.org/mailman/listinfo/gluster-users
> 
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-10 Thread Balamurugan Arumugam


- Original Message -
> From: "Justin Clift" 
> To: "Balamurugan Arumugam" 
> Cc: "Kaushal M" , gluster-us...@gluster.org, "Gluster 
> Devel" 
> Sent: Thursday, September 11, 2014 7:33:52 AM
> Subject: Re: [Gluster-users] [Gluster-devel] Proposal for GlusterD-2.0
> 
> On 11/09/2014, at 2:46 AM, Balamurugan Arumugam wrote:
> 
> > WRT glusterd problem, I see Salt already resolves most of them at
> > infrastructure level.  Its worth considering it.
> 
> 
> Salt used to have (~12 months ago) a reputation for being really
> buggy.  Any idea if that's still the case?
> 

I heard from various presentations about that due to zeromq 2.x issues.  With 
zeromq 3.x, its all gone.  But we could explore more on stability point of view.


> Apart from that though, using Salt is an interesting idea. :)
> 

Yes.  I came across Salt currently for unified management for storage to manage 
gluster and ceph which is still in planning phase.  I could think of a complete 
requirement of infra requirement to solve from glusterd to unified management.  
Calamari ceph management already uses Salt.  It would be the ideal solution 
with Salt (or any infra) if gluster, ceph and unified management uses.


Regards,
Bala
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-10 Thread Balamurugan Arumugam


- Original Message -
> From: "Justin Clift" 
> To: "Balamurugan Arumugam" 
> Cc: "Kaushal M" , gluster-us...@gluster.org, "Gluster 
> Devel" 
> Sent: Thursday, September 11, 2014 7:33:52 AM
> Subject: Re: [Gluster-users] [Gluster-devel] Proposal for GlusterD-2.0
> 
> On 11/09/2014, at 2:46 AM, Balamurugan Arumugam wrote:
> 
> > WRT glusterd problem, I see Salt already resolves most of them at
> > infrastructure level.  Its worth considering it.
> 
> 
> Salt used to have (~12 months ago) a reputation for being really
> buggy.  Any idea if that's still the case?
> 

I heard from various presentations about that due to zeromq 2.x issues.  With 
zeromq 3.x, its all gone.  But we could explore more on stability point of view.


> Apart from that though, using Salt is an interesting idea. :)
> 

Yes.  I came across Salt currently for unified management for storage to manage 
gluster and ceph which is still in planning phase.  I could think of a complete 
requirement of infra requirement to solve from glusterd to unified management.  
Calamari ceph management already uses Salt.  It would be the ideal solution 
with Salt (or any infra) if gluster, ceph and unified management uses.


Regards,
Bala
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-10 Thread Justin Clift
On 11/09/2014, at 2:46 AM, Balamurugan Arumugam wrote:

> WRT glusterd problem, I see Salt already resolves most of them at 
> infrastructure level.  Its worth considering it.


Salt used to have (~12 months ago) a reputation for being really
buggy.  Any idea if that's still the case?

Apart from that though, using Salt is an interesting idea. :)

+ Justin

--
GlusterFS - http://www.gluster.org

An open source, distributed file system scaling to several
petabytes, and handling thousands of clients.

My personal twitter: twitter.com/realjustinclift

___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-08 Thread mike
That's disappointing. I can certainly understand wanting to keep dependencies 
small, but that sounds like FUD more than a reasoned argument.

I do not envy your position navigating such waters.

On Sep 8, 2014, at 2:38 PM, Jeff Darcy  wrote:

>> Is there any reason not to consider zookeeper?
> 
> I did bring up that idea a while ago.  I'm no Java fan myself, but still
> I was surprised by the vehemence of the reactions.  To put it politely,
> many seemed to consider the dependency on Java unacceptable for both
> resource and security reasons.  Some community members said that they'd
> be forced to switch to another DFS if we went that way.  It didn't seem
> like a very promising direction to explore further.

___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-08 Thread Mike S
Is there any reason not to consider zookeeper? The 3.4 release is
quite stable and due to a large number of users, bugs are fixed and
its quirks are known.

I like the idea of RAFT. The paper is well written and very
compelling. The last time I read it, a number of critical issues were
glossed over - for instance, log compaction and pruning. Systems must
be correct in both theory and implementation. Although many raft-based
sustems have cropped in the last year or so since RAFT was published,
I don't judge their use to be significant compared to zookeeper.
Quality only comes with maturity and many workloads bashing on it.

The last time I needed to build up a new distributed system, I had
written up some notes about etcd vs zookeeper. Perhaps you will find
them helpful, or motivate some new questions before you make your
decision.

https://docs.google.com/document/d/1FOnLD26W9iQ2CUZ-jVCn7o0OrX8KPH7QGeokN4tA_j4/edit

On Monday, September 8, 2014, Jonathan Barber  wrote:
>
> On 8 September 2014 05:05, Krishnan Parthasarathi  wrote:
>>
>>
>>
>> > Bulk of current GlusterD code deals with keeping the configuration of the
>> > cluster and the volumes in it consistent and available across the nodes. 
>> > The
>> > current algorithm is not scalable (N^2 in no. of nodes) and doesn't prevent
>> > split-brain of configuration. This is the problem area we are targeting for
>> > the first phase.
>> >
>> > As part of the first phase, we aim to delegate the distributed 
>> > configuration
>> > store. We are exploring consul [1] as a replacement for the existing
>> > distributed configuration store (sum total of /var/lib/glusterd/* across 
>> > all
>> > nodes). Consul provides distributed configuration store which is consistent
>> > and partition tolerant. By moving all Gluster related configuration
>> > information into consul we could avoid split-brain situations.
>> > Did you get a chance to go over the following questions while making the
>> > decision? If yes could you please share the info.
>> > What are the consistency guarantees for changing the configuration in case 
>> > of
>> > network partitions?
>> > specifically when there are 2 nodes and 1 of them is not reachable?
>> > consistency guarantees when there are more than 2 nodes?
>> > What are the consistency guarantees for reading configuration in case of
>> > network partitions?
>>
>> consul uses Raft[1] distributed consensus algorithm internally for 
>> maintaining
>> consistency. The Raft consensus algorithm is proven to be correct. I will be
>> going through the workings of the algorithm soon. I will share my answers to
>> the above questions after that. Thanks for the questions, it is important
>> for the user to understand the behaviour of a system especially under 
>> failure.
>> I am considering adding a FAQ section to this proposal, where questions like 
>> the above would
>> go, once it gets accepted and makes it to the feature page.
>>
>> [1] - 
>> https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf
>>
>
> The following article provides some results on how Consul works following 
> partitioning, actually testing whether it recovers successfully:
> http://aphyr.com/posts/316-call-me-maybe-etcd-and-consul
>
> It gives Consul a positive review.
>
> HTH
>
>> ~KP
>>
>> ___
>> Gluster-users mailing list
>> gluster-us...@gluster.org
>> http://supercolony.gluster.org/mailman/listinfo/gluster-users
>
>
>
>
> --
> Jonathan Barber 
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-08 Thread Jeff Darcy
> Is there any reason not to consider zookeeper?

I did bring up that idea a while ago.  I'm no Java fan myself, but still
I was surprised by the vehemence of the reactions.  To put it politely,
many seemed to consider the dependency on Java unacceptable for both
resource and security reasons.  Some community members said that they'd
be forced to switch to another DFS if we went that way.  It didn't seem
like a very promising direction to explore further.
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-08 Thread Jonathan Barber
On 8 September 2014 05:05, Krishnan Parthasarathi 
wrote:

>
>
> > Bulk of current GlusterD code deals with keeping the configuration of the
> > cluster and the volumes in it consistent and available across the nodes.
> The
> > current algorithm is not scalable (N^2 in no. of nodes) and doesn't
> prevent
> > split-brain of configuration. This is the problem area we are targeting
> for
> > the first phase.
> >
> > As part of the first phase, we aim to delegate the distributed
> configuration
> > store. We are exploring consul [1] as a replacement for the existing
> > distributed configuration store (sum total of /var/lib/glusterd/* across
> all
> > nodes). Consul provides distributed configuration store which is
> consistent
> > and partition tolerant. By moving all Gluster related configuration
> > information into consul we could avoid split-brain situations.
> > Did you get a chance to go over the following questions while making the
> > decision? If yes could you please share the info.
> > What are the consistency guarantees for changing the configuration in
> case of
> > network partitions?
> > specifically when there are 2 nodes and 1 of them is not reachable?
> > consistency guarantees when there are more than 2 nodes?
> > What are the consistency guarantees for reading configuration in case of
> > network partitions?
>
> consul uses Raft[1] distributed consensus algorithm internally for
> maintaining
> consistency. The Raft consensus algorithm is proven to be correct. I will
> be
> going through the workings of the algorithm soon. I will share my answers
> to
> the above questions after that. Thanks for the questions, it is important
> for the user to understand the behaviour of a system especially under
> failure.
> I am considering adding a FAQ section to this proposal, where questions
> like the above would
> go, once it gets accepted and makes it to the feature page.
>
> [1] -
> https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf
>
>
The following article provides some results on how Consul works following
partitioning, actually testing whether it recovers successfully:
http://aphyr.com/posts/316-call-me-maybe-etcd-and-consul

It gives Consul a positive review.

HTH

~KP
>
> ___
> Gluster-users mailing list
> gluster-us...@gluster.org
> http://supercolony.gluster.org/mailman/listinfo/gluster-users
>



-- 
Jonathan Barber 
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-07 Thread Krishnan Parthasarathi


- Original Message -
> > As part of the first phase, we aim to delegate the distributed
> > configuration
> > store. We are exploring consul [1] as a replacement for the existing
> > distributed configuration store (sum total of /var/lib/glusterd/* across
> > all
> > nodes). Consul provides distributed configuration store which is consistent
> > and partition tolerant. By moving all Gluster related configuration
> > information into consul we could avoid split-brain situations.
> 
> Overall, I like the idea.  But I think you knew that.  ;)

Thanks. I am glad you like it :-)
> 
> Is the idea to run consul on all nodes as we do with glusterd, or to run
> it only on a few nodes (similar to Ceph's mon cluster) and then use them
> to coordinate membership etc. for the rest?

It is not set in stone, but I think we should have consul running only on
a subset of the nodes in the cluster, similar to Ceph's mon cluster approach.

~KP

> ___
> Gluster-users mailing list
> gluster-us...@gluster.org
> http://supercolony.gluster.org/mailman/listinfo/gluster-users
> 
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-07 Thread Krishnan Parthasarathi


> Bulk of current GlusterD code deals with keeping the configuration of the
> cluster and the volumes in it consistent and available across the nodes. The
> current algorithm is not scalable (N^2 in no. of nodes) and doesn't prevent
> split-brain of configuration. This is the problem area we are targeting for
> the first phase.
> 
> As part of the first phase, we aim to delegate the distributed configuration
> store. We are exploring consul [1] as a replacement for the existing
> distributed configuration store (sum total of /var/lib/glusterd/* across all
> nodes). Consul provides distributed configuration store which is consistent
> and partition tolerant. By moving all Gluster related configuration
> information into consul we could avoid split-brain situations.
> Did you get a chance to go over the following questions while making the
> decision? If yes could you please share the info.
> What are the consistency guarantees for changing the configuration in case of
> network partitions?
> specifically when there are 2 nodes and 1 of them is not reachable?
> consistency guarantees when there are more than 2 nodes?
> What are the consistency guarantees for reading configuration in case of
> network partitions?

consul uses Raft[1] distributed consensus algorithm internally for maintaining
consistency. The Raft consensus algorithm is proven to be correct. I will be
going through the workings of the algorithm soon. I will share my answers to
the above questions after that. Thanks for the questions, it is important
for the user to understand the behaviour of a system especially under failure.
I am considering adding a FAQ section to this proposal, where questions like 
the above would
go, once it gets accepted and makes it to the feature page.

[1] - https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf

~KP

___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-06 Thread Atin Mukherjee


On 09/06/2014 05:55 PM, Pranith Kumar Karampuri wrote:
> 
> On 09/05/2014 03:51 PM, Kaushal M wrote:
>> GlusterD performs the following functions as the management daemon for
>> GlusterFS:
>> - Peer membership management
>> - Maintains consistency of configuration data across nodes
>> (distributed configuration store)
>> - Distributed command execution (orchestration)
>> - Service management (manage GlusterFS daemons)
>> - Portmap service for GlusterFS daemons
>>
>>
>> This proposal aims to delegate the above functions to technologies
>> that solve these problems well. We aim to do this in a phased manner.
>> The technology alternatives we would be looking for should have the
>> following properties,
>> - Open source
>> - Vibrant community
>> - Good documentation
>> - Easy to deploy/manage
>>
>> This would allow GlusterD's architecture to be more modular. We also
>> aim to make GlusterD's architecture as transparent and observable as
>> possible. Separating out these functions would allow us to do that.
>>
>> Bulk of current GlusterD code deals with keeping the configuration of
>> the cluster and the volumes in it consistent and available across the
>> nodes. The current algorithm is not scalable  (N^2 in no. of nodes)
>> and doesn't prevent split-brain of configuration. This is the problem
>> area we are targeting for the first phase.
>>
>> As part of the first phase, we aim to delegate the distributed
>> configuration store. We are exploring consul [1] as a replacement for
>> the existing distributed configuration store (sum total of
>> /var/lib/glusterd/* across all nodes). Consul provides distributed
>> configuration store which is consistent and partition tolerant. By
>> moving all Gluster related configuration information into consul we
>> could avoid split-brain situations.
> Did you get a chance to go over the following questions while making the
> decision? If yes could you please share the info.
> What are the consistency guarantees for changing the configuration in
> case of network partitions?
>  specifically when there are 2 nodes and 1 of them is not reachable?
>  consistency guarantees when there are more than 2 nodes?
> What are the consistency guarantees for reading configuration in case of
> network partitions?
Consul documentation claims that it can recover from network partition.
http://www.consul.io/docs/internals/jepsen.html

However having said that we are yet to do this POC.

~Atin
> 
> Pranith
>>
>> All development efforts towards this proposal would happen in parallel
>> to the existing GlusterD code base. The existing code base would be
>> actively maintained until GlusterD-2.0 is production-ready.
>>
>> This is in alignment with the GlusterFS Quattro proposals on making
>> GlusterFS scalable and easy to deploy. This is the first phase ground
>> work towards that goal.
>>
>> Questions and suggestions are welcome.
>>
>> ~kaushal
>>
>> [1] : http://www.consul.io/
>>
>>
>> ___
>> Gluster-users mailing list
>> gluster-us...@gluster.org
>> http://supercolony.gluster.org/mailman/listinfo/gluster-users
> 
> 
> 
> ___
> Gluster-devel mailing list
> Gluster-devel@gluster.org
> http://supercolony.gluster.org/mailman/listinfo/gluster-devel
> 
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-06 Thread Emmanuel Dreyfus
Justin Clift  wrote:

> Does this mean we'll need to learn Go as well as C and Python?
> If so, that doesn't sound completely optimal. :/

I agree with that. Fancy new languages are cool and full of nice
features, but they reduce the amount of possible contributors. If you
feel you have too many stuff pending in gerrit, move to a mix of Go +
Lua + Erlang and you should be fine.

-- 
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
m...@netbsd.org
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-06 Thread Pranith Kumar Karampuri


On 09/05/2014 03:51 PM, Kaushal M wrote:
GlusterD performs the following functions as the management daemon for 
GlusterFS:

- Peer membership management
- Maintains consistency of configuration data across nodes 
(distributed configuration store)

- Distributed command execution (orchestration)
- Service management (manage GlusterFS daemons)
- Portmap service for GlusterFS daemons


This proposal aims to delegate the above functions to technologies 
that solve these problems well. We aim to do this in a phased manner.
The technology alternatives we would be looking for should have the 
following properties,

- Open source
- Vibrant community
- Good documentation
- Easy to deploy/manage

This would allow GlusterD's architecture to be more modular. We also 
aim to make GlusterD's architecture as transparent and observable as 
possible. Separating out these functions would allow us to do that.


Bulk of current GlusterD code deals with keeping the configuration of 
the cluster and the volumes in it consistent and available across the 
nodes. The current algorithm is not scalable  (N^2 in no. of nodes) 
and doesn't prevent split-brain of configuration. This is the problem 
area we are targeting for the first phase.


As part of the first phase, we aim to delegate the distributed 
configuration store. We are exploring consul [1] as a replacement for 
the existing distributed configuration store (sum total of 
/var/lib/glusterd/* across all nodes). Consul provides distributed 
configuration store which is consistent and partition tolerant. By 
moving all Gluster related configuration information into consul we 
could avoid split-brain situations.
Did you get a chance to go over the following questions while making the 
decision? If yes could you please share the info.
What are the consistency guarantees for changing the configuration in 
case of network partitions?

 specifically when there are 2 nodes and 1 of them is not reachable?
 consistency guarantees when there are more than 2 nodes?
What are the consistency guarantees for reading configuration in case of 
network partitions?


Pranith


All development efforts towards this proposal would happen in parallel 
to the existing GlusterD code base. The existing code base would be 
actively maintained until GlusterD-2.0 is production-ready.


This is in alignment with the GlusterFS Quattro proposals on making 
GlusterFS scalable and easy to deploy. This is the first phase ground 
work towards that goal.


Questions and suggestions are welcome.

~kaushal

[1] : http://www.consul.io/


___
Gluster-users mailing list
gluster-us...@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-users


___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-05 Thread Harshavardhana
> Does this mean we'll need to learn Go as well as C and Python?
>
> If so, that doesn't sound completely optimal. :/
>
> That being said, a lot of distributed/networked computing
> projects seem to be written in it these days.  Is Go specifically
> a good language for our kind of challenges, or is it more a case
> of "the new shiny"?

Go has a more vibrant community, it would be indeed a great strategic decision.
Consul is also a much thought out project.

So i am loving what Kaushal has proposed - great stuff.  One can
easily write C bindings
to Go! so it isn't a tight requirement.

Gluster management daemon should be really thin while it can really
serve simple requests
  - Also Gluster management becomes an API but abstracted
  - This API allows for making Gluster management daemon extensible in
various languages
 too - for example writing a Javascript UI which provides a
tighter coupling with Gluster management
 API.

Indeed a great step in this direction +1

-- 
Religious confuse piety with mere ritual, the virtuous confuse
regulation with outcomes
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-05 Thread Jeff Darcy
> Isn't some of this covered by crm/corosync/pacemaker/heartbeat?

Sorta, kinda, mostly no.  Those implement virtual synchrony, which is
closely related to consensus but not quite the same even in a formal CS
sense.  In practice, using them is *very* different.  Two jobs ago, I
inherited a design based on the idea that if everyone starts at the same
state and handles the same messages in the same order (in that case they
were using Spread) then they'd all stay consistent.  Sounds great in
theory, right?  Unfortunately, in practice it meant that returning a
node which had missed messages to a consistent state was our problem,
and it was an unreasonably complex one.  Debugging
failure-during-recovery problems in that code was some of the least fun
I ever had at that job.  A consensus protocol, with its focus on
consistency of data rather than consistency of communication, seems like
a better fit for what we're trying to achieve.
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-05 Thread Krishnan Parthasarathi


- Original Message -
> On 5 Sep 2014, at 12:21, Kaushal M < kshlms...@gmail.com > wrote:
> 
> 
> 
> - Peer membership management
> - Maintains consistency of configuration data across nodes (distributed
> configuration store)
> - Distributed command execution (orchestration)
> - Service management (manage GlusterFS daemons)
> - Portmap service for GlusterFS daemons
> 
> Isn't some of this covered by crm/corosync/pacemaker/heartbeat?
> 

Maybe, I haven't explored the above technologies. consul can be used
for all the different functions that glusterd performs today. consul
has service discovery and "leadership algorithms" for executing commands
in the cluster, in its 'toolbox'. Portmap service can be implemented as a
dictionary with glusterfs-server processes as the key and their ports as
the value. We can build further sophistication as we find use for.

~KP

___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-05 Thread Krishnan Parthasarathi


- Original Message -
> On 05/09/2014, at 11:21 AM, Kaushal M wrote:
> 
> > As part of the first phase, we aim to delegate the distributed
> > configuration store. We are exploring consul [1]
> 
> Does this mean we'll need to learn Go as well as C and Python?
> 
> If so, that doesn't sound completely optimal. :/

consul is written in Go. I don't think that forces us to write our 
code in Go.

> 
> That being said, a lot of distributed/networked computing
> projects seem to be written in it these days.  Is Go specifically
> a good language for our kind of challenges, or is it more a case
> of "the new shiny"?

I would prefer to write new code in a language other than C. But that's
me. I haven't written a lot of Go to comment :-(

~KP
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-05 Thread Marcus Bointon
On 5 Sep 2014, at 12:21, Kaushal M  wrote:

> - Peer membership management
> - Maintains consistency of configuration data across nodes (distributed 
> configuration store)
> - Distributed command execution (orchestration)
> - Service management (manage GlusterFS daemons)
> - Portmap service for GlusterFS daemons


Isn't some of this covered by crm/corosync/pacemaker/heartbeat?

Marcus
-- 
Marcus Bointon
Technical Director, Synchromedia Limited

Creators of http://www.smartmessages.net/
UK 1CRM solutions http://www.syniah.com/
mar...@synchromedia.co.uk | http://www.synchromedia.co.uk/



signature.asc
Description: Message signed with OpenPGP using GPGMail
___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel


Re: [Gluster-devel] [Gluster-users] Proposal for GlusterD-2.0

2014-09-05 Thread Justin Clift
On 05/09/2014, at 11:21 AM, Kaushal M wrote:

> As part of the first phase, we aim to delegate the distributed configuration 
> store. We are exploring consul [1] 

Does this mean we'll need to learn Go as well as C and Python?

If so, that doesn't sound completely optimal. :/

That being said, a lot of distributed/networked computing
projects seem to be written in it these days.  Is Go specifically
a good language for our kind of challenges, or is it more a case
of "the new shiny"?

+ Justin

--
GlusterFS - http://www.gluster.org

An open source, distributed file system scaling to several
petabytes, and handling thousands of clients.

My personal twitter: twitter.com/realjustinclift

___
Gluster-devel mailing list
Gluster-devel@gluster.org
http://supercolony.gluster.org/mailman/listinfo/gluster-devel