Re: nginx custom script location

2012-05-16 Thread Tomasz Torcz
On Wed, May 16, 2012 at 01:19:20AM +0200, Michal Schmidt wrote:
 On 05/16/2012 12:21 AM, Jamie Nguyen wrote:
 /etc/init.d/nginx upgrade
 
 This has disappeared following migration to systemd, so my intention
 is to include an nginx-upgrade shell script to replace this
 functionality.
 
 My question is, where should this shell script go? In /usr/bin/nginx-upgrade?
 
 Yes, this looks like a good choice to me.
 
 Then immediately a question comes to mind: Shouldn't the script be
 pushed upstream, rather than being a Fedora-specific addition?

  Also, implementing socket-activation in nginx would make it upgradable
without losing any connections.

-- 
Tomasz Torcz   ,,(...) today's high-end is tomorrow's embedded processor.''
xmpp: zdzich...@chrome.pl  -- Mitchell Blank on LKML

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel

Re: nginx custom script location

2012-05-16 Thread Jamie Nguyen
On 16 May 2012 00:19, Michal Schmidt mschm...@redhat.com wrote:
 On 05/16/2012 12:21 AM, Jamie Nguyen wrote:

    /etc/init.d/nginx upgrade

 This has disappeared following migration to systemd, so my intention
 is to include an nginx-upgrade shell script to replace this
 functionality.

 My question is, where should this shell script go? In
 /usr/bin/nginx-upgrade?


 Yes, this looks like a good choice to me.

 Then immediately a question comes to mind: Shouldn't the script be pushed
 upstream, rather than being a Fedora-specific addition?

This script doesn't do anything new compared to our initscript, so
upstream probably won't do much more than document it here:
http://wiki.nginx.org/CommandLine#Upgrading_To_a_New_Binary_On_The_Fly

The simplest form of the script is literally just 2 commands (though
I've implemented it in a slightly more calculated manner):
/bin/systemctl kill --signal=USR2 nginx.service
/bin/systemctl kill --signal=QUIT --kill-who=main nginx.service

Nonetheless, I have offered both our nginx.service file and the above
script to be upstreamed, or at least documented in their wiki:
http://mailman.nginx.org/pipermail/nginx-devel/2012-May/002228.html

Thanks for your advice.

Kind regards,
Jamie
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel

Re: nginx custom script location

2012-05-16 Thread Jamie Nguyen
On 16 May 2012 08:16, Tomasz Torcz to...@pipebreaker.pl wrote:
 On Wed, May 16, 2012 at 01:19:20AM +0200, Michal Schmidt wrote:
 On 05/16/2012 12:21 AM, Jamie Nguyen wrote:
     /etc/init.d/nginx upgrade
 
 This has disappeared following migration to systemd, so my intention
 is to include an nginx-upgrade shell script to replace this
 functionality.
 
 My question is, where should this shell script go? In 
 /usr/bin/nginx-upgrade?

 Yes, this looks like a good choice to me.

 Then immediately a question comes to mind: Shouldn't the script be
 pushed upstream, rather than being a Fedora-specific addition?

  Also, implementing socket-activation in nginx would make it upgradable
 without losing any connections.

Sorry, could you clarify? I don't see how that would help in this situation.

AFAIK, systemd socket activation is useful either for parallelization
during system startup, or on-demand activation. The former doesn't
help, and the latter is definitely not what we want for a web server.


Kind regards,
Jamie
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel

Re: nginx custom script location

2012-05-16 Thread Tomasz Torcz
On Wed, May 16, 2012 at 06:10:08PM +0100, Jamie Nguyen wrote:
 On 16 May 2012 08:16, Tomasz Torcz to...@pipebreaker.pl wrote:
  On Wed, May 16, 2012 at 01:19:20AM +0200, Michal Schmidt wrote:
  On 05/16/2012 12:21 AM, Jamie Nguyen wrote:
      /etc/init.d/nginx upgrade
  
  This has disappeared following migration to systemd, so my intention
  is to include an nginx-upgrade shell script to replace this
  functionality.
  
  My question is, where should this shell script go? In 
  /usr/bin/nginx-upgrade?
 
  Yes, this looks like a good choice to me.
 
  Then immediately a question comes to mind: Shouldn't the script be
  pushed upstream, rather than being a Fedora-specific addition?
 
   Also, implementing socket-activation in nginx would make it upgradable
  without losing any connections.
 
 Sorry, could you clarify? I don't see how that would help in this situation.
 
 AFAIK, systemd socket activation is useful either for parallelization
 during system startup, or on-demand activation. The former doesn't
 help, and the latter is definitely not what we want for a web server.

  If the new request comes during nginx restart¹, it won't be lost.
Socket is always opened by systemd and the connection will be buffered
until new nginx is ready to server it.

¹ in time between old nginx closing its socket and new nginx creating new

-- 
Tomasz Torcz God, root, what's the difference?
xmpp: zdzich...@chrome.pl God is more forgiving.

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel

Re: nginx custom script location

2012-05-16 Thread Jamie Nguyen
On 16 May 2012 20:09, Tomasz Torcz to...@pipebreaker.pl wrote:
 On Wed, May 16, 2012 at 06:10:08PM +0100, Jamie Nguyen wrote:
 On 16 May 2012 08:16, Tomasz Torcz to...@pipebreaker.pl wrote:
   Also, implementing socket-activation in nginx would make it upgradable
  without losing any connections.

 Sorry, could you clarify? I don't see how that would help in this situation.

 AFAIK, systemd socket activation is useful either for parallelization
 during system startup, or on-demand activation. The former doesn't
 help, and the latter is definitely not what we want for a web server.

  If the new request comes during nginx restart¹, it won't be lost.
 Socket is always opened by systemd and the connection will be buffered
 until new nginx is ready to server it.

 ¹ in time between old nginx closing its socket and new nginx creating new

Will look into this. Thanks for clarifying!


Kind regards,
Jamie
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel

nginx custom script location

2012-05-15 Thread Jamie Nguyen
Hi,

Currently trying to sort out:
https://bugzilla.redhat.com/show_bug.cgi?id=821926

Following an update to the nginx package, the command below would
allow the server to switch to the new binary with zero-downtime (new
process created, old process gracefully phased out):

   /etc/init.d/nginx upgrade

This has disappeared following migration to systemd, so my intention
is to include an nginx-upgrade shell script to replace this
functionality.

My question is, where should this shell script go? In /usr/bin/nginx-upgrade?


(As an aside, the other approach is to *automatically* do a
zero-downtime upgrade in %post. This is the simplest solution and I
think Debian do an automatic zero-downtime upgrade for their nginx
package. I was entertaining this idea earlier but now feel it's safer
and more in line with user expectations to require manual
intervention. In most cases, currently running services are not
affected by system updates without manually restarting the service.)

Kind regards,
Jamie
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel

Re: nginx custom script location

2012-05-15 Thread Michal Schmidt

On 05/16/2012 12:21 AM, Jamie Nguyen wrote:

/etc/init.d/nginx upgrade

This has disappeared following migration to systemd, so my intention
is to include an nginx-upgrade shell script to replace this
functionality.

My question is, where should this shell script go? In /usr/bin/nginx-upgrade?


Yes, this looks like a good choice to me.

Then immediately a question comes to mind: Shouldn't the script be 
pushed upstream, rather than being a Fedora-specific addition?


Michal
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel