How to stop and restart VM without reinstall service - openstack

Scenario
Cloudify 2.7 application running a tomcat service instance
Goal
I would like to stop (shut off) and start the VM hosting tomcat using OpenStack APIs, without Cloudify re-installs the tomcat recipe.
What I tried to do
I tried to use the Maintenance Mode, following this guide:
Setting a service instance to maintenance mode will disable host machine failure detection for that specific service instance.
This means that during the specified time period, a failure or a restart of a service instance host machine will NOT result in a provisioning of a new machine and service instance.
So, I have executed the following commands:
1. cloudify#default> connect VM_MNG_IP
2. cloudify#default> use-application <application_name>
3. cloudify#tommy> invoke <service_name> cloudify:start-maintenance-mode 300
4. Shut off the tomcat VM using OpenStack API
5. Start the tomcat VM using OpenStack API
After that, what I saw in the Cloudify's Orchestraotor logs was the re-installation process of the tomcat service. In other words, the tomcat VM now hosts tow tomcat Processing Units.
ls -al /root/gigaspaces/work/processing-units
<application_name>_tomcat_1_1278947587
<application_name>_tomcat_1_2029943570
Can someone suggest to me what should I do in order to reach my goal?

That is the correct behavior of the default tomcat service provided with Cloudify 2.7 - after a restart, the tomcat files are re-downloaded and deployed locally.
If you want a different behavior, you may want to tweak the tomcat recipe to save the tomcat files in a different location (the default installation saves all files in a per instance work directory, which will be replaced after a reboot). You can change the recipe to look for an existing installation and use it if it exists.
Have a look at the following files:
https://github.com/CloudifySource/cloudify-recipes/blob/master/services/tomcat/tomcat_init.groovy
https://github.com/CloudifySource/cloudify-recipes/blob/master/services/tomcat/tomcat_install.groovy
These are probably the files you will need to edit to achieve what you are looking for. Note how catalina_base is set as a context property, and that AntBuilder is used to download the tomcat installation and save it to a shared location. These are the files you will need to change.
Please consider that Cloudify 2.x has reached end of life - you should consider moving to Cloudify 3: http://getcloudify.org/guide/3.1/quickstart.html

Related

SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:8080

I am windows developer trying to use Camunda model rest API client project.
I did download the sample from the GIT which has examples for Camunda samples using WPF.
https://github.com/mtringuyen/camunda-dot-net-showcase
However there seems to be some sort of socket exception.
IIS is installed. I also verified versioning of .NET STANDARD and .NET FRAMEWORK. They are compatible.
Any suggestions to resolve this error?
Thanks in advance
The project you are using only contains
a .NET tasklist implementation used by people to participate in the business processes.
.NET implementation of automated task workers, which are used to do system integration from .NET (See: https://docs.camunda.org/manual/latest/user-guide/process-engine/external-tasks/)
The Camunda server remains a Java application. However, you can start it and use it as a blackbox from .NET without Java knowledge. There are several distributions. If you are not familiar with Java you should either use the Docker image:
docker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest
or a prepackages Tomcat using the Camunda RUN distribution.
You can download a server here: https://camunda.com/download/
Also see: https://docs.camunda.org/manual/latest/installation/
If you think an application that is running is listening on a particular port a quick way to check would be to run a command prompt as administrator and do a netstat -ab . This will show you all the ports that are listening on your local device. Obviously your example requires something listening on 8080 so fire up whatever application that is supposed to be and double check it.

How do I link aem server publish instance with the author instance?

I am running 2 aem servers on ubuntu.
$ java -jar cq-author-p14502.jar
$ java -jar cq-publish-p14503.jar
When I make changes to the author instance and publish, the changes are not showing up in the publish instance. I believe the reason is that the author instance doesn't know the port number where the publish instance is running. How do I tell the author instance where the publish instance is running?
Go to miscadmin page Replication agent author edit the default agent publish settings Transport tab URI pointing to your publish server. (or create a new publish agent and add the configurations pointing to your publish server)
In your case if your publish server is running on the port number 14503 point it to same with your server name/ipaddress.
Have more information at Adobe documentation

How does Meteor Up work?

I recently created a droplet on Digital Ocean, and then just used Meteor Up to deploy my site to it.
As awesome as it was to not have to mess with all of the details, I'm feeling a little worried and out of the loop about what's happening with my server.
For example, I was using the console management that Digital Ocean provides, and I tried to use the meteor mongo command to investigate what was happening with my database. It just errored, with command not found: meteor.
I know my database works, since records are persistent across accesses, but it seems like Meteor Up accomplished this without retaining any of the testing and development interfaces I grew used to on my own machine.
What does it do??? And how can I get a closer look at things going on behind the scenes?
Meteor Up installs your application to the remote server, but does not install the global meteor command-line utilities.
For those, simply run curl https://install.meteor.com | /bin/sh.
MUP does a few things. Note that this MUP is currently under active development and some of this process will likely change soon. The new version will manage deployment via Docker, add support for meteor build options, and other cool stuff. Notes on the development version (mupx) can be found here: https://github.com/arunoda/meteor-up/tree/mupx.
mup setup installs (depending on your mup.json file) Node, PhantomJS, MongoDB, and stud (for SSL support). It also installs the shell script to setup your environment variables, as well as your upstart configuration file.
mup deploy runs meteor build on your local machine to package your meteor app as a bundled and zipped node app for deployment. It then copies the packaged app to the remote server, unbundles it, installs npm modules, and runs as a node app.
Note that meteor build packages your app in production mode rather than the debug mode that runs by default on localhost when you call meteor or meteor run. The next version of MUP will have a buildOptions property in mup.json that you can use to set the debug and mobileSettings options when you deploy.
Also, since your app is running directly via Node (rather than Meteor), meteor mongo won't work. Instead, you need to ssh into the remote server and call mongo appName.
From there, #SLaks is right about how it sets things up on the server (from https://github.com/arunoda/meteor-up#server-setup-details):
This is how Meteor Up will configure the server for you based on the given appName or using "meteor" as default appName. This information will help you customize the server for your needs.
your app lives at /opt/<appName>/app
mup uses upstart with a config file at /etc/init/<appName>.conf
you can start and stop the app with upstart: start <appName> and stop <appName>
logs are located at: /var/log/upstart/<appName>.log
MongoDB installed and bound to the local interface (cannot access from the outside)
the database is named <appName>

MSDeploy.exe can connect as Administrator, but not any other Windows account

I'm integrating MSDeploy into my build process, and having problems authenticating. The following command works fine:
msdeploy -verb:sync -source:appHostConfig="KitchenPC",computerName=192.168.0.3,userName=Administrator,password=secret -dest:package=c:\DeployTest\KPC.zip
However, this does NOT work:
msdeploy -verb:sync -source:appHostConfig="KitchenPC",computerName=192.168.0.3,userName=kpcpublish,password=secret -dest:package=c:\DeployTest\KPC.zip
And yields the error:
Error Code: ERROR_USER_NOT_ADMIN
More Information: Connected to '192.168.0.11' using the Web Deployment Agent Service, but could not authorize. Make sure you are an administ
rator on '192.168.0.11'. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_NOT_ADMIN.
Error: The remote server returned an error: (401) Unauthorized.
Error count: 1.
I've followed the instructions in the link above, and any other docs I could find, which pretty much all say the same thing:
I created an account called kpcpublish
I added this account to a group called MSDepSvcUsers - Heck, I even added the account to Administrators
I right clicked on the site and selected Deploy->Configure Web Deploy Publishing and added kpcpublish to the list. It says the following:
.
Publish enabled for 'SERVER\kpcpublish' Granted 'SERVER\kpcpublish'
full control on 'C:\Website' Successfully created settings file
'C:\Users\Administrator\Desktop\SERVER_kpcpublish_KitchenPC.PublishSettings'
There must be some step I'm missing, but I just can't figure out what could be.
UPDATE:
Using the full HTTP path for the computerName property, I get the error:
Error Code: ERROR_DESTINATION_NOT_REACHABLE More Information: Could
not connect to the remote computer ("192.168.0.3"). On the remote
computer, make sure that Web Deploy is installed and that the required
process ("Web Management Service") is started. Learn more at:
http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DES
TINATION_NOT_REACHABLE. Error: Unable to connect to the remote server
Error: A connection attempt failed because the connected party did not
properly respond after a period of time, or established connection fa
iled because connected host has failed to respond 192.168.0.3:8192
Error count: 1.
I've checked and the Web Management Service is indeed running.
Another Update:
I've completely paved the system and set it up again from scratch. I've done nothing out of the ordinary, just installed the IIS role and made sure to check "Management Service" under Management Tools, which is required for WMSVC to run. I then installed Web PI, and installed "Recommended Configuration for Hosting Providers", which will install Web Deploy 3.0. However, I did notice there was an error while installing this (I believe I got this error the last time as well). It looks like:
I've also attached the log files here.
I then tried to install Web Deploy 3.0 manually, however it says it's already installed. Next, I downloaded the MSI directly from http://www.iis.net/download/webdeploy and ran it in "Repair" mode. That seems to have worked. I also noticed that the WMSVC service is up and running. So this looks good.
Still, MSDeploy will not connect. I thought it might be some sort of firewall issue, so I ran it locally. I've tried using both HTTPS and HTTP to connect. HTTPS gives me an error, HTTP just times out after 2-3 minutes.
HTTPS:
msdeploy -verb:sync -source:appHostConfig="Default Web Site",computerName=https://STAGING:8172/msdeploy.axd,userName=Administrator,password=Khorf123 -dest:package=c:\DeleteMe.zip
Info: Using ID 'f3a54096-adc4-4f54-9e4f-ad8fde12edb6' for connections to the remote server.
Error Code: ERROR_CERTIFICATE_VALIDATION_FAILED
More Information: Connected to the remote computer ("staging") using the specified process ("Web Management Service"), but could not verify the server's certifi
cate. If you trust the server, connect again and allow untrusted certificates.
Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED.
Error: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
Error: The remote certificate is invalid according to the validation procedure.
Error count: 1.
HTTP:
msdeploy -verb:sync -source:appHostConfig="Default Web Site",computerName=http://STAGING:8172/msdeploy.axd,userName=Administrator,password=Khorf123 -dest:package=c:\DeleteMe.zip
Info: Using ID 'ebee66f0-08e5-4d9d-98ea-0c2e59784895' for connections to the remote server.
Error: Could not complete the request to remote agent URL 'http://staging:8172/msdeploy.axd'.
Error: The operation has timed out
Error count: 1.
(Updated 2016-03-07 - NOTE: non-Administrator deployments also require ?site=IIS_SITE_NAME after msdeploy.axd, otherwise the connection is treated as global and requires Administrator access)
Not sure how missed this originally, but your problem is the computerName parameter. Non-administrator deployments are only supported when using WMSVC, for which you need to specify the full URL.
Try the following
msdeploy -verb:sync ^
-source:appHostConfig="KitchenPC",computerName=https://192.168.0.3:8172/MsDeploy.axd,userName=kpcpublish,password=secret,authType=Basic ^
-dest:package=c:\DeployTest\KPC.zip
From the docs:
The computer name will be translated to the default Web Deploy URL. For example, computerName=Server1 will become http://Server1/MsDeployAgentService. If the remote service is running with a custom port or URL, you must specify the full URL
And from the install instructions:
The MSI will not install the Web Management Service handler component if the Web Management Service is not installed; the handler component is necessary for non-administrator deployments
(I couldn't find a more explicit canonical source that describes WMSVC as a requirement for non-admin deployments)
Figured It Out!
So, it seems that (at least by default), WMSVC only listens on HTTPS, and HTTP will just time out. However, since my certificate was self-signed, I had to use the -allowUntrusted command line option.
That was almost enough. I also had to specify authType=Basic like Richard originally suggested. So, to put it all together, this is the MSDeploy command line that will actually work:
msdeploy -verb:sync -source:appHostConfig="Default Web Site",computerName=https://192.168.0.3:8172/msdeploy.axd,authType=Basic,userName=Publish,password=secret -dest:package=c:\DeployTest\KPC.zip -allowUntrusted
After configuring Web Deploy my server as follows. I continued to get HTTP 404 connection failures. In may what worked for me was the following additional efforts...
Uninstall all previous version of Web Deploy that existed. I was not even aware they existed; however, previous versions appear to conflict with completing a connection to the latest Web Deploy service. Newer version don't uninstall their predecessors. In the last part, I was getting HTTP 401.7 - File Extension Denied.
For good measure, performed a repair of the current version of Web Deploy, currently Microsoft Web Deploy 3.6
For good measure, recreate and import my Visual Studio 2013 deployment profile...
recreate the publish settings file using the Configure Web Deploy Publishing dialogue available from the Deploy context menu option of the target website in IIS Manager's Connections panel. (Note, the publish settings file will be recreated when you press Setup as the file whose full path is specified in the dialogue entry, Specify a location to save the publish settings file)
Copy or otherwise make the publish settings file available to Visual Studio and selecting Publish from your project's context menu, create a Visual Studio publish profile by importing the publish settings file.
Try restarting the wmsvc service on the target machine
As alluded to above, make sure that you are connecting over HTTPS. If you are attempting to connect as Admin, but not using SSL, you get the following error:
Error Code: ERROR_USER_NOT_ADMIN
More Information: Connected to 'host' using the Web Deployment Agent Service, but could not authorize. Make sure you are an administrator on 'host'.
(Where 'host' is your server name)
For me the problem was that my password expired... I've noticed it when loging out and then tried to login back trhough remote desktop.

How to separately deploy alfresco share application and alfresco repository on different tomcat server?

Currently, I am deploying both "share.war" and "alfresco.war" on same tomcat server.
So, how can I separately deploy "share.war" and "alfresco.war" on different tomcat servers?
I want to deploy "share.war" on tomcat server 1, deploy "alfresco.war" on tomcat server 2.
If you're looking for a way to embed Alfresco in your application, you should check this old but still mostly valid webinar.
If you want to have a quick start at running Alfresco outside any application container (i.e. directly bootstrapping the Spring context) the FirstFoundationClient sample in the Alfresco SDK is what you need.
This is really much more simple than it seems. Deploy the wars on separate tomcats, and then configure share-config-custom.xml inside /shared/alfresco/web-extension on the Share deployment to point to the Alfresco repository. It's that easy.
From a copy-paste of the official documentation :
You can run the Share application in a separate Tomcat instance from
the instance running the Alfresco WAR. This additional instance can be
installed on the same server as the original Tomcat instance, or it
can be installed on a separate server.
Install a new Tomcat instance on the same server at the original Tomcat instance.
Modify the /conf/server.xml file for the new Tomcat instance:
Change the port number (for example, to 8006) in this line:
<Server port="8005" shutdown="SHUTDOWN">
Change the port number (for example, to 8180) in this line:
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" ....
Move the share.war file from the original Tomcat /webapps directory to the new Tomcat /webapps directory.
(Optional) Configure the original Alfresco Tomcat deployment.
Start the original Tomcat.
You can use Alfresco supplied batch files.
If you are running the Share Tomcat instance on a separate machine, you must modify the override file in the Share Tomcat web-extension directory:
Open the share-config-custom.xml file.
Change any instance of the server and port to the correct name or IP address of the Alfresco server.
http://yourserver:8080
Save the file.
Start the new Share Tomcat instance.

Resources