Expand my Community achievements bar.

SOLVED

How to define upload directory for ACC enterprise deployment?

Avatar

Level 2

Hi,

 

We built the Adobe campaign classic on our local server and selected the enterprise deployment, so we have 2 web servers and 2 app servers. Now, we want to upload files to AC server then call these files in workflow. But the workflow always shows that the file cannot be found. In my research, the files were uploaded to one of web servers randomly instead of the app server. So workflow cannot found files in app server. I don't know how to define the upload directory, the default setting is

uploadDirectory="$(XTK_INSTALL_DIR)/var/$(INSTANCE_NAME)/upload/".

Can someone give me some advice, please?

Thank you in advance.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @alanl62013822, default location is /usr/local/neolane/nl6/var/res. You can

mount a shared partition to both app servers and set this path like: uploadDirectory="/your_mounted_shared_partition/instance_name/res/" and set this path to this variable as well extraSandboxedDirectories. There is automated process for copying files between app and web servers.

Regards, MIlan

View solution in original post

6 Replies

Avatar

Correct answer by
Community Advisor

Hi @alanl62013822, default location is /usr/local/neolane/nl6/var/res. You can

mount a shared partition to both app servers and set this path like: uploadDirectory="/your_mounted_shared_partition/instance_name/res/" and set this path to this variable as well extraSandboxedDirectories. There is automated process for copying files between app and web servers.

Regards, MIlan

Avatar

Level 2

Hi Milan,

 

Thanks for your response.

As you mentioned, default location is /usr/local/neolane/nl6/var/res. But when I upload file to AC, the file will be stored in /usr/local/neolane/nl6/var/dev/upload, dev” is my instance name.

On the other hand, “mount a shared partition to both app servers”, do you mean I need to mount a SMB folder to both app server and mount as /usr/local/neolane/nl6/var/?

I also find the default value of extraSandboxedDirectories  is "/home/customers/,/sftp/", so I should change this value to "/usr/local/neolane/nl6/var/", right?

Here's the default settings in serverConf.xml, can you teach me how to change it?  Realy appreciated.

<dataStore exportDirectory="$(XTK_INSTALL_DIR)/var/$(INSTANCE_NAME)/export/"
extraSandboxedDirectories="/home/customers/,/sftp/" formCacheTimeToLive="600"
hosts="*" interactionCacheTimeToLive="300" lang="" uploadDirectory="$(XTK_INSTALL_DIR)/var/$(INSTANCE_NAME)/upload/"
uploadWhitelist=".+" useVault="false" vaultSecretPath="/v1/secret/campaign/"
vaultTokenPath="$(HOME)/.vaulttoken" vaultUrl="" viewCacheTimeToLive="600"
workingDirectory="$(XTK_INSTALL_DIR)/var/$(INSTANCE_NAME)/workspace/">

 

Avatar

Community Advisor

Hi @alanl62013822, assume that you have a load balancer in front of app servers. My suggestion is to have one common shared folder or partition which is always accessible by both app server no matter where load balancer switching you. Therefore, mount that folder and put real location path of that folder to upload variable instead of /usr/local/neolane/nl6/var/dev/upload. Regarding extraSandboxedDirectories do not delete anything, just add a comma (",") and add folder path at the end. You may use this folder for app servers to write logs in one file instead of (asuming) separate logs per server now (for example now you have web.log on both app server instead of one web.log in shared folder written by both app servers). Regards, Milan

Avatar

Level 2

Hi Milan,

 

yes, I have a load balancer in front of the two Web servers. Here is our infrastructure. If users upload files and images through AC client, these files will be stored in Frontal Server 1 or Frontal Server 2.

Regarding your suggestions, should I create a NFS share folder with '/usr/local/neolane/nl6/var/dev/' on APP server 01 then mount this NFS folder to all frontal servers and app servers?

infra.png

Avatar

Community Advisor
Hi @alanl62013822, When you do AC console login you should be connected to one of two app servers not web servers. Any upload will be stored to app server (there is an internal process of copying resources from app servers to web servers so you mean that you do upload directly to web servers) so please check where files are stored in app servers. Once again, if you going with this approach, please forget this path: '/usr/local/neolane/nl6/var/dev/'. Mount a new NFS share which will have own (new) path like /mounted_nfs_folder. When you do that and mount folder to both app servers only then change existing path in serverConf.xml and change upload path to /mounted_nfs_folder. In case does not work for you, just return old path in serverConf.xml as was before. Regards,Milan

Avatar

Community Advisor

Hi,

 

Users should be accessing app servers using an active/passive load balancer, or just connect directly to the primary.

In active/active, users won't be able to reliably unconditionally stop workflows.

You should still mount the app servers to a common share for failover.

 

Thanks,

-Jon