You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cloudstack.apache.org by Rohit Yadav <ro...@shapeblue.com> on 2017/11/01 06:38:59 UTC

Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

All,


The PR has received enough reviews and (regression) testings to consider it for merging. I'll keep the PR open for few days to receive further reviews and additional testing. Thanks.


Regards.

________________________________
From: Rohit Yadav <ro...@shapeblue.com>
Sent: Monday, October 30, 2017 4:55:55 PM
To: dev@cloudstack.apache.org; users@cloudstack.apache.org
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

All,


The fatjar PR that aims at migrating to embedded Jetty is ready for review now:

https://github.com/apache/cloudstack/pull/2226


New configuration file updates/changes:
- /etc/cloudstack/management/server.properties - single file to configure ports, webapp directory, http/s configurations, webapp context path etc.
- Environment configuration set at /etc/default/cloudstack-management (CentOS accepts having env conf files at /etc/default, while Ubuntu uses this path most of the time)

High-level changelog:

- Changes packaging to a shaded (fat/uber) jar
- Updates jetty dependencies version 9.2 (java 7+)
- Removal of tomcat, config files and additional distro-provided java dependencies
- Does not shade and include mysql-connector (cat-x), still distro-provided and used from classpath
- Introduce ServerDaemon class with customizations
- Migrate to embedded Jetty server with a new ServerDaemon launcher
- Introduce a new server.properties file for easier configuration
- Have a single /etc/default/cloudstack-management to configure env
- Reduce shaded jar file, removing unnecessary dependencies, thereby reducing overall rpm/deb file size to less than 84MB
- Upgrade to Spring 5.x, upgrade several jar dependencies
- Upgrade and use bountcastle as a separate un-shaded jar dependency
- Have both embedded UI assets in uber jar and separate webapp directory
- Refactor systemd and init scripts, cleanup packaging
- Made cloudstack-setup-databases faster, using `urandom`
- Remove unmaintained distro packagings and config files


Regards.

________________________________
From: Rohit Yadav <ro...@shapeblue.com>
Sent: Thursday, August 24, 2017 1:24:06 AM
To: Syed Ahmed; dev@cloudstack.apache.org
Cc: Cloudstack Users List
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

All,


Based on last Trilian based test runs, no regressions are seen. We'll aim for following changes and afterwards works towards merging the PR;


- An option to provide explicit webapp directory, for custom UI etc. The default UI would be bundled in the fat jar, with the UI assets/files also copied/packaged at /usr/share/cloudstack-management/webapp (or ui folder) to allow for customizations

- Fix packaging, refactor systemd/initd script

- Completely move to java/systemd, instead of using jsvc+systemd for systemd-enabled distros, and use init.d scripts for centos6/older distros

- Logging and other improvements to ServerDaemon (the main class that run jetty in the fatjar)

- A xml/yml file to configure SSL certificates, options etc.


- Rohit

________________________________
From: Syed Ahmed <sa...@cloudops.com>
Sent: Thursday, August 17, 2017 3:00:48 PM
To: dev@cloudstack.apache.org
Cc: Rohit Yadav; Cloudstack Users List
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

I have always been a big fan of fat, dependency-free binaries. Good work guys!


rohit.yadav@shapeblue.com
www.shapeblue.com<http://www.shapeblue.com>
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue




rohit.yadav@shapeblue.com
www.shapeblue.com<http://www.shapeblue.com>
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue




rohit.yadav@shapeblue.com 
www.shapeblue.com
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue
  
 

On Thu, Aug 10, 2017 at 11:23 AM, Wido den Hollander <wi...@widodh.nl>> wrote:

> Op 10 augustus 2017 om 14:09 schreef Rohit Yadav <ro...@shapeblue.com>>:
>
>
> All,
>
>
> Distro provided tomcat6/7/* has caused production issues for few users in the past. Due to this, the ACS deployments are inconsistent with the version/jars of tomcat in use. By allowing exploded war to be shipped, can allow admins to sometimes overwrite cloudstack jars causing production issues. I think moving to a CloudStack uber/fat jar will make it easier to deploy CloudStack in environments and write custom init/systemd scripts and fix cloudstack setup databases/management scripts without assuming the distro we're on.
>

Yes, I agree. A flat jar makes things a lot easier.

>
> With this discussion thread, I would like to engage with the community if they've any reservations from moving away from tomcat to embedded jetty + fat/uber jar based packaging. Please share your thoughts and comments.
>
>
> On very high level the packaging will provide the following:
>
> - A ServerDaemon class that can accept custom location of UI (webapp directory), logging, and other environment options, part of the fatjar.
>
> - A config file (xml/yml or otherwise) where you can configure keystore/SSL-certificates, paths (/client), ports, logging etc.
>
> - Default libraries/plugin path at /usr/share/cloudstack-management/lib, UI path at /usr/share/cloudstack-management/webapp
>
> - A default file (available at /etc/default/cloudstack-management or symlink at /etc/sysconfig etc) where you can specific custom variables, java options, classpath etc.
>
> - Refactored init.d/systemd scripts to be commonly used b/w rpm/deb build scripts
>
> - A new/improve logrotate file
>
> - Logging will be handled by log4j (the same xml/config file you normally use)
>
> - Currently we're using jsvc to handle mgmt server process, however we may move to java+systemd completely
>

I suggest that we only use init.d on RHEL 6 and Ubuntu 14.04, but on RHEL 7 and Ubuntu 16.04 (any distro that runs with systemd) we should try to avoid using jsvc.

That way we don't have to daemonize the MGMT server and keep it attached to systemd. Also makes it easy to just print logs to stdout and have journalctl take care of them.

>
> Marc-Aurèle (ExoScale) and I have collaborated on this problem and we finally have a PR (not complete) where we can show this actually works, please have a look:

Awesome work!

>
> https://github.com/apache/cloudstack/pull/2226
>
>
> Once the PR is accepted, we can include a topic page in the 4.11/future release notes docs about upgrading in-place and setting up ssl certs etc.
>
>
> Regards.
>
> rohit.yadav@shapeblue.com<ma...@shapeblue.com>
> www.shapeblue.com<http://www.shapeblue.com>
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
>
>
>


Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

Posted by Syed Ahmed <sa...@cloudops.com>.
Sweet
On Sat, Nov 4, 2017 at 12:41 PM Wido den Hollander <wi...@widodh.nl> wrote:

>
>
> > Op 4 nov. 2017 om 17:24 heeft Rohit Yadav <ro...@shapeblue.com>
> het volgende geschreven:
> >
> > Thanks all for your feedback, review contribution on the PR, it has been
> merged after peer reviews, testing (regression and upgrade).
> >
>
> Awesome! Really looking forward to this and 4.11!
>
> Wido
>
> >
> > Regards.
> >
> > ________________________________
> > From: Rohit Yadav <ro...@shapeblue.com>
> > Sent: Wednesday, November 1, 2017 12:08:59 PM
> > To: dev@cloudstack.apache.org; users@cloudstack.apache.org
> > Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> >
> > All,
> >
> >
> > The PR has received enough reviews and (regression) testings to consider
> it for merging. I'll keep the PR open for few days to receive further
> reviews and additional testing. Thanks.
> >
> >
> > Regards.
> >
> > ________________________________
> > From: Rohit Yadav <ro...@shapeblue.com>
> > Sent: Monday, October 30, 2017 4:55:55 PM
> > To: dev@cloudstack.apache.org; users@cloudstack.apache.org
> > Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> >
> > All,
> >
> >
> > The fatjar PR that aims at migrating to embedded Jetty is ready for
> review now:
> >
> > https://github.com/apache/cloudstack/pull/2226
> >
> >
> > New configuration file updates/changes:
> > - /etc/cloudstack/management/server.properties - single file to
> configure ports, webapp directory, http/s configurations, webapp context
> path etc.
> > - Environment configuration set at /etc/default/cloudstack-management
> (CentOS accepts having env conf files at /etc/default, while Ubuntu uses
> this path most of the time)
> >
> > High-level changelog:
> >
> > - Changes packaging to a shaded (fat/uber) jar
> > - Updates jetty dependencies version 9.2 (java 7+)
> > - Removal of tomcat, config files and additional distro-provided java
> dependencies
> > - Does not shade and include mysql-connector (cat-x), still
> distro-provided and used from classpath
> > - Introduce ServerDaemon class with customizations
> > - Migrate to embedded Jetty server with a new ServerDaemon launcher
> > - Introduce a new server.properties file for easier configuration
> > - Have a single /etc/default/cloudstack-management to configure env
> > - Reduce shaded jar file, removing unnecessary dependencies, thereby
> reducing overall rpm/deb file size to less than 84MB
> > - Upgrade to Spring 5.x, upgrade several jar dependencies
> > - Upgrade and use bountcastle as a separate un-shaded jar dependency
> > - Have both embedded UI assets in uber jar and separate webapp directory
> > - Refactor systemd and init scripts, cleanup packaging
> > - Made cloudstack-setup-databases faster, using `urandom`
> > - Remove unmaintained distro packagings and config files
> >
> >
> > Regards.
> >
> > ________________________________
> > From: Rohit Yadav <ro...@shapeblue.com>
> > Sent: Thursday, August 24, 2017 1:24:06 AM
> > To: Syed Ahmed; dev@cloudstack.apache.org
> > Cc: Cloudstack Users List
> > Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> >
> > All,
> >
> >
> > Based on last Trilian based test runs, no regressions are seen. We'll
> aim for following changes and afterwards works towards merging the PR;
> >
> >
> > - An option to provide explicit webapp directory, for custom UI etc. The
> default UI would be bundled in the fat jar, with the UI assets/files also
> copied/packaged at /usr/share/cloudstack-management/webapp (or ui folder)
> to allow for customizations
> >
> > - Fix packaging, refactor systemd/initd script
> >
> > - Completely move to java/systemd, instead of using jsvc+systemd for
> systemd-enabled distros, and use init.d scripts for centos6/older distros
> >
> > - Logging and other improvements to ServerDaemon (the main class that
> run jetty in the fatjar)
> >
> > - A xml/yml file to configure SSL certificates, options etc.
> >
> >
> > - Rohit
> >
> > ________________________________
> > From: Syed Ahmed <sa...@cloudops.com>
> > Sent: Thursday, August 17, 2017 3:00:48 PM
> > To: dev@cloudstack.apache.org
> > Cc: Rohit Yadav; Cloudstack Users List
> > Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> >
> > I have always been a big fan of fat, dependency-free binaries. Good work
> guys!
> >
> >
> > rohit.yadav@shapeblue.com
> > www.shapeblue.com<http://www.shapeblue.com>
> > 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> > @shapeblue
> >
> >
> >
> >
> > rohit.yadav@shapeblue.com
> > www.shapeblue.com<http://www.shapeblue.com>
> > 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> > @shapeblue
> >
> >
> >
> >
> > rohit.yadav@shapeblue.com
> > www.shapeblue.com<http://www.shapeblue.com>
> > 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> > @shapeblue
> >
> >
> >
> >
> > rohit.yadav@shapeblue.com
> > www.shapeblue.com
> > 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> > @shapeblue
> >
> >
> >
> >> On Thu, Aug 10, 2017 at 11:23 AM, Wido den Hollander <wido@widodh.nl
> <ma...@widodh.nl>> wrote:
> >>
> >> Op 10 augustus 2017 om 14:09 schreef Rohit Yadav <
> rohit.yadav@shapeblue.com<ma...@shapeblue.com>>:
> >>
> >>
> >> All,
> >>
> >>
> >> Distro provided tomcat6/7/* has caused production issues for few users
> in the past. Due to this, the ACS deployments are inconsistent with the
> version/jars of tomcat in use. By allowing exploded war to be shipped, can
> allow admins to sometimes overwrite cloudstack jars causing production
> issues. I think moving to a CloudStack uber/fat jar will make it easier to
> deploy CloudStack in environments and write custom init/systemd scripts and
> fix cloudstack setup databases/management scripts without assuming the
> distro we're on.
> >>
> >
> > Yes, I agree. A flat jar makes things a lot easier.
> >
> >>
> >> With this discussion thread, I would like to engage with the community
> if they've any reservations from moving away from tomcat to embedded jetty
> + fat/uber jar based packaging. Please share your thoughts and comments.
> >>
> >>
> >> On very high level the packaging will provide the following:
> >>
> >> - A ServerDaemon class that can accept custom location of UI (webapp
> directory), logging, and other environment options, part of the fatjar.
> >>
> >> - A config file (xml/yml or otherwise) where you can configure
> keystore/SSL-certificates, paths (/client), ports, logging etc.
> >>
> >> - Default libraries/plugin path at
> /usr/share/cloudstack-management/lib, UI path at
> /usr/share/cloudstack-management/webapp
> >>
> >> - A default file (available at /etc/default/cloudstack-management or
> symlink at /etc/sysconfig etc) where you can specific custom variables,
> java options, classpath etc.
> >>
> >> - Refactored init.d/systemd scripts to be commonly used b/w rpm/deb
> build scripts
> >>
> >> - A new/improve logrotate file
> >>
> >> - Logging will be handled by log4j (the same xml/config file you
> normally use)
> >>
> >> - Currently we're using jsvc to handle mgmt server process, however we
> may move to java+systemd completely
> >>
> >
> > I suggest that we only use init.d on RHEL 6 and Ubuntu 14.04, but on
> RHEL 7 and Ubuntu 16.04 (any distro that runs with systemd) we should try
> to avoid using jsvc.
> >
> > That way we don't have to daemonize the MGMT server and keep it attached
> to systemd. Also makes it easy to just print logs to stdout and have
> journalctl take care of them.
> >
> >>
> >> Marc-Aurèle (ExoScale) and I have collaborated on this problem and we
> finally have a PR (not complete) where we can show this actually works,
> please have a look:
> >
> > Awesome work!
> >
> >>
> >> https://github.com/apache/cloudstack/pull/2226
> >>
> >>
> >> Once the PR is accepted, we can include a topic page in the 4.11/future
> release notes docs about upgrading in-place and setting up ssl certs etc.
> >>
> >>
> >> Regards.
> >>
> >> rohit.yadav@shapeblue.com<ma...@shapeblue.com>
> >> www.shapeblue.com<http://www.shapeblue.com>
> >> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> >> @shapeblue
> >>
> >>
> >>
> >
>

Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

Posted by Wido den Hollander <wi...@widodh.nl>.

> Op 4 nov. 2017 om 17:24 heeft Rohit Yadav <ro...@shapeblue.com> het volgende geschreven:
> 
> Thanks all for your feedback, review contribution on the PR, it has been merged after peer reviews, testing (regression and upgrade).
> 

Awesome! Really looking forward to this and 4.11!

Wido

> 
> Regards.
> 
> ________________________________
> From: Rohit Yadav <ro...@shapeblue.com>
> Sent: Wednesday, November 1, 2017 12:08:59 PM
> To: dev@cloudstack.apache.org; users@cloudstack.apache.org
> Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> 
> All,
> 
> 
> The PR has received enough reviews and (regression) testings to consider it for merging. I'll keep the PR open for few days to receive further reviews and additional testing. Thanks.
> 
> 
> Regards.
> 
> ________________________________
> From: Rohit Yadav <ro...@shapeblue.com>
> Sent: Monday, October 30, 2017 4:55:55 PM
> To: dev@cloudstack.apache.org; users@cloudstack.apache.org
> Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> 
> All,
> 
> 
> The fatjar PR that aims at migrating to embedded Jetty is ready for review now:
> 
> https://github.com/apache/cloudstack/pull/2226
> 
> 
> New configuration file updates/changes:
> - /etc/cloudstack/management/server.properties - single file to configure ports, webapp directory, http/s configurations, webapp context path etc.
> - Environment configuration set at /etc/default/cloudstack-management (CentOS accepts having env conf files at /etc/default, while Ubuntu uses this path most of the time)
> 
> High-level changelog:
> 
> - Changes packaging to a shaded (fat/uber) jar
> - Updates jetty dependencies version 9.2 (java 7+)
> - Removal of tomcat, config files and additional distro-provided java dependencies
> - Does not shade and include mysql-connector (cat-x), still distro-provided and used from classpath
> - Introduce ServerDaemon class with customizations
> - Migrate to embedded Jetty server with a new ServerDaemon launcher
> - Introduce a new server.properties file for easier configuration
> - Have a single /etc/default/cloudstack-management to configure env
> - Reduce shaded jar file, removing unnecessary dependencies, thereby reducing overall rpm/deb file size to less than 84MB
> - Upgrade to Spring 5.x, upgrade several jar dependencies
> - Upgrade and use bountcastle as a separate un-shaded jar dependency
> - Have both embedded UI assets in uber jar and separate webapp directory
> - Refactor systemd and init scripts, cleanup packaging
> - Made cloudstack-setup-databases faster, using `urandom`
> - Remove unmaintained distro packagings and config files
> 
> 
> Regards.
> 
> ________________________________
> From: Rohit Yadav <ro...@shapeblue.com>
> Sent: Thursday, August 24, 2017 1:24:06 AM
> To: Syed Ahmed; dev@cloudstack.apache.org
> Cc: Cloudstack Users List
> Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> 
> All,
> 
> 
> Based on last Trilian based test runs, no regressions are seen. We'll aim for following changes and afterwards works towards merging the PR;
> 
> 
> - An option to provide explicit webapp directory, for custom UI etc. The default UI would be bundled in the fat jar, with the UI assets/files also copied/packaged at /usr/share/cloudstack-management/webapp (or ui folder) to allow for customizations
> 
> - Fix packaging, refactor systemd/initd script
> 
> - Completely move to java/systemd, instead of using jsvc+systemd for systemd-enabled distros, and use init.d scripts for centos6/older distros
> 
> - Logging and other improvements to ServerDaemon (the main class that run jetty in the fatjar)
> 
> - A xml/yml file to configure SSL certificates, options etc.
> 
> 
> - Rohit
> 
> ________________________________
> From: Syed Ahmed <sa...@cloudops.com>
> Sent: Thursday, August 17, 2017 3:00:48 PM
> To: dev@cloudstack.apache.org
> Cc: Rohit Yadav; Cloudstack Users List
> Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> 
> I have always been a big fan of fat, dependency-free binaries. Good work guys!
> 
> 
> rohit.yadav@shapeblue.com
> www.shapeblue.com<http://www.shapeblue.com>
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
> 
> 
> 
> 
> rohit.yadav@shapeblue.com
> www.shapeblue.com<http://www.shapeblue.com>
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
> 
> 
> 
> 
> rohit.yadav@shapeblue.com
> www.shapeblue.com<http://www.shapeblue.com>
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
> 
> 
> 
> 
> rohit.yadav@shapeblue.com 
> www.shapeblue.com
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
> 
> 
> 
>> On Thu, Aug 10, 2017 at 11:23 AM, Wido den Hollander <wi...@widodh.nl>> wrote:
>> 
>> Op 10 augustus 2017 om 14:09 schreef Rohit Yadav <ro...@shapeblue.com>>:
>> 
>> 
>> All,
>> 
>> 
>> Distro provided tomcat6/7/* has caused production issues for few users in the past. Due to this, the ACS deployments are inconsistent with the version/jars of tomcat in use. By allowing exploded war to be shipped, can allow admins to sometimes overwrite cloudstack jars causing production issues. I think moving to a CloudStack uber/fat jar will make it easier to deploy CloudStack in environments and write custom init/systemd scripts and fix cloudstack setup databases/management scripts without assuming the distro we're on.
>> 
> 
> Yes, I agree. A flat jar makes things a lot easier.
> 
>> 
>> With this discussion thread, I would like to engage with the community if they've any reservations from moving away from tomcat to embedded jetty + fat/uber jar based packaging. Please share your thoughts and comments.
>> 
>> 
>> On very high level the packaging will provide the following:
>> 
>> - A ServerDaemon class that can accept custom location of UI (webapp directory), logging, and other environment options, part of the fatjar.
>> 
>> - A config file (xml/yml or otherwise) where you can configure keystore/SSL-certificates, paths (/client), ports, logging etc.
>> 
>> - Default libraries/plugin path at /usr/share/cloudstack-management/lib, UI path at /usr/share/cloudstack-management/webapp
>> 
>> - A default file (available at /etc/default/cloudstack-management or symlink at /etc/sysconfig etc) where you can specific custom variables, java options, classpath etc.
>> 
>> - Refactored init.d/systemd scripts to be commonly used b/w rpm/deb build scripts
>> 
>> - A new/improve logrotate file
>> 
>> - Logging will be handled by log4j (the same xml/config file you normally use)
>> 
>> - Currently we're using jsvc to handle mgmt server process, however we may move to java+systemd completely
>> 
> 
> I suggest that we only use init.d on RHEL 6 and Ubuntu 14.04, but on RHEL 7 and Ubuntu 16.04 (any distro that runs with systemd) we should try to avoid using jsvc.
> 
> That way we don't have to daemonize the MGMT server and keep it attached to systemd. Also makes it easy to just print logs to stdout and have journalctl take care of them.
> 
>> 
>> Marc-Aurèle (ExoScale) and I have collaborated on this problem and we finally have a PR (not complete) where we can show this actually works, please have a look:
> 
> Awesome work!
> 
>> 
>> https://github.com/apache/cloudstack/pull/2226
>> 
>> 
>> Once the PR is accepted, we can include a topic page in the 4.11/future release notes docs about upgrading in-place and setting up ssl certs etc.
>> 
>> 
>> Regards.
>> 
>> rohit.yadav@shapeblue.com<ma...@shapeblue.com>
>> www.shapeblue.com<http://www.shapeblue.com>
>> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
>> @shapeblue
>> 
>> 
>> 
> 

Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

Posted by Wido den Hollander <wi...@widodh.nl>.

> Op 4 nov. 2017 om 17:24 heeft Rohit Yadav <ro...@shapeblue.com> het volgende geschreven:
> 
> Thanks all for your feedback, review contribution on the PR, it has been merged after peer reviews, testing (regression and upgrade).
> 

Awesome! Really looking forward to this and 4.11!

Wido

> 
> Regards.
> 
> ________________________________
> From: Rohit Yadav <ro...@shapeblue.com>
> Sent: Wednesday, November 1, 2017 12:08:59 PM
> To: dev@cloudstack.apache.org; users@cloudstack.apache.org
> Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> 
> All,
> 
> 
> The PR has received enough reviews and (regression) testings to consider it for merging. I'll keep the PR open for few days to receive further reviews and additional testing. Thanks.
> 
> 
> Regards.
> 
> ________________________________
> From: Rohit Yadav <ro...@shapeblue.com>
> Sent: Monday, October 30, 2017 4:55:55 PM
> To: dev@cloudstack.apache.org; users@cloudstack.apache.org
> Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> 
> All,
> 
> 
> The fatjar PR that aims at migrating to embedded Jetty is ready for review now:
> 
> https://github.com/apache/cloudstack/pull/2226
> 
> 
> New configuration file updates/changes:
> - /etc/cloudstack/management/server.properties - single file to configure ports, webapp directory, http/s configurations, webapp context path etc.
> - Environment configuration set at /etc/default/cloudstack-management (CentOS accepts having env conf files at /etc/default, while Ubuntu uses this path most of the time)
> 
> High-level changelog:
> 
> - Changes packaging to a shaded (fat/uber) jar
> - Updates jetty dependencies version 9.2 (java 7+)
> - Removal of tomcat, config files and additional distro-provided java dependencies
> - Does not shade and include mysql-connector (cat-x), still distro-provided and used from classpath
> - Introduce ServerDaemon class with customizations
> - Migrate to embedded Jetty server with a new ServerDaemon launcher
> - Introduce a new server.properties file for easier configuration
> - Have a single /etc/default/cloudstack-management to configure env
> - Reduce shaded jar file, removing unnecessary dependencies, thereby reducing overall rpm/deb file size to less than 84MB
> - Upgrade to Spring 5.x, upgrade several jar dependencies
> - Upgrade and use bountcastle as a separate un-shaded jar dependency
> - Have both embedded UI assets in uber jar and separate webapp directory
> - Refactor systemd and init scripts, cleanup packaging
> - Made cloudstack-setup-databases faster, using `urandom`
> - Remove unmaintained distro packagings and config files
> 
> 
> Regards.
> 
> ________________________________
> From: Rohit Yadav <ro...@shapeblue.com>
> Sent: Thursday, August 24, 2017 1:24:06 AM
> To: Syed Ahmed; dev@cloudstack.apache.org
> Cc: Cloudstack Users List
> Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> 
> All,
> 
> 
> Based on last Trilian based test runs, no regressions are seen. We'll aim for following changes and afterwards works towards merging the PR;
> 
> 
> - An option to provide explicit webapp directory, for custom UI etc. The default UI would be bundled in the fat jar, with the UI assets/files also copied/packaged at /usr/share/cloudstack-management/webapp (or ui folder) to allow for customizations
> 
> - Fix packaging, refactor systemd/initd script
> 
> - Completely move to java/systemd, instead of using jsvc+systemd for systemd-enabled distros, and use init.d scripts for centos6/older distros
> 
> - Logging and other improvements to ServerDaemon (the main class that run jetty in the fatjar)
> 
> - A xml/yml file to configure SSL certificates, options etc.
> 
> 
> - Rohit
> 
> ________________________________
> From: Syed Ahmed <sa...@cloudops.com>
> Sent: Thursday, August 17, 2017 3:00:48 PM
> To: dev@cloudstack.apache.org
> Cc: Rohit Yadav; Cloudstack Users List
> Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack
> 
> I have always been a big fan of fat, dependency-free binaries. Good work guys!
> 
> 
> rohit.yadav@shapeblue.com
> www.shapeblue.com<http://www.shapeblue.com>
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
> 
> 
> 
> 
> rohit.yadav@shapeblue.com
> www.shapeblue.com<http://www.shapeblue.com>
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
> 
> 
> 
> 
> rohit.yadav@shapeblue.com
> www.shapeblue.com<http://www.shapeblue.com>
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
> 
> 
> 
> 
> rohit.yadav@shapeblue.com 
> www.shapeblue.com
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
> 
> 
> 
>> On Thu, Aug 10, 2017 at 11:23 AM, Wido den Hollander <wi...@widodh.nl>> wrote:
>> 
>> Op 10 augustus 2017 om 14:09 schreef Rohit Yadav <ro...@shapeblue.com>>:
>> 
>> 
>> All,
>> 
>> 
>> Distro provided tomcat6/7/* has caused production issues for few users in the past. Due to this, the ACS deployments are inconsistent with the version/jars of tomcat in use. By allowing exploded war to be shipped, can allow admins to sometimes overwrite cloudstack jars causing production issues. I think moving to a CloudStack uber/fat jar will make it easier to deploy CloudStack in environments and write custom init/systemd scripts and fix cloudstack setup databases/management scripts without assuming the distro we're on.
>> 
> 
> Yes, I agree. A flat jar makes things a lot easier.
> 
>> 
>> With this discussion thread, I would like to engage with the community if they've any reservations from moving away from tomcat to embedded jetty + fat/uber jar based packaging. Please share your thoughts and comments.
>> 
>> 
>> On very high level the packaging will provide the following:
>> 
>> - A ServerDaemon class that can accept custom location of UI (webapp directory), logging, and other environment options, part of the fatjar.
>> 
>> - A config file (xml/yml or otherwise) where you can configure keystore/SSL-certificates, paths (/client), ports, logging etc.
>> 
>> - Default libraries/plugin path at /usr/share/cloudstack-management/lib, UI path at /usr/share/cloudstack-management/webapp
>> 
>> - A default file (available at /etc/default/cloudstack-management or symlink at /etc/sysconfig etc) where you can specific custom variables, java options, classpath etc.
>> 
>> - Refactored init.d/systemd scripts to be commonly used b/w rpm/deb build scripts
>> 
>> - A new/improve logrotate file
>> 
>> - Logging will be handled by log4j (the same xml/config file you normally use)
>> 
>> - Currently we're using jsvc to handle mgmt server process, however we may move to java+systemd completely
>> 
> 
> I suggest that we only use init.d on RHEL 6 and Ubuntu 14.04, but on RHEL 7 and Ubuntu 16.04 (any distro that runs with systemd) we should try to avoid using jsvc.
> 
> That way we don't have to daemonize the MGMT server and keep it attached to systemd. Also makes it easy to just print logs to stdout and have journalctl take care of them.
> 
>> 
>> Marc-Aurèle (ExoScale) and I have collaborated on this problem and we finally have a PR (not complete) where we can show this actually works, please have a look:
> 
> Awesome work!
> 
>> 
>> https://github.com/apache/cloudstack/pull/2226
>> 
>> 
>> Once the PR is accepted, we can include a topic page in the 4.11/future release notes docs about upgrading in-place and setting up ssl certs etc.
>> 
>> 
>> Regards.
>> 
>> rohit.yadav@shapeblue.com<ma...@shapeblue.com>
>> www.shapeblue.com<http://www.shapeblue.com>
>> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
>> @shapeblue
>> 
>> 
>> 
> 

Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

Posted by Rohit Yadav <ro...@shapeblue.com>.
Thanks all for your feedback, review contribution on the PR, it has been merged after peer reviews, testing (regression and upgrade).


Regards.

________________________________
From: Rohit Yadav <ro...@shapeblue.com>
Sent: Wednesday, November 1, 2017 12:08:59 PM
To: dev@cloudstack.apache.org; users@cloudstack.apache.org
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

All,


The PR has received enough reviews and (regression) testings to consider it for merging. I'll keep the PR open for few days to receive further reviews and additional testing. Thanks.


Regards.

________________________________
From: Rohit Yadav <ro...@shapeblue.com>
Sent: Monday, October 30, 2017 4:55:55 PM
To: dev@cloudstack.apache.org; users@cloudstack.apache.org
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

All,


The fatjar PR that aims at migrating to embedded Jetty is ready for review now:

https://github.com/apache/cloudstack/pull/2226


New configuration file updates/changes:
- /etc/cloudstack/management/server.properties - single file to configure ports, webapp directory, http/s configurations, webapp context path etc.
- Environment configuration set at /etc/default/cloudstack-management (CentOS accepts having env conf files at /etc/default, while Ubuntu uses this path most of the time)

High-level changelog:

- Changes packaging to a shaded (fat/uber) jar
- Updates jetty dependencies version 9.2 (java 7+)
- Removal of tomcat, config files and additional distro-provided java dependencies
- Does not shade and include mysql-connector (cat-x), still distro-provided and used from classpath
- Introduce ServerDaemon class with customizations
- Migrate to embedded Jetty server with a new ServerDaemon launcher
- Introduce a new server.properties file for easier configuration
- Have a single /etc/default/cloudstack-management to configure env
- Reduce shaded jar file, removing unnecessary dependencies, thereby reducing overall rpm/deb file size to less than 84MB
- Upgrade to Spring 5.x, upgrade several jar dependencies
- Upgrade and use bountcastle as a separate un-shaded jar dependency
- Have both embedded UI assets in uber jar and separate webapp directory
- Refactor systemd and init scripts, cleanup packaging
- Made cloudstack-setup-databases faster, using `urandom`
- Remove unmaintained distro packagings and config files


Regards.

________________________________
From: Rohit Yadav <ro...@shapeblue.com>
Sent: Thursday, August 24, 2017 1:24:06 AM
To: Syed Ahmed; dev@cloudstack.apache.org
Cc: Cloudstack Users List
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

All,


Based on last Trilian based test runs, no regressions are seen. We'll aim for following changes and afterwards works towards merging the PR;


- An option to provide explicit webapp directory, for custom UI etc. The default UI would be bundled in the fat jar, with the UI assets/files also copied/packaged at /usr/share/cloudstack-management/webapp (or ui folder) to allow for customizations

- Fix packaging, refactor systemd/initd script

- Completely move to java/systemd, instead of using jsvc+systemd for systemd-enabled distros, and use init.d scripts for centos6/older distros

- Logging and other improvements to ServerDaemon (the main class that run jetty in the fatjar)

- A xml/yml file to configure SSL certificates, options etc.


- Rohit

________________________________
From: Syed Ahmed <sa...@cloudops.com>
Sent: Thursday, August 17, 2017 3:00:48 PM
To: dev@cloudstack.apache.org
Cc: Rohit Yadav; Cloudstack Users List
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

I have always been a big fan of fat, dependency-free binaries. Good work guys!


rohit.yadav@shapeblue.com
www.shapeblue.com<http://www.shapeblue.com>
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue




rohit.yadav@shapeblue.com
www.shapeblue.com<http://www.shapeblue.com>
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue




rohit.yadav@shapeblue.com
www.shapeblue.com<http://www.shapeblue.com>
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue




rohit.yadav@shapeblue.com 
www.shapeblue.com
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue
  
 

On Thu, Aug 10, 2017 at 11:23 AM, Wido den Hollander <wi...@widodh.nl>> wrote:

> Op 10 augustus 2017 om 14:09 schreef Rohit Yadav <ro...@shapeblue.com>>:
>
>
> All,
>
>
> Distro provided tomcat6/7/* has caused production issues for few users in the past. Due to this, the ACS deployments are inconsistent with the version/jars of tomcat in use. By allowing exploded war to be shipped, can allow admins to sometimes overwrite cloudstack jars causing production issues. I think moving to a CloudStack uber/fat jar will make it easier to deploy CloudStack in environments and write custom init/systemd scripts and fix cloudstack setup databases/management scripts without assuming the distro we're on.
>

Yes, I agree. A flat jar makes things a lot easier.

>
> With this discussion thread, I would like to engage with the community if they've any reservations from moving away from tomcat to embedded jetty + fat/uber jar based packaging. Please share your thoughts and comments.
>
>
> On very high level the packaging will provide the following:
>
> - A ServerDaemon class that can accept custom location of UI (webapp directory), logging, and other environment options, part of the fatjar.
>
> - A config file (xml/yml or otherwise) where you can configure keystore/SSL-certificates, paths (/client), ports, logging etc.
>
> - Default libraries/plugin path at /usr/share/cloudstack-management/lib, UI path at /usr/share/cloudstack-management/webapp
>
> - A default file (available at /etc/default/cloudstack-management or symlink at /etc/sysconfig etc) where you can specific custom variables, java options, classpath etc.
>
> - Refactored init.d/systemd scripts to be commonly used b/w rpm/deb build scripts
>
> - A new/improve logrotate file
>
> - Logging will be handled by log4j (the same xml/config file you normally use)
>
> - Currently we're using jsvc to handle mgmt server process, however we may move to java+systemd completely
>

I suggest that we only use init.d on RHEL 6 and Ubuntu 14.04, but on RHEL 7 and Ubuntu 16.04 (any distro that runs with systemd) we should try to avoid using jsvc.

That way we don't have to daemonize the MGMT server and keep it attached to systemd. Also makes it easy to just print logs to stdout and have journalctl take care of them.

>
> Marc-Aurèle (ExoScale) and I have collaborated on this problem and we finally have a PR (not complete) where we can show this actually works, please have a look:

Awesome work!

>
> https://github.com/apache/cloudstack/pull/2226
>
>
> Once the PR is accepted, we can include a topic page in the 4.11/future release notes docs about upgrading in-place and setting up ssl certs etc.
>
>
> Regards.
>
> rohit.yadav@shapeblue.com<ma...@shapeblue.com>
> www.shapeblue.com<http://www.shapeblue.com>
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
>
>
>


Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

Posted by Rohit Yadav <ro...@shapeblue.com>.
Thanks all for your feedback, review contribution on the PR, it has been merged after peer reviews, testing (regression and upgrade).


Regards.

________________________________
From: Rohit Yadav <ro...@shapeblue.com>
Sent: Wednesday, November 1, 2017 12:08:59 PM
To: dev@cloudstack.apache.org; users@cloudstack.apache.org
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

All,


The PR has received enough reviews and (regression) testings to consider it for merging. I'll keep the PR open for few days to receive further reviews and additional testing. Thanks.


Regards.

________________________________
From: Rohit Yadav <ro...@shapeblue.com>
Sent: Monday, October 30, 2017 4:55:55 PM
To: dev@cloudstack.apache.org; users@cloudstack.apache.org
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

All,


The fatjar PR that aims at migrating to embedded Jetty is ready for review now:

https://github.com/apache/cloudstack/pull/2226


New configuration file updates/changes:
- /etc/cloudstack/management/server.properties - single file to configure ports, webapp directory, http/s configurations, webapp context path etc.
- Environment configuration set at /etc/default/cloudstack-management (CentOS accepts having env conf files at /etc/default, while Ubuntu uses this path most of the time)

High-level changelog:

- Changes packaging to a shaded (fat/uber) jar
- Updates jetty dependencies version 9.2 (java 7+)
- Removal of tomcat, config files and additional distro-provided java dependencies
- Does not shade and include mysql-connector (cat-x), still distro-provided and used from classpath
- Introduce ServerDaemon class with customizations
- Migrate to embedded Jetty server with a new ServerDaemon launcher
- Introduce a new server.properties file for easier configuration
- Have a single /etc/default/cloudstack-management to configure env
- Reduce shaded jar file, removing unnecessary dependencies, thereby reducing overall rpm/deb file size to less than 84MB
- Upgrade to Spring 5.x, upgrade several jar dependencies
- Upgrade and use bountcastle as a separate un-shaded jar dependency
- Have both embedded UI assets in uber jar and separate webapp directory
- Refactor systemd and init scripts, cleanup packaging
- Made cloudstack-setup-databases faster, using `urandom`
- Remove unmaintained distro packagings and config files


Regards.

________________________________
From: Rohit Yadav <ro...@shapeblue.com>
Sent: Thursday, August 24, 2017 1:24:06 AM
To: Syed Ahmed; dev@cloudstack.apache.org
Cc: Cloudstack Users List
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

All,


Based on last Trilian based test runs, no regressions are seen. We'll aim for following changes and afterwards works towards merging the PR;


- An option to provide explicit webapp directory, for custom UI etc. The default UI would be bundled in the fat jar, with the UI assets/files also copied/packaged at /usr/share/cloudstack-management/webapp (or ui folder) to allow for customizations

- Fix packaging, refactor systemd/initd script

- Completely move to java/systemd, instead of using jsvc+systemd for systemd-enabled distros, and use init.d scripts for centos6/older distros

- Logging and other improvements to ServerDaemon (the main class that run jetty in the fatjar)

- A xml/yml file to configure SSL certificates, options etc.


- Rohit

________________________________
From: Syed Ahmed <sa...@cloudops.com>
Sent: Thursday, August 17, 2017 3:00:48 PM
To: dev@cloudstack.apache.org
Cc: Rohit Yadav; Cloudstack Users List
Subject: Re: [DISCUSS] Moving to embedded Jetty and fatjar CloudStack

I have always been a big fan of fat, dependency-free binaries. Good work guys!


rohit.yadav@shapeblue.com
www.shapeblue.com<http://www.shapeblue.com>
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue




rohit.yadav@shapeblue.com
www.shapeblue.com<http://www.shapeblue.com>
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue




rohit.yadav@shapeblue.com
www.shapeblue.com<http://www.shapeblue.com>
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue




rohit.yadav@shapeblue.com 
www.shapeblue.com
53 Chandos Place, Covent Garden, London  WC2N 4HSUK
@shapeblue
  
 

On Thu, Aug 10, 2017 at 11:23 AM, Wido den Hollander <wi...@widodh.nl>> wrote:

> Op 10 augustus 2017 om 14:09 schreef Rohit Yadav <ro...@shapeblue.com>>:
>
>
> All,
>
>
> Distro provided tomcat6/7/* has caused production issues for few users in the past. Due to this, the ACS deployments are inconsistent with the version/jars of tomcat in use. By allowing exploded war to be shipped, can allow admins to sometimes overwrite cloudstack jars causing production issues. I think moving to a CloudStack uber/fat jar will make it easier to deploy CloudStack in environments and write custom init/systemd scripts and fix cloudstack setup databases/management scripts without assuming the distro we're on.
>

Yes, I agree. A flat jar makes things a lot easier.

>
> With this discussion thread, I would like to engage with the community if they've any reservations from moving away from tomcat to embedded jetty + fat/uber jar based packaging. Please share your thoughts and comments.
>
>
> On very high level the packaging will provide the following:
>
> - A ServerDaemon class that can accept custom location of UI (webapp directory), logging, and other environment options, part of the fatjar.
>
> - A config file (xml/yml or otherwise) where you can configure keystore/SSL-certificates, paths (/client), ports, logging etc.
>
> - Default libraries/plugin path at /usr/share/cloudstack-management/lib, UI path at /usr/share/cloudstack-management/webapp
>
> - A default file (available at /etc/default/cloudstack-management or symlink at /etc/sysconfig etc) where you can specific custom variables, java options, classpath etc.
>
> - Refactored init.d/systemd scripts to be commonly used b/w rpm/deb build scripts
>
> - A new/improve logrotate file
>
> - Logging will be handled by log4j (the same xml/config file you normally use)
>
> - Currently we're using jsvc to handle mgmt server process, however we may move to java+systemd completely
>

I suggest that we only use init.d on RHEL 6 and Ubuntu 14.04, but on RHEL 7 and Ubuntu 16.04 (any distro that runs with systemd) we should try to avoid using jsvc.

That way we don't have to daemonize the MGMT server and keep it attached to systemd. Also makes it easy to just print logs to stdout and have journalctl take care of them.

>
> Marc-Aurèle (ExoScale) and I have collaborated on this problem and we finally have a PR (not complete) where we can show this actually works, please have a look:

Awesome work!

>
> https://github.com/apache/cloudstack/pull/2226
>
>
> Once the PR is accepted, we can include a topic page in the 4.11/future release notes docs about upgrading in-place and setting up ssl certs etc.
>
>
> Regards.
>
> rohit.yadav@shapeblue.com<ma...@shapeblue.com>
> www.shapeblue.com<http://www.shapeblue.com>
> 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> @shapeblue
>
>
>