I don't disagree. The reasons I chose this way are:
1. We are using other stuff in my team instead of traffic_ctl to manage the
process and do the upgrade.
2. traffic_ctl --drain can only support HTTP and it can only be used when
restarting ATS. That makes it hardly useful in our use case.

2017-05-08 22:16 GMT-07:00 James Peach <jpe...@apache.org>:

>
>
> On 8 May 2017, at 21:48, Miles Libbey wrote:
>
> We'd also like a bit more fine grained control in the process -- we
>> frequently want to perform maintenance on a server (upgrading ATS;
>> upgrading the OS; performing hardware changes, etc) after draining but
>> before restarting ATS. I suppose this would mean allowing the --drain
>> option to apply to traffic_Ctl server stop.
>>
>
> Yes I agree that draining make sense for stop as well as restart.
>
>
>
>> miles
>>
>> On Mon, May 8, 2017 at 8:19 PM, James Peach <jpe...@apache.org> wrote:
>>
>>> This patch adds another separate shutdown mechanism that only works for
>>> HTTP/2. I think that we really ought to have a single, well-defined
>>> graceful
>>> shutdown that works for all protocols.
>>>
>>> In HTTP/1.1 it works like this:
>>>         - You (possibly dynamically) set
>>> proxy.config.restart.active_client_threshold
>>>         - You run “traffic_ctl server restart —drain”
>>>
>>> Then, once client connections have been drained to the threshold,
>>> traffic_server restarts. Note that this assumes that you have some
>>> additional orchestration that triggers header_rewrite to inject a
>>> “Connection: close” header, and tell the GSLB to stop sending new
>>> connections.
>>>
>>> After this HTTP/2 change, there is a new graceful shutdown path
>>>         - You (at startup only) set proxy.config.stop.shutdown_timeout
>>>         - You send a signal to traffic_server
>>>
>>> This flips a global variable to the “drain” state, then sleeps in the
>>> signal
>>> handler until the timeout is reached. In HTTP/2 only, any new connections
>>> will be accepted and then immediately closed.
>>>
>>> To rationalize these disparate approaches, I suggest that we go back to
>>> the
>>> traffic_ctl methodology, and enhance it so that it sends a message to
>>> traffic_server that puts it into a known draining state. This should be
>>> published in a metric and should be reversible so you can abort the
>>> drain.
>>> The metric can be observed by HTTP/1.1 and HTTP/2 to take appropriate
>>> action. We should also add a new setting
>>> “proxy.config.restart.active_client_timeout” (or something like that) to
>>> handle the maximum time to wait for traffic to drain.
>>>
>>> I’m not sure whether it is a good idea to close connections in HTTP/2
>>> while
>>> we are in draining state. If there is a desire for this, I would like it
>>> to
>>> be configurable (defaulting to off).
>>>
>>> On 8 May 2017, at 18:17, Masakazu Kitajo wrote:
>>>
>>> Merged #1710.
>>>>
>>>> --
>>>> You are receiving this because you are subscribed to this thread.
>>>> Reply to this email directly or view it on GitHub:
>>>> https://github.com/apache/trafficserver/pull/1710#event-1073784726
>>>>
>>>
>>>
>>>
>>>

Reply via email to