Thursday, 2 July 2020

HCL Domino 11 on Docker

The main goal of this document is to show HCL Domino 11 installation on Docker for test purposes, including Docker installation and Linux configuration.
Operating system: redhat-release-server-7.7-10.el7.x86_64
Kernel: 3.10.0-1062.el7.x86_64
CPU: 2 Core
Memory: 4 Gbyte
Disc: 20 Gbyte
Host: d11docker.andras.demo
IP: 192.168.0.126
User: root
Important: If you see this “” (one long), please replace it with “--" (two short)

Preparations

Internet access is required. Without it you have to download and copy all required packages manually.

RHEL7 Keymap

Because I use Hungarian keyboard, I change keymap to Hungarian. *Comment: You can list available keymaps: localectl list-keymaps
localectl set-keymap hu

RHEL7 Firewall

Required ports to setup and access HCL Domino server:
·         80        HTTP
·         443     HTTPS
·         1352   HCL Notes client
·         8585   HCL Domino Server Remote Setup         *This is the only way at the moment to setup Domino server on Docker.
On my RHEL7 server 80, 443 and 1352 port are part of basic settings. I add 8585.
vim /etc/services
Check and modify as required
http                 80/tcp             #WorldWideWeb HTTP
http                 80/udp            #HyperTextTransferProtocol
https               443/tcp           #WorldWideWeb HTTPS over TLS/SSL
https               443/udp         #HyperTextTransferProtocol over TLS/SSL
lotusnote       1352/tcp         #Lotus Notes or HCL Notes
lotusnote       1352/udp       #Lotus Notes or HCL Notes
lotusnote       8585/tcp         #Lotus Domino or HCL Domino Remote Setup
lotusnote       8585/udp       #Lotus Domino or HCL Domino Remote Setup

Save and close file
Because I added only 8585, I need only these commands below:
firewall-cmd –zone=public –add-port=8585/tcp –permanent
firewall-cmd –zone=public –add-port=8585/udp –permanent
firewall-cmd --reload

RHEL7 hosts file

Because I do not use DHCP/DNS servers I add fully qualified host name and IP to hosts file. *Comment: I must add fully qualified host name and IP to host file on my test client, too.
vim /etc/hosts
192.168.0.126           d11docker.andras.demo     d11docker
*Comment: If you use DNS/DHCP you do not need this configuration.
*Comment: Change it as you want. This is a demo environment.
Save and close. Test it with ping.
ping d11docker.andras.demo
*Comment: Do not continue if it does not work with the fully qualified host name and correct IP address!

RHEL7 limits

HCL Domino server requires changes in limits.conf to run properly. Because I use root user I will change it for root.
vim /etc/security/limits.conf
root     hard    nofile  65535
root     soft      nofile  65535

Save and close the file.
I create folder for installation and other packages.
mkdir -p /opt/install

RHEL7 .bash_profile

I change history settings. It is very useful for learning but it is not mandatory.
cd $HOME
vim ./.bash_profile
HISTFILESIZE=10000
HISTSIZE=1000
HISTCONTROL=ignorespace:ignoredumps
export HISTFILESIZE
export HISTSIZE
export HISTCONTROL

Save and close the file.

Docker repo

yum clean all
yum repolist enabled

Required container package

cd /opt/install
yum -y install container-selinux-2.119.1-1c57a6f9.el7.noarch.rpm

RHEL7 aliases

I create some useful aliases, but they are not mandatory.
cd $HOME
vim ./.bash_profile
alias dockerstart=’systemctl start docker’
alias dockerstop=’systemctl stop docker’
alias dockerstatus=’systemctl status docker’
Save and close the file.
source ./.bash_profile

Docker installation

yum -y install docker-ce docker-ce-cli containerd.io
For the first time use
systemctl start docker
systemctl status docker
systemctl stop docker
In the future you can use aliases.
Do not continue if Docker is not Active!
“Active: active (running) since …….”
docker info    *Comment: Docker must run. ‘docker info’ command gives you information about running Docker environment.

The environment is ready to install HCL Domino 11 for Docker.



HCL Domino 11 for Docker installation


Required package: Domino_1101_DockerImage.tgz
Create Docker volume for Domino 11      *Comment: This is a local data store only for test purposes.
docker volume create notesdata
docker volume list
docker volume list
docker volume inspect notesdata
*Comment: you can see the “Mountpoint” for this volume. This is independent from the Domino server container, so you can recreate, update, upgrade container anytime without loosing Domino data and configuration.
“Mountpoint”: “/var/lib/docker/volumes/notesdata/_data”
Create local Domino 11 image repository
docker load –input /opt/install/Domino_1101_DockerImage.tgz
Check image availability
docker image ls -a
My results
REPOSITORY: domino-docker
TAG: V1101_03212020prod
IMAGE ID: 2854f040d034
CREATED: 2 months ago
SIZE: 1.37 GB

Domino server setup

At the end of this process the container will be removed automatically. It is normal.
docker run --rm -e JAVA_OPTS=’-Xmx1500m -Xms1500m’ --name domino-docker -v notesdata:/local/notesdata --hostname d11docker.andras.demo -p 8585:8585 -p 1352:1352 -p 80:80 -p 443:443 domino-docker:V1101_03212020prod --setup
*Comments:
notesdata:/local/notesdata             *Do not change this
-p 8585:8585 -p 1352:1352 -p 80:80 -p 443:443            *end users connect to host operating system on the port on the left side and Docker connects them to Domino server on the ports on the right side. Standard ports for Domino server communication
domino-docker:V1101_03212020prod                 *You can check version with command docker image ls -a                You need TAG.
-e JAVA_OPTS=’-Xmx1500m -Xms1500m’        *If you forget this part, setup will fail at the beginning.

Now you need your test client with HCL Notes client including HCL Remote Server Setup. First of all, test connections to Domino server setup from your test client with telnet.
I use Windows 10 cmd
ping d11docker.andras.demo        *Comment: Do not continue if it does not work!
telnet -e Q d11docker.andras.demo 8585           *Comment: Do not continue if it does not work!
Start HCL Domino Remote Server Setup and configure your Domino server.

Run the first Domino server start command if everything was all right.
docker run -it --name domino-docker -v notesdata:/local/notesdata –hostname d11docker.andras.demo --cap-add=SYS_PTRACE -p 80:80 -p 443:443 -p 1352:1352 domino-docker:V1101_03212020prod
Now you must see Domino server console.
Open another terminal window
docker container list
You can see information about Domino 11 container. You can see that /local/start.sh inside the container starts Domino environment. If you want to see the content of /local/start.sh run command docker container exec -it cat /local/start.sh
Now you can stop Domino server on Domino Console: quit
To get CONTAINER ID run
Docker container ls -a
Save CONTAINER ID !!     My ID is “eef2ea62a40a”
You stop and start the container by command
Docker container stop eef2ea62a40a
Docker container start eef2ea62a40a      -           *Comment: This command starts the container including Domino server without Domino server console. Use Domino Administrator client to manage server.
Remember!
docker volume inspect notesdata
cd /var/lib/docker/volumes/notesdata/_data        *Comment: path is based on inspect result
You can see all databases, ids and ini files.


Useful links

I used these wikis, knowledge bases to build and configure this test environment.
Domino on Docker

Deploying a new Domino server on Docker

Docker installation for HCL Domino server on Linux

Docker general commands

Domino on Docker requirements

Deploying on Docker

Procedure


·         Loading the domino-docker tar archive file to Docker
The first step to deploy a new Domino server on Docker is loading the domino-docker tar archive file to Docker. This creates the image that's used to create containers.
·         Creating the volume to store the data directory
After you load the domino-docker tar archive to Docker, create a Docker volume. The Docker volume is a persistent location to hold the Domino data directory
·         Creating a temporary container for remote server setup
To deploy a new Domino server as a Docker container, first create a temporary container to complete remote Domino server setup.
·         Creating a container for Domino
After you have set up a new Domino server using a temporary container, create the container to run the Domino server.

Saturday, 28 September 2019

HCL Connections - HOMEPAGE database migration with with dbt tool

https://www.ibm.com/support/knowledgecenter/SSYGQH_5.5.0/admin/migrate/t_migrate_db2__side_by_side.html

My personal practical experience:


Case #1
dbt ran 17 hours
Database_Transfer.log.0          18 Mbyte

Case #2
dbt ran 16 hours
Database_Transfer.log.0          16 Mbyte

Case #3
dbt ran 24 hours
Database_Transfer.log.0          21 Mbyte

I recommend you to plan 24 hours for HOMEPAGE migration with dbt tool. You do not need to tail log file. It is very boring. You may see hundreds of thousands rows like these:

[07/04/19 03:55:36.235 CEST] doing the check invalid pk for where clause for column: DOCUMENT
[07/04/19 03:55:36.235 CEST] PKs: [DOCUMENT_ID]



I recommend you to start process, wait 20 minutes and check status. In case of error the process usually stops in 20 minutes with error messages.
In case of errors:

  • Check homepage.xml (if you use the same name)
    • URLs
    • username and password
    • dbType
    • Be very careful with source and target
    • you should increment Xms and Xmx   *if you do not use these parameters process can fail after 8 - 12 hours
    • run db2 update cfg for HOMEPAGE
Here you are an example homepage.xml:



driver="com.ibm.db2.jcc.DB2Driver"
url="jdbc:db2://1.1.1.1:50000/HOMEPAGE"
userId="LCUSER"
schema="HOMEPAGE"
dbType="DB2"/>

driver="com.ibm.db2.jcc.DB2Driver"
url="jdbc:db2://2.2.2.2:50000/HOMEPAGE"
userId="db2inst1"
schema="HOMEPAGE"
dbType="DB2"/>



Here you are an example to run dbt (migrateHomepage.sh):

run the tool as db2 user, for example: db2inst

export DBT_HOME=/opt/ibm/install/dbt
export JAVA_HOME=/opt/ibm/install/conns6wiz/Wizards/jvm/linux/jre
export PATH=$PATH:/opt/ibm/install/conns6wiz/Wizards/jvm/linux/jre
export DB2_HOME=/opt/ibm/install
sleep 5
echo "db2stop force and sleep 10"
db2stop force
sleep 10
echo
echo "db2start and sleep 10"
db2start
echo "update db cfg for HOMEPAGE using APPLHEAPSZ automatic APPL_MEMORY automatic SELF_TUNING_MEM ON - and sleep 10"
sleep 10
echo
db2 "update db cfg for HOMEPAGE using APPLHEAPSZ automatic APPL_MEMORY automatic SELF_TUNING_MEM ON"
sleep 10
echo "run dbt"
echo
$JAVA_HOME/bin/java -Xms4096m -Xmx4096m -cp $DBT_HOME/dbt.jar:$DB2_HOME/febjava/db2jcc4.jar com.ibm.wps.config.db.transfer.CmdLineTransfer -logDir $DBT_HOME/logs -xmlfile $DBT_HOME/homepage.xml -sourcepassword 123456789 -targetpassword 987654321
echo
sleep 10
echo
echo "db2stop force at the end of the process"
db2stop force
echo
sleep 10
echo
echo "db2start at the end of the process"

db2start



At the end of the log file you should see something like this:

[07/04/19 09:41:54.222 CEST] Population of NR_FOLLOWS (31042 rows) completed successfully
[07/04/19 09:41:54.222 CEST] Processing table -{ SR_GLOBAL_SAND_PROPS->SR_GLOBAL_SAND_PROPS }-
[07/04/19 09:41:54.222 CEST] SELECT * FROM "HOMEPAGE"."SR_GLOBAL_SAND_PROPS"
[07/04/19 09:41:54.445 CEST] INSERT INTO "HOMEPAGE"."SR_GLOBAL_SAND_PROPS" ("GSP_ID","GSP_NAME","GSP_VALUE","GSP_TYPE") VALUES( ?, ?, ?, ? )
[07/04/19 09:41:54.446 CEST] Transferring table --{ HOMEPAGE.SR_GLOBAL_SAND_PROPS}-- to table --{HOMEPAGE.SR_GLOBAL_SAND_PROPS }--
[07/04/19 09:41:54.525 CEST] Population of SR_GLOBAL_SAND_PROPS (0 rows) completed successfully
[07/04/19 09:41:54.525 CEST] Transfer finished


During the process you have Database_Transfer.log.0.lock or similar with lock at the end. If it exists the process is still running.

Thursday, 10 January 2019

IBM Connections 6 - Profiles population - i4clntjni (Not found in java.library.path)

ibmdi.log


ERROR [com.ibm.di.loader.ServerLauncher] - CTGDKG023E Error while starting main class.
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:613)
at com.ibm.di.loader.ServerLauncher.startServer(ServerLauncher.java:173)
at com.ibm.di.loader.ServerLauncher.main(ServerLauncher.java:79)
Caused by: java.lang.UnsatisfiedLinkError: i4clntjni (Not found in java.library.path)
at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1197)
at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:1161)
at java.lang.System.loadLibrary(System.java:527)
at com.ibm.LUMClient.LumCoreClient.(LumCoreClient.java:32)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:236)
at com.ibm.LUMClient.LumClient.setOption(LumClient.java:254)
at com.ibm.di.server.RS.checkLUM(RS.java:3574)
at com.ibm.di.server.RS.main(RS.java:589)
... 6 more

SOLUTION
Packages must be installed.
i4clntjni is part of  compat-libstdc++-33.x86_64

glibc.x86_64 \
compat-libstdc++-33.x86_64 \
nss-softokn.x86_64 \
libXpm.x86_64 \
libXtst.x86_64 \
gtk2.x86_64 \
libcanberra-gtk2 \
gtk2 won't be required if you are on a non-terminal system.


********************************************************
CHECK
yum list installed | grep compat-libstdc
compat-libstdc++-33.i686            3.2.3-72.el7                   installed

compat-libstdc++-33.x86_64          3.2.3-72.el7                   installed

If compat-libstdc++-33.x86_64 is missing:

  1. Uninstall TDI with standard TDI uninstaller
  2. Restart machine
  3. Remove TDI folder. For example: rm -rf /opt/IBM/TDI
  4. yum install compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm (you have to download rpm package)
  5. yum list installed | grep compat-libstdc *check result
  6. Install TDI including latest fixes
  7. Try it again
*If you install compat-libstdc without removing TDI, you will receive licence error message. TDI removal before installing compat-libstdc is a must.

Thursday, 30 August 2018

IBM Domino/Notes 10 beta 2

Augusztus közepén elérhetővé vált az IBM Domino/Notes 10 beta 2. Az IBM kibővítette a tesztelők körét, így magyar partnerek és jómagam is hozzájutottunk a kódhoz. A rendszerkövetelmények alapján Redhat 7.4 Enterprise szervert választottam a Domino szerverhez és Windows 7-et a klienshez.A szerver simán felment és el is indult, a Notes klienshez viszont le kellett futtatni a legutolsó Windows Update-t, mert anélkül hibaüzenettel leállt a telepítés. Alapvetően a szerver és kliens oldali újdonságokat néztem végig, mivel fejlesztésben nem vagyok nagyon jártas.

Első élményeim ("What's New in IBM Notes and Domino 10 Beta 2 by IBM" alapján):

!!!!! A szoftverek tulajdonosa/fejlesztője fenntartja a jogot a bármikori változtatásra !!!!!

*Megjegyzés: Számos, új szolgáltatás a rendszerüzemeltetéshez kapcsolódik. Ezeket, egy teszt szerveren, kb. 100 teszt dokumentummal és 3 teszt felhasználóval futó rendszerben, nem igazán lehet hatékonyan kipróbálni.
 
"Document deletion logging" azaz követhető a Domino szerveren, a delete.log fájlban az alkalmazásokból történő dokumentumok törlése. Ehhez kialakítottak egy új compact paramétert. A ki/be kapcsolható szolgáltatásban meg lehet adni minden egyes adatbázisnál, hogy mely mezők adatait tegye bele a logba. Ezek a logok csv formátumú, nem titkosított fájlok, ezért vigyázni kell, hogy mi kerül bele. Nekem kiválóan működött a postaládámmal, a "From","To","Subject" mezőkkel. "Scheduled messages" azaz házirenden (policy) keresztül engedélyezhető a felhasználóknak, hogy beállítsák azt a dátumot és időpontot, amikor a megírt levelüket a rendszernek továbbítania kell a címzetthez. A megírt levelek nem a felhasználónál dekkolnak, hanem a Domino szerver postázójában (mailXX.box). A postázóban szűrve listázhatók az időzített leveleket. A postázó (router) új paramétereket kapott az időzített levelek lekérdezésére. 
"Set limits for sending mail" azaz házirenden (policy) keresztül szabályozhatóak a következők: - Levél maximális mérete - Csatolmányok maximális száma - Csatolmányok összesített mérete - Címzettek maximális száma, de egy csoport egy címzettnek számit, akárhány tagja van 
"Improved send mail errors and warnings" Ezt nehéz lenne magyarázni, inkább itt egy kép róla.


"Enable Run Roles On Existing Mail (takes effect after reopening mail tab)" Régen várt szolgáltatás ez. Csak annyit mondhatok, hogy VÉGRE!

Tuesday, 7 August 2018

Domino/Notes 10 beta 1

Limited number of partners were selected for beta 1. Participant list will be extended for beta 2 in August, 2018.