Thanks for details . Trying to digest this information and following is my understanding . I am not using Docker/pod and all are physical servers in our case. Also original install on all PROD are done using RPM install method (wish first time version specific libraries were used but its too late as it was done in the past).
Please correct if you think wrong anywhere in these steps. I will work on automation later once i test these steps manually.
**Step 1 upgrade Client Servers **
Before upgrading the server do the following setup on Client machine so client can connect to both current version and then after upgrade without any downtime (some downtime till all server process comes back after kill) to the new version.
a) Download
https://github.com/apple/foundationdb/releases/download/7.1.9/libfdb_c.x86_64.so to
/opt/foundationDB/multiversion-client/libfdb_c_7.1.9.x86_64.so
b) cp /usr/lib64/libfdb_c.so to /opt/foundationDB/multiversion-client/libfdb_c_6.3.24.x86_64.so --this is
current version which was installed using RPM . In future I will not need this step as step a will take
care of multi version support.
c) set environment variable
FDB_NETWORK_OPTION_EXTERNAL_CLIENT_DIRECTORY=/opt/foundationDB/multiversion-client
For JAVA application they can set fdb.options().setExternalClientDirectory(...) instead of FDB_*
variable setting.
d). Bound client application .
e) check cluster.clients.supported_versions using json status from DB server and client and protocol version and Ip address connected.
Going forward we will not use RPM and /usr/lib64/libfdb_c.x86_64.so and keep two versions of the client current and new one . Client might need to upgrade language specific upgrade to be compatible with new version.
Step 2 Upgrade Server
a) Set kill_on_configuration_change=false in the conf file.
b) Download following binaries to /opt/foundationDB/7.1.9/
https://github.com/apple/foundationdb/releases/download/7.1.9/fdbbackup.x86_64
https://github.com/apple/foundationdb/releases/download/7.1.9/fdbcli.x86_64
https://github.com/apple/foundationdb/releases/download/7.1.9/fdbmonitor.x86_64
https://github.com/apple/foundationdb/releases/download/7.1.9/fdbserver.x86_64
c) Create Softlink for the following binaries
ln -s /opt/foundationDB/7.1.9/fdbserver.x86_64 /usr/sbin/fdbserver
d) Connect to fdbcli which will be 6.3.24 version (current version) and run kill; kill all; status
e) ln -s /opt/foundationDB/7.1.9/fdbcli.x86_64 /bin/fdbcli --this will make fdbcli latest version . Connect again using fdbcli and check the status of the cluster.
f) ln -s https://github.com/apple/foundationdb/releases/download/7.1.9/fdbbackup.x86_64 /bin/fdbbackup
g) At this time if cluster and application both running fine and fdbcli --version shows latest version then we can decide to upgrade fdbmonitor at this time by softlink
ln -s /opt/foundationDB/7.1.9/fdbmonitor.x86_64 /bin/fdbcli /usr/lib/foundationdb/fdbmonitor
h) Rolling bound “sudo service foundationdb restart” making sure enough services are available to
process the application workload without downtime"
I still need to find out
- How to upgrade or where to get the binaries for fdbrestore and fdbdr
- Also not sure if upgrading fdbbackup is sufficient to take backup using new version as configuration file is using “command = /usr/lib/foundationdb/backup_agent/backup_agent” so how to upgrade “backupagent” with the new version.