Questo articolo vuole descrivere la struttura e eventauli configurazioni presenti sulla VM Linux di scaler.
Il sistema operativo è: Red Hat Enterprise ver 8.6
Nella cartella "data", sono presenti la cartella "installers" dove sono stati copiati i file di installazione e la cartella "Quadient" dove invece si trovano i servizi e le installazioni di essi.
Per quanto riguarda scaler, nella cartella "Quadient" troviamo le installazioni di "Inspire-Designer" e "InspireScaler".
Tutte le vm scaler hanno come particolarità il fatto di montate 2 repository di azure (Azure Blob store e Azure File share).
Qui il dettaglio relativo al Blob storage:
Per montare il blob storage da VM linux procedere installando i componenti necessari sulla VM.
Impostare una password di root sulla VM linux
Sudo Passwd
Installare il repository.
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm
Installare blobfuse
sudo yum install blobfuse
Creare una cartella temporanea da utilizzare come cache:
sudo mkdir /mnt/resource/blobfusetmp -p
sudo chown azureadmin /mnt/resource/blobfusetmp
touch fuse_connection.cfg
chmod 600 fuse_connection.cfg
Per permettere l'accesso al blob tramite l'identità gestita, aggiungere tale identità nella sezione Identity della VM
Aggiungere lo stesso utente nei RUOLI RBAC dello Storage account:
Aggiungere al file fuse_connect.cfg creato sulla VM linux le seguenti info:
accountName strevcomdev
authType MSI
containerName contblobrevcomdev
Creare un folder dove montare il blob "blobrevcomdev" in /mnt/
Eseguire il seguente comando:
sudo blobfuse /mnt/blobrevcomdev --tmp-path=/mnt/resource/blobfusetmp --config file=fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120 -o allow_other --log-level=LOG_DEBUG --pre-mount-validate=true
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Per poter montare il blobstorage all'avvio, creare uno script azuremount.sh in /mnt/ e inserire all'interno la stringa indicata qui sopra.
Impostare i permessi per tale script: chmod 777 azuremount.sh
Elevarsi come ROOT e andare ad editare il crontab inserendo l'esecuzione dello script
Crontab -e
Premere I per inserire la stringa
Premere ESC per uscire dall'edit
Inserire :wq per salvare e uscire
Verificare che il comando sia stato inserito correttamente con il comando crontab -l
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Per smontare il blobstorage
sudo fusermount -u "folder montata"
Qui il dettaglio relativo al File storage:
Installare sulla VM cifs-util package
sudo dnf install cifs-utils
Una volta configurata il file share su azure copiare lo script per montare la risorsa:
Incollare lo script nella VM che deve montare la risorsa.
Una volta verificato che la risorsa è stata montata correttamente per poter montare la risorsa all'avvio, inserire quanto segue nello script /mnt/azuremount.sh
sudo mount -t cifs //strevcomdev.file.core.windows.net/sharerevcomdev /mnt/sharerevcomdev -o credentials=/etc/smbcredentials/strevcomdev.cred,dir_mode=0777,file_mode=0777,serverino,nosharesock,actimeo=30
Riavviare la VM e verificare il corretto funzionamento.
Mount FIle share per gli ambienti DRT e DRS
Questa soluzione è stata applicata allo scaler di DRT e DRS:
Visto che il sistema carica la configuraizone dell'applicativo con dei valori preimpostati, per poter soddisfare sia l'applicativo scaler che le functional app che gestiscono la movimentazione dei file, si è reso necessario eseguire una doppia mappatura (che puntano allo stesso repository ma mappate con nomi differenti).
Il mount point /mnt/sharerevcomprddrs è utilizzato dalle function app e da alcuni script eseguiti
Qui un esempio del file di mount di DRS:
[ /mnt/azuremount.sh]
sudo blobfuse /mnt/blobrevcomprdin/ --tmp-path=/mnt/resource/blobfusetmpin --config-file=/home/azureadmin/fuse_connection_contblobrevcomprddrsin.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120 -o allow_other --log-level=LOG_DEBUG --pre-mount-validate=true
sudo mount -t cifs //strevcomprddrsshare.file.core.windows.net/sharerevcomprddrs /mnt/sharerevcomprddrs -o credentials=/etc/smbcredentials/strevcomprddrsshare.cred,dir_mode=0777,file_mode=0777,serverino,nosharesock,actimeo=30
sudo mount -t cifs //strevcomprddrsshare.file.core.windows.net/sharerevcomprddrs /mnt/sharerevcomprd -o credentials=/etc/smbcredentials/strevcomprddrsshare.cred,dir_mode=0777,file_mode=0777,serverino,nosharesock,actimeo=30
Questi i servizi presenti in scaler:
sudo systemctl status InspireScaler30600.service
sudo systemctl status InspireProductionServer-30354.service
sudo systemctl status InspireContentManager-30353.service
Elenco file con configuraioni varie:
/data/Quadient/InspireScaler/config/configuration.xml --> contiene utente, password, porta, e stringa JDBC per connessione al DB SQL
/data/Quadient/InspireScaler/bin/scaler.service --> contiene configurazione per l'avvio o l'arresto del servizio
Impostazioni Custom Scaler:
- Settaggio degli hard limits:
systemctl set-property InspireProductionServer-30354.service CPUQuota=320%
systemctl set-property InspireProductionServer-30354.service MemoryLimit=10G
systemctl daemon-reload
- Creazione di un cronjob per l'eliminazione dei file temporanei dentro /data/tm
Comandi:
crontab -e
Questo è il testo da inserire (il crontab viene aperto con VI, per inserire il testo digirare "i" per uscire dalla modalità testo "esc", per salvare il testo ":wq"):
#Clean Inspire temp files
@reboot /usr/bin/find /data/tmp/ -type f -mtime +1 -exec rm -f {} \;
-
Creazione di uno script di cancellazione dei file temporanei dentro /data. Lo trovi in allegato. Va copiato nella cartella /data. Una volta copiato è necessario renderlo eseguibile:
chmod +x clean-tmp-files.sh
- Apertura della porta 30354 (tcp) sul firewall locale:
firewall-cmd --permanent --add-port=--30354/tcp
Pulizia LOG scaler:
- Stop service
sudo systemctl stop InspireScaler30600.service
sudo systemctl stop InspireProductionServer-30354.service
sudo systemctl stop InspireContentManager-30353.service
- Move in the the logs folder (/data/Quadient/InspireScaler/logs)
- The files to check are
- If are necessary to empty the file, it's will possible with the following command:
echo "" > NameOfTheLog.log
- The most info is always in the server.log - in case of any issues with the app, check this log first.
- Cleaning IPS and ICM logs
- Now start the service in opposite order as were stopped.
sudo systemctl start InspireContentManager-30353.service
sudo systemctl start InspireProductionServer-30354.service
sudo systemctl start InspireScaler30600.service
- Verify that logs are getting filled correctly