Hello à toutes et tous, un petit post rapide pour indiquer brièvement l’enregistrement de SAP IQ en tant que service sous Red Hat / systemd. Dans la mesure où la doc ne l’indique pas et l’assistant d’installation ne le permet pas non plus, il a fallu défricher un peu avant d’arriver à une automatisation de l’arrêt et du démarrage d’un serveur IQ sur Linux. La version d’IQ utilisée dans l’exemple :
1> select @@version 2> go @@version -------------------------------------------------------------------------------------------------- SAP IQ/16.1.040.1549/14760/P/SP04.08/Linux/Linux64 - x86_64 - 3.10.0-327/64bit/2020-11-24 00:59:00
Mise en place des paramètres runtime dans un fichier de configuration centralisé:
Ce sera plus pratique pour les adapter ensuite:
$ vi /opt/sybase/IQ-16_1/scripts/MONSERVEURIQ.cfg # default.cfg # ---------------------------------------------------------------------- # This file contains the default IQ startup parameters. All servers # started will default to these parameters, unless overriden by contents # of parameter list. # ---------------------------------------------------------------------- # Must be in the format: One parameter [and value] per line # ---------------------------------------------------------------------- -n MONSERVEURIQ -iqmc 153600 -iqtc 92160 -c 48m -gc 20 -gd all -gl all -gm 200 -gp 4096 -ti 4400 -gn 300 -x tcpip{port=2638}
Création du fichier de config du service:
En tant que root évidemment:
$ vi /usr/lib/systemd/system/MONSERVEURIQ.service (...) [Unit] Description=SAP IQ Server for MONSERVEURIQ After=network.target [Service] Environment=SYBASE=/opt/sybase Environment=IQDIR16=/opt/sybase/IQ-16_1 ExecStart=/opt/sybase/IQ-16_1/bin64/start_iq @/opt/sybase/IQ-16_1/scripts/MONSERVEURIQ.cfg /iqdata/MONSERVEURIQ/MONSERVEURIQ.db RemainAfterExit=yes OOMScoreAdjust=-1000 Restart=no User=sybase SuccessExitStatus=0 [Install] WantedBy=multi-user.target
On retiendra surtout ExecStart qui contient la commande de démarrage du serveur. Si on n’indique pas de ligne ExecStop, un SIGTERM sera envoyé au processus suivi d’un SIGKILL si le process ne s’est pas arrêté dans les 90 secondes.
On pourra noter aussi la présence des variables d’environnement $SYBASE et $IQDIR16 qui doivent être valorisées avant le démarrage, ainsi que OOMScoreAdjust=-1000 qui permet d’exclure le processus iqsrv16 de la liste des processus qui peuvent être stoppés par un oom-killer. Voir d’ailleurs l’excellent article d’Emmanuel sur ce sujet.
Il ne reste plus qu’à activer le service pour qu’il soit intégré à la base des services gérés par systemd:
$ systemctl enable MONSERVEURIQ.service Created symlink /etc/systemd/system/multi-user.target.wants/MONSERVEURIQ.service → /usr/lib/systemd/system/MONSERVEURIQ.service.
Tests arrêts / démarrages:
Et enfin tester tout ça proprement:
- Démarrage et statut:
$ systemctl start MONSERVEURIQ.service $ systemctl status MONSERVEURIQ.service ● MONSERVEURIQ.service - SAP IQ Server for MONSERVEURIQ Loaded: loaded (/usr/lib/systemd/system/MONSERVEURIQ.service; enabled; vendor preset: disabled) Active: active (exited) since Thu 2021-04-08 17:31:04 CEST; 23s ago Process: 1968946 ExecStart=/opt/sybase/IQ-16_1/bin64/start_iq @/opt/sybase/IQ-16_1/scripts/MONSERVEURIQ.cfg /iqdata/MONSERVEURIQ/MONSERVEURIQ.db (code=exited, status=0/SUCCESS) Main PID: 1968946 (code=exited, status=0/SUCCESS) Tasks: 1105 (limit: 1649007) Memory: 2.4G CGroup: /system.slice/MONSERVEURIQ.service └─1969066 /opt/sybase/IQ-16_1/bin64/iqsrv16 @/opt/sybase/IQ-16_1/scripts/MONSERVEURIQ.cfg /iqdata/MONSERVEURIQ/MONSERVEURIQ.db -o /opt/sybase/IQ-16_1/logfiles/MONSERVEURIQ.0008.srvlog -hn 6 Apr 08 17:31:09 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: Starting on port 2638 Apr 08 17:31:09 MONSERVEURIQ.capdata-osmozium.com start_iq[1968946]: Starting on port 2638 Apr 08 17:31:14 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: TCPIP link started successfully Apr 08 17:31:14 MONSERVEURIQ.capdata-osmozium.com start_iq[1968946]: I. 04/08 17:31:14.875112 TCPIP link started successfully Apr 08 17:31:14 MONSERVEURIQ.capdata-osmozium.com start_iq[1968946]: TCPIP link started successfully Apr 08 17:31:14 MONSERVEURIQ.capdata-osmozium.com start_iq[1968946]: I. 04/08 17:31:14.875975 Now accepting requests Apr 08 17:31:14 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: Now accepting requests Apr 08 17:31:14 MONSERVEURIQ.capdata-osmozium.com start_iq[1968946]: Now accepting requests Apr 08 17:31:15 MONSERVEURIQ.capdata-osmozium.com start_iq[1968946]: New process id is 1969066 Apr 08 17:31:16 MONSERVEURIQ.capdata-osmozium.com start_iq[1968946]: Server started successfully
- Arrêt et statut:
$ systemctl stop MONSERVEURIQ.service $ systemctl status MONSERVEURIQ.service ● MONSERVEURIQ.service - SAP IQ Server for MONSERVEURIQ Loaded: loaded (/usr/lib/systemd/system/MONSERVEURIQ.service; enabled; vendor preset: disabled) Active: inactive (dead) since Thu 2021-04-08 17:32:49 CEST; 38s ago Process: 1968946 ExecStart=/opt/sybase/IQ-16_1/bin64/start_iq @/opt/sybase/IQ-16_1/scripts/MONSERVEURIQ.cfg /iqdata/MONSERVEURIQ/MONSERVEURIQ.db (code=exited, status=0/SUCCESS) Main PID: 1968946 (code=exited, status=0/SUCCESS) Apr 08 17:32:44 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: Starting shutdown of database "MONSERVEURIQ" (MONSERVEURIQ.db) at Thu Apr 08 2021 17:32 Apr 08 17:32:44 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: Starting checkpoint of "MONSERVEURIQ" (MONSERVEURIQ.db) at Thu Apr 08 2021 17:32 Apr 08 17:32:44 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: Finished checkpoint of "MONSERVEURIQ" (MONSERVEURIQ.db) at Thu Apr 08 2021 17:32 Apr 08 17:32:44 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: TCPIP listener on IP address 0.0.0.0:2638 is exiting Apr 08 17:32:44 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: TCPIP listener on IP address (::):2638 is exiting Apr 08 17:32:45 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: Database "MONSERVEURIQ" (MONSERVEURIQ.db) stopped at Thu Apr 08 2021 17:32 Apr 08 17:32:45 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: Completing server shutdown Apr 08 17:32:46 MONSERVEURIQ.capdata-osmozium.com SQLAnywhere(MONSERVEURIQ)[1969066]: Database server stopped at Thu Apr 08 2021 17:32 Apr 08 17:32:49 MONSERVEURIQ.capdata-osmozium.com systemd[1]: MONSERVEURIQ.service: Succeeded. Apr 08 17:32:49 MONSERVEURIQ.capdata-osmozium.com systemd[1]: Stopped SAP IQ Server for MONSERVEURIQ .
C’est tout pour aujourd’hui , à bientôt sur le tech blog et n’oubliez pas de nous suivre sur LinkedIn !
~David
Continuez votre lecture sur le blog :
- Comparatif des gestionnaires de VIP dans un cluster Patroni : épisode 1 (KEEPALIVED) (David Baffaleuf) [ContainerPostgreSQL]
- Comparatif des gestionnaires de VIP dans un cluster Patroni : épisode 2 (VIP-MANAGER) (David Baffaleuf) [ContainerPostgreSQL]
- Haute disponibilité de PostgreSQL avec Patroni (Ludovic AUGEREAU) [PostgreSQL]
- AWS : Configurer un cluster PostgreSQL HD avec Corosync/Pacemaker sur des EC2 Amazon (Emmanuel RAMI) [AWSPostgreSQL]
- Cybertec Migrator : une alternative à ora2pg ? (Sarah FAVEERE) [OraclePostgreSQL]