All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kyle Bader <kyle.bader@gmail.com>
To: Mark Nelson <mnelson@redhat.com>
Cc: John Spray <jspray@redhat.com>,
	Christian Wuerdig <christian.wuerdig@gmail.com>,
	Sage Weil <sweil@redhat.com>,
	Ceph Development <ceph-devel@vger.kernel.org>
Subject: Re: config on mons
Date: Mon, 13 Nov 2017 10:20:56 -0800	[thread overview]
Message-ID: <CAFMfnwoD8q+kaF9BEDFpT71qAfb62cdbajrNboR9MbsWO_-=8Q@mail.gmail.com> (raw)
In-Reply-To: <0fc42e25-2944-e020-00f5-8ed56a9464b7@redhat.com>

Configuration files are often driven by configuration management, with
previous versions stored in some kind of version control systems. We
should make sure that if configuration moves to the monitors that you
have some form of history and rollback capabilities. It might be worth
modeling it similar to network switch configuration shells, a la
Junos.

* change configuration
* require commit configuration change
* ability to rollback N configuration changes
* ability to diff to configuration versions

That way an admin can figure out when the last configuration change
was, what changed, and rollback if necessary.


On Mon, Nov 13, 2017 at 8:45 AM, Mark Nelson <mnelson@redhat.com> wrote:
>
>
> On 11/13/2017 04:00 AM, John Spray wrote:
>>
>> On Mon, Nov 13, 2017 at 4:30 AM, Christian Wuerdig
>> <christian.wuerdig@gmail.com> wrote:
>>>
>>> Hm, have you guys considered utilizing existing key-value stores like
>>> Consul or etcd for this instead of rolling your own? Not sure about
>>> the details of etcd but the Consul API is quite nice, supports long
>>> polling and transactional support. Obvious downside is that you depend
>>> on a separate service but that can also be an advantage.
>>
>>
>> When it comes to putting and getting values, Consul and etcd don't
>> really offer much that the ceph mons don't already do.  As you say, it
>> would be a new dependency, but more importantly it would also be a
>> whole new network comms path with its own authentication, ports, etc.
>>
>> This is one of those situations where using something off the shelf is
>> actually way more effort (for developers and for users) than building
>> it in.
>>
>> John
>>
>
> I don't disagree, but I could imagine there are a number of sysadmins that
> want Ceph to play nice with whatever they are currently using for everything
> else they maintain.  Whatever we do here, we probably want to be mindful (ie
> I'd argue that deprecating ceph.conf might not be well liked by folks that
> are happy with their current setup).
>
> Mark
>
>
>>>
>>> On Sat, Nov 11, 2017 at 4:30 AM, Sage Weil <sweil@redhat.com> wrote:
>>>>
>>>> I've started on this long-discussed feature!  I haven't gotten too far
>>>> but
>>>> you can see what's there so far at
>>>>
>>>>         https://github.com/ceph/ceph/pull/18856
>>>>
>>>> The first thing perhaps is to finalize what flexibility we want to
>>>> support.  I've a quick summary at
>>>>
>>>>         http://pad.ceph.com/p/config
>>>>
>>>> Namely,
>>>>
>>>>  config/option = value               # like [global]
>>>>  config/$type/option = value         # like [mon]
>>>>  config/$type.$id/option = value     # like [mon.a]
>>>>
>>>> There are two new things:
>>>>
>>>>  config/.../class:$classname/option = value
>>>>
>>>> For OSDs, this matches the device_class.  So you can do something like
>>>>
>>>>  config/osd/class:ssd/bluestore_cache_size = 10485760  # 10gb, woohoo!
>>>>
>>>> You can also match the crush location:
>>>>
>>>>  config/.../$crushtype:$crushvalue/option = value
>>>>
>>>> e.g.,
>>>>
>>>>  config/osd/rack:foo/debug_osd = 10    # hunting some issue
>>>>
>>>> This obviously makes sense for OSDs.  We can also make it makes sense
>>>> for
>>>> non-OSDs since everybody (clients and daemons) has a concept of
>>>> crush_location that is a set of key/value pairs like "host=foo rack=bar"
>>>> which match the CRUSH hierarchy.  In this case, my plan is to make the
>>>> initial mon authentication step include the hostname of the host you're
>>>> connecting from and then extract the rest of the location by lookup
>>>> up the host in the CRUSH map.
>>>>
>>>> The precedence for these is described here:
>>>>
>>>>
>>>> https://github.com/ceph/ceph/pull/18856/commits/5abbd0c9e279022f185787238d21eabbbe28e336#diff-344645b5339d494e1839ff1fcaa5cb7dR15
>>>>
>>>>
>>>> Lots of other thorny issues to consider.  For example:
>>>>
>>>> - What about monitor configs?  If they store their config paxos, and you
>>>> set an option that breaks paxos, how can you change/fix it?  For the
>>>> moment I'm just ignoring the mons.
>>>>
>>>> - What about ceph.conf?  My thought here is to mark which options are
>>>> legal for bootstrap (i.e., used during the initial connection to mon to
>>>> authenticate and fetch config), and warn on anything other than that in
>>>> ceph.conf.  But what about after you connect?  Do these options get
>>>> reset
>>>> to default?
>>>>
>>>> - Bootstrapping/upgrade: So far my best idea is to make the client share
>>>> it's config with the mon on startup, and the first time a given daemon
>>>> connects the mon will use that to populate it's config database.
>>>> Thereafter it will be ignored.
>>>>
>>>> - OSD startup: lots of stuff happens before we authenticate.  I think
>>>> there will be a new initial step to fetch config, then do all that work,
>>>> then start up for real.  And a new option to bypass mon configuration
>>>> to avoid that (and for old school folks who don't want centralized
>>>> configs... e.g. mon_config = false and everything works as before).
>>>>
>>>> Feedback welcome!
>>>> sage
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>>>> the body of a message to majordomo@vger.kernel.org
>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2017-11-13 18:20 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-10 15:30 config on mons Sage Weil
2017-11-13  0:27 ` Patrick Donnelly
2017-11-13  1:43 ` Yehuda Sadeh-Weinraub
2017-11-13  9:57   ` John Spray
2017-11-13 16:29     ` Yehuda Sadeh-Weinraub
2017-11-13  4:30 ` Christian Wuerdig
2017-11-13 10:00   ` John Spray
2017-11-13 16:45     ` Mark Nelson
2017-11-13 18:20       ` Kyle Bader [this message]
2017-11-13 18:40         ` John Spray
2017-11-14 10:18           ` Piotr Dałek
2017-11-14 11:36             ` John Spray
2017-11-14 13:58               ` Piotr Dałek
2017-11-14 16:24                 ` Sage Weil
2017-11-14 14:33               ` Mark Nelson
2017-11-14 16:37                 ` Kyle Bader
2017-11-14 18:01                   ` Alfredo Deza
2017-11-14 13:48             ` Mark Nelson
2017-11-13 13:23 ` John Spray
2017-11-14 22:21 ` Sage Weil
2017-11-14 23:45   ` John Spray
2017-11-15 13:32     ` Sage Weil
2017-11-15 17:16       ` Lars Marowsky-Bree
2017-11-15 21:26         ` Sage Weil
2017-11-30 22:31           ` Gregory Farnum
2017-12-01 17:53             ` Sage Weil

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAFMfnwoD8q+kaF9BEDFpT71qAfb62cdbajrNboR9MbsWO_-=8Q@mail.gmail.com' \
    --to=kyle.bader@gmail.com \
    --cc=ceph-devel@vger.kernel.org \
    --cc=christian.wuerdig@gmail.com \
    --cc=jspray@redhat.com \
    --cc=mnelson@redhat.com \
    --cc=sweil@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.