I like Wei's idea - fast fail with explanation is usually best.

Re ports in general... You can register ports with IANA, but IANA has a number 
of ports where it has allowed more that one protocol to register the same port 
number, so they don't seem to follow their own rules either.



paul.an...@shapeblue.comĀ 
www.shapeblue.com
3 London Bridge Street,  3rd floor, News Building, London  SE1 9SGUK
@shapeblue
  
 


-----Original Message-----
From: Wei ZHOU <ustcweiz...@gmail.com> 
Sent: 02 July 2020 07:44
To: dev@cloudstack.apache.org
Subject: Re: [DISCUSS] Management server default port conflict

Agree with Ron.

Besides the change in cloudstack documents, it would be nice to check all 
cloudstack ports (8080, 8250, 9090, 8096/integration, 9595/prometheus) and 
display error messages before starting java thread when start service 
cloudstack-management. It helps users to find the root cause and stop services 
to free the ports.

-Wei

On Thu, 2 Jul 2020 at 04:42, Ron Wheeler 
<rwhee...@artifact-software.com.invalid> wrote:

> Is there any hope of getting projects to follow the rules?
>
> One would think that Cloudstack developers would be the most likely to 
> understand networking, the Internet and system administration.
>
> Ron
>
> On 2020-07-01 12:53 p.m., Andrija Panic wrote:
> > (true that, Ron...)
> >
> > On Wed, 1 Jul 2020, 15:27 Ron Wheeler, 
> > <rwhee...@artifact-software.com.invalid> wrote:
> >
> >> If the open source community just got their act together and 
> >> registered their ports and stopped using ports registered to other 
> >> projects, this would not happen.
> >>
> >> There is no shortage of available ports, there is just a complete 
> >> lack of professionalism in the community and it causes unnecessary 
> >> headaches for users.
> >>
> >> Stop using ports registered to other projects.
> >> Register the ports for Cloudstack and encourage/insist that others 
> >> do so as well.
> >> Publicly shame projects and products that use ports that they have 
> >> not registered.
> >> To set a good example, in documentation and examples stop using 
> >> ports in the registered range for applications that should use 
> >> ports in the private/dynamic range.
> >>
> >>
> >> Ron
> >>
> >>
> >> On 2020-07-01 7:36 a.m., Abhishek Kumar wrote:
> >>> +1 with adding documentation.
> >>>
> >>> And maybe we should also refactor the port check logic and error
> >> message. Currently, code just tries to connect the socket for the 
> >> port
> and
> >> if it fails that with the message,
> >>> Detected that another management node with the same IP XX.XX.XX.XX 
> >>> is
> >> already running, please check your cluster configuration
> >>> Instead of the cockpit, it can be any other service/process. 
> >>> Should we
> >> try to get details of that service in the logs, exception message 
> >> so the user can make changes?
> >>> Regards,
> >>> Abhishek
> >>> ________________________________
> >>> From: Rohit Yadav <rohit.ya...@shapeblue.com>
> >>> Sent: 01 July 2020 13:04
> >>> To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>;
> >> us...@cloudstack.apache.org <us...@cloudstack.apache.org>
> >>> Subject: Re: [DISCUSS] Management server default port conflict
> >>>
> >>> I think we can document in our CloudStack qig/release/install 
> >>> notes to
> >> say users must disable cockpit on CentOS8. Here are my 2paisas;
> >>>     *   Most users using CentOS (7/8) won't use a single-host specific
> >> management tool/UI such as cockpit; they would probably use some 
> >> fleet management software or automate using ansible/puppet/ceph etc.
> >>>     *   Last time I checked the minimal CentOS-8 ISO does not install
> >> cockpit or that it is enabled by default (service does not run by
> default
> >> until you active the port 9090 target)
> >>>     *   Some users may have monitoring scripts/tools or security rules
> >> that expect port 9090 to be used by CloudStack, so it's probably 
> >> safer
> to
> >> ask users to change port for cockpit than CloudStack by default
> >>> Regards.
> >>>
> >>> ________________________________
> >>> From: Abhishek Kumar <abhishek.ku...@shapeblue.com>
> >>> Sent: Wednesday, July 1, 2020 11:14
> >>> To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>;
> >> us...@cloudstack.apache.org <us...@cloudstack.apache.org>
> >>> Subject: [DISCUSS] Management server default port conflict
> >>>
> >>> Hi all,
> >>>
> >>> I would like to know everyone's opinion regarding an issue seen 
> >>> with
> >> CloudStack on CentOS8 (https://github.com/apache/cloudstack/pull/4068).
> >> CentOS8 comes with cockpit (https://cockpit-project.org/) installed
> which
> >> uses port 9090, although it is not active by default. CloudStack
> management
> >> server also needs port 9090. And when CloudStack management server 
> >> is started with systemd it triggers the start of cockpit first and
> management
> >> server fails to start,
> >>>
> >>> 2020-06-25 07:20:51,707 ERROR [c.c.c.ClusterManagerImpl] 
> >>> (main:null)
> >> (logid:) Detected that another management node with the same IP
> 10.10.2.167
> >> is already running, please check your cluster configuration
> >>> 2020-06-25 07:20:51,708 ERROR 
> >>> [o.a.c.s.l.CloudStackExtendedLifeCycle]
> >> (main:null) (logid:) Failed to configure ClusterManagerImpl
> >>> javax.naming.ConfigurationException: Detected that another 
> >>> management
> >> node with the same IP 10.10.2.167 is already running, please check 
> >> your cluster configuration
> >>>           at
> >>
> com.cloud.cluster.ClusterManagerImpl.checkConflicts(ClusterManagerImpl
> .java:1192)
> >>>           at
> >>
> com.cloud.cluster.ClusterManagerImpl.configure(ClusterManagerImpl.java
> :1065)
> >>>           at
> >>
> org.apache.cloudstack.spring.lifecycle.CloudStackExtendedLifeCycle$3.w
> ith(CloudStackExtendedLifeCycle.java:114)
> >>>           at
> >>
> org.apache.cloudstack.spring.lifecycle.CloudStackExtendedLifeCycle.wit
> h(CloudStackExtendedLifeCycle.java:153)
> >>>           at
> >>
> org.apache.cloudstack.spring.lifecycle.CloudStackExtendedLifeCycle.con
> figure(CloudStackExtendedLifeCycle.java:110)
> >>>           at
> >>
> org.apache.cloudstack.spring.lifecycle.CloudStackExtendedLifeCycle.sta
> rt(CloudStackExtendedLifeCycle.java:55)
> >>>           at
> >>
> org.springframework.context.support.DefaultLifecycleProcessor.doStart(
> DefaultLifecycleProcessor.java:182)
> >>>           at
> >>
> org.springframework.context.support.DefaultLifecycleProcessor.access$2
> 00(DefaultLifecycleProcessor.java:53)
> >>>           at
> >>
> org.springframework.context.support.DefaultLifecycleProcessor$Lifecycl
> eGroup.start(DefaultLifecycleProcessor.java:360)
> >>>           at
> >>
> org.springframework.context.support.DefaultLifecycleProcessor.startBea
> ns(DefaultLifecycleProcessor.java:158)
> >>>           at
> >>
> org.springframework.context.support.DefaultLifecycleProcessor.onRefres
> h(DefaultLifecycleProcessor.java:122)
> >>>           at
> >>
> org.springframework.context.support.AbstractApplicationContext.finishR
> efresh(AbstractApplicationContext.java:894)
> >>>           at
> >>
> org.springframework.context.support.AbstractApplicationContext.refresh
> (AbstractApplicationContext.java:553)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinition
> Set.loadContext(DefaultModuleDefinitionSet.java:144)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinition
> Set$2.with(DefaultModuleDefinitionSet.java:121)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinition
> Set.withModule(DefaultModuleDefinitionSet.java:244)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinition
> Set.withModule(DefaultModuleDefinitionSet.java:249)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinition
> Set.withModule(DefaultModuleDefinitionSet.java:249)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinition
> Set.withModule(DefaultModuleDefinitionSet.java:232)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinition
> Set.loadContexts(DefaultModuleDefinitionSet.java:116)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinition
> Set.load(DefaultModuleDefinitionSet.java:78)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.factory.ModuleBasedContextFactory.
> loadModules(ModuleBasedContextFactory.java:37)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.in
> it(CloudStackSpringContext.java:70)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.<i
> nit>(CloudStackSpringContext.java:57)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.<i
> nit>(CloudStackSpringContext.java:61)
> >>>           at
> >>
> org.apache.cloudstack.spring.module.web.CloudStackContextLoaderListene
> r.contextInitialized(CloudStackContextLoaderListener.java:51)
> >>>           at
> >>
> org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized
> (ContextHandler.java:930)
> >>>           at
> >>
> org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized
> (ServletContextHandler.java:553)
> >>>           at
> >>
> org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHa
> ndler.java:889)
> >>>           at
> >>
> org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletCo
> ntextHandler.java:356)
> >>>           at
> >>
> org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:
> 1445)
> >>>           at
> >>
> org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java
> :1409)
> >>>           at
> >>
> org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler
> .java:822)
> >>>           at
> >>
> org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContext
> Handler.java:275)
> >>>           at
> >> org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:5
> >> 24)
> >>>           at
> >>
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeC
> ycle.java:72)
> >>>           at
> >>
> org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLif
> eCycle.java:169)
> >>>           at
> >>
> org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerL
> ifeCycle.java:110)
> >>>           at
> >>
> org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandl
> er.java:97)
> >>>           at
> >>
> org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.
> java:425)
> >>>           at
> >>
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeC
> ycle.java:72)
> >>>           at
> >>
> org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLif
> eCycle.java:169)
> >>>           at
> >>
> org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerL
> ifeCycle.java:117)
> >>>           at
> >>
> org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandl
> er.java:97)
> >>>           at
> >>
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeC
> ycle.java:72)
> >>>           at
> >>
> org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLif
> eCycle.java:169)
> >>>           at 
> >>> org.eclipse.jetty.server.Server.start(Server.java:407)
> >>>
> >>> Therefore, in your opinion how this should be handled? Should we
> >> document that CS management server needs port 9090 free by default 
> >> and
> any
> >> other process using it should be moved a different port or the
> management
> >> server port should be moved in case of CentOS8, either in code or 
> >> documentation to change cluster.servlet.port in db.properties?
> >>> Regards,
> >>> Abhishek
> >>>
> >>> abhishek.ku...@shapeblue.com
> >>> www.shapeblue.com<http://www.shapeblue.com>
> >>> 3 London Bridge Street,  3rd floor, News Building, London  SE1 
> >>> 9SGUK @shapeblue
> >>>
> >>>
> >>>
> >>>
> >>> rohit.ya...@shapeblue.com
> >>> www.shapeblue.com<http://www.shapeblue.com>
> >>> 3 London Bridge Street,  3rd floor, News Building, London  SE1 
> >>> 9SGUK @shapeblue
> >>>
> >>>
> >>>
> >>>
> >>> abhishek.ku...@shapeblue.com
> >>> www.shapeblue.com
> >>> 3 London Bridge Street,  3rd floor, News Building, London  SE1 
> >>> 9SGUK @shapeblue
> >>>
> >>>
> >>>
> >> --
> >> Ron Wheeler
> >> Artifact Software
> >> 438-345-3369
> >> rwhee...@artifact-software.com
> >>
> >>
>
> --
> Ron Wheeler
> Artifact Software
> 438-345-3369
> rwhee...@artifact-software.com
>
>

Reply via email to