wsadmin.sh|bat -conntype SOAP \
-lang jython|JACL \ (1)
-host host_name \ (2)
-user wasadmin \
-password password \
-port port_number (3)
Christoph Stoettner
+49 173 8588719
christoph.stoettner@panagenda.com
+49 173 8588719 |
|
Admin Schnittstellen
Daily Jobs
Wöchentliche Maintenance
Rechteverwaltung
Backup & Restore
Component Pack
Troubleshooting
3rd Party Tools
Administrative Oberfläche für WebSphere Application Server
Mit Google Chrome Probleme bei manchen Eingabefeldern. |
Sehr lange Klickpfade / verschachtelt
Änderungen werden zuerst temporär gespeichert
Vor dem Speichern Überprüfung möglich
Speichern: Änderungen werden in DMGR Masterkonfiguration übernommen
Konfiguration der Nodes muss anschliessend synchronisiert werden
System Administration ▸ Nodes
Node(s) markieren und "Full Synchronize"
Oder automatische Synchronisation aktivieren
System Administration ▸ Console Preferences
"Synchronize changes with Nodes" aktivieren
Bei mehreren WebSphere Umgebungen
Console Identity setzen
System Administration - Console Identity
Kommandozeilen Tool für die WebSphere Application Server Administration
Unterstützt zwei Programmiersprachen
JACL
eigentlich überholt
manche Kommandos sind aber nur in JACL abgebildet (SPNEGO Konfiguration)
Jython
Python Implementierung unter Java
kann also von Java aufgerufen werden und Java Kommandos ausführen
wsadmin unterstützt zwei Modi "remote" und "local" |
Gleichzeitig Änderung von verschiedenen Clients möglich
wsadmin.sh|bat -conntype SOAP \
-lang jython|JACL \ (1)
-host host_name \ (2)
-user wasadmin \
-password password \
-port port_number (3)
1 | Jython oder JACL |
2 | host_name - DMGR-Hostname |
3 | port_name - Default: 8879 |
soap.client.properties
com.ibm.SOAP.loginUserid=
com.ibm.SOAP.loginPassword=
Passwort mit PropFilePasswordEncoder
hashen
/opt/IBM/WebSphere/AppServer/bin/PropFilePasswordEncoder.sh \
/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/properties/soap.client.props \
com.ibm.SOAP.loginPassword
Passwort ist nur gehasht und kann zurückberechnet werden. Das Kennwort ist aber an mehreren Stellen im Config-Ordner auf gleiche Art gehasht gespeichert. |
Funktioniert auch wenn WebSphere nicht gestartet
Oft letzte Rettung bei Anmeldeproblemen
Immer im Dmgr-Profil\bin ausführen
cd /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin
./wsadmin.sh -conntype NONE
cd D:\IBM\WebSphere\AppServer\profiles\Dmgr01\bin
wsadmin.bat -conntype NONE
wsadmin> securityoff
wsadmin> exit
Jedes Modul hat ein eigenes Skript mit Bibliotheken
laden mit:
execfile('connectionsConfig.py')
execfile('<modul>Admin.py') (1)
1 | <modul>: activities , blogs , communities , dogear , files , forums , gadgets , homepage ,metrics , mobile , news , oauth , profiles , search oder wikis |
execfile("searchAdmin.py")
SearchService.addBackupIndexTask("WeeklIndexBackup", "0 0 2 ? * SAT", "0 10 2 ? * SAT")
SearchService.refreshTasks()
nach DB2 V9.7 kein Command Center mehr mitinstalliert
alte Version funktioniert noch, aber Probleme mit Binary Feldern
Überprüfung der Datenbanken nur über Konsole
db2 connect to peopledb
db2 select * from empinst.employee
Zusätzlichen Client installieren
DB2 Data Studio 4.1.1.0
JDBC Client (z.B. DBeaver, DBVisualizer, squirrelSQL, …)
Connections Datenbanken sind nicht dokumentiert!
Direkte Änderungen in Datenbanken sind nicht supportet! |
Einige Module haben mit entsprechenden Rechten eine Administrationsschnittstelle
Homepage
Suche / Search
Communities
Blogs
Gatekeeper (https://connections-fqhn/connections/config)
Security Rolle Admin der jeweiligen Applikation muss geändert werden
Änderung startet automatisch die Applikation neu! |
Admin Rolle zuordnen
Applications ▸ Application Types ▸ WebSphere Enterprise Applications ▸ Applikationsname ▸ Security role to user/group mapping
Gruppe oder einzelne Benutzer hinzufügen
Admin-Rolle in Homepage |
"My Page" deaktivieren
Widget Cache leeren
Widgets registrieren
Alternativ mit wsadmin |
Admin-Rolle in Search |
Übersicht über die wichtigsten Punkte der Suche
Admin-Rolle in Communities |
Hinzufügen von Quickr Places
Steuerung des Crawler
Anzahl Communities im Community Catalog
Admin-Rolle in Blogs |
Konfiguration der Blogs Einstellungen
einziges Modul das Konfiguration in DB speichert
Admin-Rolle in Common |
Viele Einstellungen
Beispiel: Enable Preview for source files
Änderungen im Gatekeeper sind nicht supportet! |
Customizer GUI wird ebenfalls über diese Rolle freigegeben
Prüfen ob ein User die Rolle hat
An Connections anmelden
https://connections.your_domain.com/connections/resources/web/user/roles?role=admin
{"admin":"true"}
{"admin":"false"}
Konfiguration erfolgt in XML-Dateien
dmgr-Profil/config/Zelle/LotusConnections-Config
Nicht direkt editieren! |
Besser über wsadmin
aus- und einchecken
wsadmin.sh -lang jython
execfile("connectionsConfig.py")
LCConfigService.checkOutConfig("/tmp", AdminControl.getCell())
wsadmin
Session geöffnet lassen
/tmp/LotusConnections-config.xml
editieren/speichern
LCConfigService.checkInConfig("/tmp", AdminControl.getCell())
Beim checkIn erfolgt Syntaxüberprüfung gegen die XSD-Datei
vermeidet Tippfehler
manche Settings erfordern eine exakte Reihenfolge
bei Fehlermeldungen auch die XSD überprüfen ob Setting enthalten
Alternativ Editor mit Validation
Nicht valide Config → Applikation(en) starte(t|n) nicht mehr
xmllint --noout --schema files-config.xsd files-config.xml
files-config.xml validates
Test-Xml -Path D:\temp\files-config.xml -SchemaPath d:\temp\files-config.xsd
Log-Dateien sollten täglich geprüft werden
Elasticsearch, Logstash & Kibana (ELK-Stack), Fluent, Splunk
WebSphere
SystemOut.log aller Application Server
HTTP Server
Error Log
DB2
Db2diag.log
Log Rollover aktivieren (DB2, HTTP) sonst ist das Log zu groß für den Editor. |
zentrale Komponente
Wichtig für Benutzerzufriedenheit
Suche basiert auf Apache Lucene
Index kann mit http://www.getopt.org/luke/ analysiert werden
Indizierung läuft alle 15 bzw. 20 min
Last Update Timestamp zeigt letzte Aktualisierung
alle Seiten der Basislisten (Seedlists) werden geholt
Speicherung im Filesystem
/opt/IBM/Connections/data/local/search/persistence
D:\IBM\Connections\data\local\search\persistence
Dateiinhalte werden extrahiert und im Filesystem gespeichert
SHARED_DIRECTORY
/search/extracted
lokal gespeicherte Seedlists werden durchgegangen
Seedlist entries werden in Lucene Dokumente indiziert
Dokument in Lucene Index geschrieben
Wiederholung bis alle Seedlist Seiten analysiert sind
Muss seit 6.0 aktiviert werden (search-config.xml
)
Prüfen ob nur aktuelle SearchNodes enthalten sind
<property name="statisticsService">
<propertyField name="serviceEnabled" value="true" />
</property>
Vier Searchnodes in einem Zwei-Node-System
Bei Migration nicht bereinigt
Homepage-DB läuft voll (Rekord 150GB)
Table: SR_INDEX_DOCS
guter Startpunkt für Fehlersuche und Funktionsprüfung
vier Statusfarben
blau:
Information: keine Aktion erforderlich
grün:
Konfiguration in Ordnung
gelb:
Warnung: Einstellung überprüfen
rot:
Problem: sollte dringend überprüft werden
Server Status
analysiert SystemOut.log der Search Applikation
Versionsdatei der Crawlersuche
Initial Indexing Exceptions
Ausnahmebedingungen bei der initialen Erstellung der Suche
SystemOut Log Exceptions
letzte Meldungen der Suche im SystemOut.log
Überprüfung von Basislisten (Seedlist Validation)
Check ob Seedlisten laden kann
SAND-Überprüfung (SAND Validation)
Überprüft die Dateien des SAND Index
Vergleich ResumeToken - Zeitstempel
ResumeToken ok
Zeitanzeige der Suche veraltet
Überprüfung der Scheduler
Ausführzeit in Vergangenheit
Neustart der Suche erforderlich
Achtung bei BackgroundIndex
Doku: Deaktivieren der Scheduler
Aktivieren nicht vergessen
Nicht sichtbar im Scheduler
"RUNNING" für mehrere Stunden
Next running in der Vergangenheit
Ursachen:
DMGR läuft nicht, wurde unterbrochen
Scheduler hängen geblieben
Execfile(“connectionsConfig.py”)
Scheduler.listAllTasks()
…
Search tasks
15min-search-indexing-task RUNNING Mon Sep 14 06:46:00 CEST 2018 0 1/15 0,2-23 * * ?
20min-file-retrieval-task SCHEDULED Mon Sep 14 07:01:00 CEST 2018 0 1/20 0,2-23 * * ?
nightly-optimize-task SCHEDULED Tue Sep 15 01:30:00 CEST 2018 0 30 1 * * ?
nightly-sand-task SCHEDULED Tue Sep 15 01:00:00 CEST 2018 0 0 1 * * ?
…
[root@cnx-was bin]# date
Mon Sep 14 20:54:31 CEST 2018
Abgleich LDAP und peopledb
min. 2x täglich ausführen
Sollte regelmäßig überprüft werden
Überblick
TDISOL\employee.*
Weitere Analyse mit
tdisol\logs\ibmdi.log
Eventuell muss DEBUG Einstellung erhöht werden
profiles_tdi.properties
(debug_*=true)
etc/log4j.properties
(log4j.rootCategory)
Ursache häufig abhängig vom sync_updates_hash_field
Vor Problemen Gedanken machen
Sync_updates_hash_field
UID
GUID
Beispiel CIO Max Müller geht in Rente
6 Monate später kommt ein neuer Auszubildender mit gleichem Namen
Was passiert?
Fehlerhaft synchronisierte User lassen sich nur schwer bereinigen |
Rolle nötig um Communities für externe Benutzer anzulegen
Externe Benutzer über eigenes TDISOL
Ersteller benötigt die EMPLOYEE.EXTENDED Rolle
Anzeige Benutzer mit EMPLOYEE.EXTENDED Rolle
Connect to PeopleDB;
SELECT r.PROF_DISPLAY_NAME, r.PROF_MAIL, r.PROF_UID, e.ROLE_ID
from EMPINST.EMP_ROLE_MAP e
left join EMPINST.EMPLOYEE r
ON e.PROF_KEY = r.PROF_KEY
WHERE e.ROLE_ID = 'employee.extended';
connect reset;
db2 -tvf extended-role.sql
Einzelne Benutzer
# Mailadresse
ProfilesService.setRole('Christoph.Stoettner@example.com',EMPLOYEE_EXTENDED)
# UserId
ProfilesService.setRoleByUserId('cstoettner', EMPLOYEE_EXTENDED)
Batch mit Liste (TXT zeilengetrennt)
# Mailadresse
ProfilesService.setBatchRole(EMPLOYEE_EXTENDED, 'profiles-email.txt')
# UserId
ProfilesService.setBatchRoleByUserId(EMPLOYEE_EXTENDED, 'profiles-userid.txt')
verschiedene tägliche Aufgaben fallen an
verwaiste Communities ohne aktive Owner
die maximale Größe für Dateiuploads ist erreicht (Quota)
Community Inhalt ist veraltet und soll archiviert werden
Communities sollen thematisch anders gruppiert werden
Subcommunities sollen eigenständig werden
eigenständige Communities sollen zu Subcommunities werden
Gelöschte Communities wiederherstellen
Admin benötigt die DSX-Admin Rolle |
Aufruf des Search Feeds für Communities
https://connections-host/communities/service/atom/communities/all
URL zeigt public Communities
User mit dsx-admin Rolle sieht ALLE Communities
User kann auch Member hinzufügen
In Subcommunities können nur Mitglieder / Eigentümer der Hauptcommunity hinzugefügt werden |
wsadmin
DSX-Admin Rolle ein Sicherheitsproblem
wsadmin
verwenden
UUID der Community benötigt
wsadmin
: UUID findenwssadmin>execfile("communitiesAdmin.py")
wsadmin>allComm=CommunitiesService.fetchAllComm()
wsadmin>CommunitiesListService.filterListByName(allComm,"Search Test")
[{lastModBy=[Admin Connections, 0989A11C-D85F-0B59-C125-7E7C003FFAE6],
created=09/09/15 13:27:20 CEST, tags=[test], type=private, name=Search Test,
uuid=351ace81-4ebf-4f47-af50-815799d3d353, memberSize=1, lastMod=10/09/15 08:58:45 CEST,
description=Testing Search , createdBy=[Admin Connections,
0989A11C-D85F0B59-C125-7E7C003FFAE6]}, {lastModBy=[Communities Administrator,
-Communities-Administrator-ID-], created=11/09/15 12:08:24 CEST, tags=[],
type=public, name=Search Test, uuid=e2f4589d-bfc9-4c1d-9320-98b60588e6ff, (1)
memberSize=2, lastMod=11/09/15 12:40:37 CEST, description=, createdBy=[Admin Connections,
0989A11C-D85F-0B59-C125-7E7C003FFAE6]}]
1 | uuid= |
0 = Mitglied
1 = Eigentümer
wsadmin>newowners=["homer.simpson@panastoeps.local", "christoph.stoettner@panastoeps.local"]
wsadmin>CommunitiesService.addMembersToCommunityByEmail("Search Test,1,newowners)
0091E: Multiple communities found with name: Search Test.
WASX7015E: Exception running command: "CommunitiesService.addMembersToCommunityByEmail("Search Test", 1, newowner)"; exception information:
javax.management.RuntimeMBeanException
java.lang.IllegalArgumentException: java.lang.IllegalArgumentException: CLFRM0091E: Multiple communities found with name: Search Test.
wsadmin>CommunitiesService.addMembersToCommunityByEmail("e2f4589d-bfc9-4c1d-9320-98b60588e6ff", 1, newowner)
addMembersToCommunityByEmail request processed
Eingeführt in IBM Connections 4.5 CR3
Verschieben von Communities unter verschiedenen Voraussetzungen:
Subcommunities können nicht direkt in eine andere Community umgehängt werden
Communities mit Subcommunities können nicht zu Subcommunities werden
Community-Eigentümer in der übergeordneten Community
als Eigentümer in die neue Subcommunity kopiert
Subcommunity-Mitglieder und -Eigentümer
als Mitglieder in die neue übergeordnete Community kopiert
Übergeordnete Community | Subcommunity vor Zuordnung | Subcommunity nach Zuordnung |
---|---|---|
Öffentlich | Öffentlich | Nicht geändert |
Öffentlich | Moderiert | Nicht geändert |
Öffentlich | Eingeschränkt | Nicht geändert |
Moderiert | Öffentlich | Moderiert |
Moderiert | Moderiert | Nicht geändert |
Moderiert | Eingeschränkt | Nicht geändert |
Eingeschränkt | Öffentlich | Eingeschränkt |
Eingeschränkt | Moderiert | Eingeschränkt |
Eingeschränkt | Eingeschränkt | Nicht geändert |
Eingeführt mit Version 5.0
Default Purge Interval ist 90 Tage
Task läuft täglich um 3 Uhr morgens
d.h. auch mit daysToDelete=0 landen gelöschte Communities erst im Papierkorb
endgültiges Löschen dann um 3 Uhr
<comm:scheduledTasks>
...
<comm:task name="fullDelete" description="Fully delete Communities in trash"
interval="0 0 3 ? * *" startby=""
enabled="true" scope="cluster" type="internal"
targetName="" mbeanMethodName="" serverName="unsupported" />
...
<!-- Number of days after which a soft-deleted community will be fully deleted -->
<comm:daysToDelete>90</comm:daysToDelete>
Community Eigentümer können auch im Browser wiederherstellen
Community ohne Eigentümer können mit wsadmin
wiederhergestellt werden
wsadmin>execfile("communitiesAdmin.py")
wsadmin>CommunitiesService.getSoftDeletedCommunityUuidList("2018-08-20")
Liste mit Communities die vor dem 20.8.2018 gelöscht wurden
wsadmin>execfile("communitiesAdmin.py")
wsadmin>CommunitiesService.getSoftDeletedCommunityUuidList()
Liste mit allen gelöschten Communities im Papierkorb
[{lastModBy=[Christoph Stoettner, B157E78B-E5D7-52D6-C125-7E7C003FF9D0],
created=15/09/18 23:38:53 CEST, tags=[], type=public, name=My community,
uuid=9b229afb-8034-4dff-93a7-d24eefbcacb1, memberSize=2, lastMod=15/09/18 23:40:11 CEST,
description=Description, createdBy=[Admin Connections, 0989A11C-D85F-0B59-C125-7E7C003FFAE6]}]
Undelete
CommunitiesService.unDeleteCommunity("9b229afb-8034-4dff-93a7-d24eefbcacb1")
Bug
Scheduler schreibt Fehler ins Log
A parent row cannot be deleted because the relationship "ACTIVITIES.OA_NODE.FK_NODE_PARENT"
Ignorieren oder Scheduler deaktivieren
oa-config.xml
<!-- ContentTrashAutoPurgeJob - every day @ 3 AM -->
<task name="ContentTrashAutoPurgeJob" description="Permanently removes Activities attachment trash from disk"
interval="0 0 3 * * ?" startby=""
enabled="true" scope="cluster" type="class" (1)
targetName="com.ibm.openactivities.jobs.ContentTrashAutoPurgeJobWS"
mbeanMethodName="" serverName="unsupported" >
1 | enabled="false" |
Library nicht mit CCM / FileNet verwechseln
Gemeint ist die maximale Uploadgrenze für Benutzer und Communities
Default: 500MB
Anzeige der vorhandenen Libraries:
FilesLibraryService.browseCommunity("title","true",1, 100)
FilesLibraryService.browsePersonal("title","true",1, 100)
Erstellen einer 2GB Policy
Zahl für Integer zu groß, daher L nicht vergessen
execfile("filesAdmin.py")
FilesPolicyService.add(“Test", 2147483648L)
Anzeige jeweils einer Library
wsadmin>FilesLibraryService.browsePersonal("title","true",1, 1)
[{maximumSize=524288000, size=0, percentUsed=0.0, summary=, orphan=false, createDate=Tue Aug 04 10:28:00
CEST 2015, policyId=00000000-0000-0000-0000-000000000000, externalContainerId=null, themeName=,
label=0989A11C-D85F-0B59-C125-7E7C003FFAE6, title=Admin Connections, ownerUserId=df9f0fb0-3b1d-473e-b77b298c85f46bcc,
type=personal, id=7262baae-0fc9-46b5-a027-908226f1d91b, externalInstanceId=null,
lastUpdate=Tue Aug 04 10:28:00 CEST 2015}]
wsadmin>FilesLibraryService.browseCommunity("title","true",1, 1)
[{maximumSize=524288000, size=3014413, percentUsed=0.005749536514282227, summary=, createDate=Mon Jul 27
12:29:24 CEST 2015, policyId=00000000-0000-0000-0000-000000000001, externalContainerId=11fbc5ff-76ac4e67-a64b-eee2ba20f5bf,
themeName=default, label=Wf2768f8b39b6_4dab_adf4_2a58ec803c04, title=Barmenia -
Test 2, ownerUserId=00000000-0000-0000-0000-000000000000, type=community, id=ec86968c-1f09-44fe-9dc5-
e2c6677b9f0e, externalInstanceId=Wf2768f8b39b6_4dab_adf4_2a58ec803c04, lastUpdate=Mon Jul 27 12:30:01
CEST 2015}]
Zuweisen der Policy zu einem Benuter oder Community
Liste vorhandene Policies (Anzeige von 25 Stk)
FilesPolicyService.browse("title", "true", 1, 25)
[{maximumSize=524288000, title=!Default for Community Files, id=00000000-0000-0000-0000-000000000001},
{maximumSize=524288000, title=!Default for Community Wikis, id=00000000-0000-0000-0000-000000000003},
{maximumSize=20971520, title=!Default for Guest Users, id=00000000-0000-0000-0000-000000000004},
{maximumSize=524288000, title=!Default for Non-Community Wikis, id=00000000-0000-0000-0000-000000000002},
{maximumSize=524288000, title=!Default for Personal Files, id=00000000-0000-0000-0000-000000000000},
{maximumSize=2147483648, title=Test, id=58d6add6-f55d-446e-abf5-c15a733bd662}]
Man benötigt die UUID der Community oder GUID des Benutzers
FilesLibraryService.assignPolicy(libraryId, policyId)
FilesLibraryService.assignPolicy("9b229afb-8034-4dff-93a7-d24eefbcacb1","58d6add6-f55d-446e-abf5-c15a733bd662")
Leere restricted Community "Archiv" erstellen
Mitglieder: nur ein Admin oder Admingruppe
Für Standardbenutzer nicht sichtbar und auch in Suche nicht angezeigt
Mitgliederliste der zu archivierende Community
exportieren
alle entfernen
Verschieben in die Archiv-Community (Subcommunity)
Entgültiges Löschen nach 6/12 Monaten |
Regelmäßige Durchführung von REORG und RUNSTAT
Minimum nach großen Datenänderungen (Update)
einmal monatlich während eines Wartungsfenster wäre perfekt
Datenbanken müssen dazu offline sein
Skripte liegen in [Connections-Root]/xkit/connections.sql
reorg.sql
updatestats.sql
bzw. runstats.sql
zum DB2 kopieren, für Instance Owner erreich- und ausführbar
db2 –td@ –vf reorg.sql
export CNX_ROOT=/opt/IBM/Connections
find ${CNX_ROOT}/xkit/connections.sql \
\( -name reorg.sql -o -name runstats.sql -o -name updatestats.sql \) \
| grep -v smartcloud | sort
/opt/IBM/Connections/connections.sql/activities/db2/reorg.sql
/opt/IBM/Connections/connections.sql/activities/db2/runstats.sql
/opt/IBM/Connections/connections.sql/blogs/db2/reorg.sql
/opt/IBM/Connections/connections.sql/blogs/db2/runstats.sql
/opt/IBM/Connections/connections.sql/communities/db2/reorg.sql
/opt/IBM/Connections/connections.sql/communities/db2/runstats.sql
/opt/IBM/Connections/connections.sql/dogear/db2/reorg.sql
/opt/IBM/Connections/connections.sql/dogear/db2/runstats.sql
/opt/IBM/Connections/connections.sql/files/db2/reorg.sql
/opt/IBM/Connections/connections.sql/files/db2/updateStats.sql
/opt/IBM/Connections/connections.sql/forum/db2/reorg.sql
/opt/IBM/Connections/connections.sql/forum/db2/runstats.sql
/opt/IBM/Connections/connections.sql/homepage/db2/reorg.sql
/opt/IBM/Connections/connections.sql/homepage/db2/updateStats.sql
...
Mit Default-Einstellungen sind Inhalte folgender Module sichtbar:
Profile
Suche (sämtliche öffentliche Inhalte)
Öffentliche Blogs, Communities, Lesezeichen, Dateien, Foren und Wikis
Google Suche mit inurl
Achtung bei Forenposts mit Logdaten oder URLs!
Soll wirklich jeder Internetbenutzer die Kontaktdaten Ihrer Mitarbeiter mit Mailadresse und oft Telefonnummer durchsuchen können? |
Nach Fixpack Installationen mit Version < 4.5 häufig Rollen wieder auf Default
Regelmäßig prüfen ob Inhalte öffentlich verfügbar sind
Reader → All Authenticated in Application’s Realm
Everyone muss auf everyone bleiben → Loginseite |
2. Everyone → All authenticated in Application Realm |
Beim Speichern startet Applikation automatisch neu |
Communities
Wikis
Default: Jeder authentifizierte Benutzer darf Wikis/Communities anlegen! |
Manchmal nicht erwünscht, daß jeder Communities anlegen darf
Subcommunities können nur von Eigentümern einer Community angelegt werden
Also diesen die Rolle zuordnen, oder ein Admin Owner jeder Community
community-creator müssen auch wiki-creator sein, sonst kein Wiki in Community |
Viele Kunden installieren Connections mittels
IBM Connections Dokumentation
Tutorials
Tipps
Keine dieser Anleitungen erwähnt Backups
Festplattendefekte bedeuten Datenverlust
auch RAID, Snapshot oder SAN kann Probleme verursachen
Fehler können immer passieren
Datenbank Backup bei laufender DB (über Dateibackup)?
Offline Backup bei globalen Installationen?
Restore bedeutet in den meisten Fällen Datenverlust
Anwendungen schreiben primär in eigene Datenbanken
Trigger über Events / MessageBus
Activitystream
Notification
Restore einzelner Datenbank inkonsistent
kein selektiver Restore möglich
DB2 unterstützt Online Backups
man muss es nur aktivieren
Konfiguration benötigt ein Offline Backup und den Neustart der Datenbank
Danach jederzeit Online Backup möglich
Ich bevorzuge unkomprimierte Backups
gebrannt durch Restore-Probleme
db2 update database configuration for BLOGS using LOGARCHMETH1 LOGRETAIN
AUTO_DEL_REC_OBJ ON num_db_backups 1 rec_his_retentn 0 logarchmeth1 disk:/opt/db2logs
db2stop && db2start
db2 backup database BLOGS to /opt/backup
db2stop && db2start
db2 backup database BLOGS online to /opt/backup INCLUDE LOGS
DB2 bietet auch automatische Backups
z.B. einmal täglich oder nach 10 MB Logfiles
Nachteil
keine genaue Zeit
Übereinstimmung mit hochgeladenen Dateien schwierig
DB Backup möglichst zeitgleich mit SHARED DIRECTORY
Scheduler besser geeignet als Automatic
Restore Online Backup siehe
Wie bereits bei der Suche erwähnt
DB Größen mit mehr als 5GB (unkomprimiert z.B. im Dump sichtbar) problematisch
Search Nodes als Ursache
Migration von CCM fehlerhaft
Config mit lokalem WebSphere User
Bei der Migration UUID nicht migriert → für CCM ein neuer User
Rekord knapp 250 GB durch 4 Log-Nachrichten in DB pro Sekunde
Customization
provision/webressources
(wichtige Jars für Common App)
Hochgeladene Dateien
Activities
Blogs
Files
Wikis
CCM (Bibliotheken)
CCM Objectstore
Unbedingt zeitnah vor oder nach DB Backup
backupConfig erstellt Sicherung
Konfiguration
Profile
Installierte Applikationen
./backupConfig.sh /opt/install/Websphere-config-date +%Y%m%d -nostop -username wasadmin -password password
Wiederherstellung in neue WebSphere Installation möglich
IBM HTTPServer
conf/httpd.conf
htdocs/*
SSL Keystore (Welcher wird verwendet?)
grep ^KeyFile /opt/IBM/HTTPServer/conf/httpd.conf | awk '{print $2}'
Connections (/opt/IBM/Connections
)
Skripte
CCM
ear-Dateien
Suchindex (cnxLocalData/search/index
)
IBM Installation Manager
enthält Daten zu allen installierten Komponenten (Installation und Uninstall)
Windows
%ApplicationData%\IBM\Installation Manager
Linux
/var/ibm/InstallationManager
CCM
ear enthält Datenbank Encryption key
Forms Experience Builder / Surveys
/var/ibm/forms
c:\ibm\forms
IBM Connections Docs
Touchpoint
Customization
HTTPSERVER/htdocs/touchpoint
Volumes (NFS Shares)
[root@orientme ~]# ls /pv-connections/ -al
drwxrwxrwx 9 usr grp 234 2. Mär 2018 customizations
drwxr-xr-x 2 usr grp 6 19. Dez 2017 esbackup
drwxr-xr-x 4 usr grp 29 19. Dez 2017 esdata-0
drwxr-xr-x 4 usr grp 29 19. Dez 2017 esdata-1
drwxr-xr-x 4 usr grp 29 19. Dez 2017 esdata-2
drwxrwxrwx 3 usr grp 18 19. Dez 2017 mongo-node-0
drwxrwxrwx 3 usr grp 18 19. Dez 2017 mongo-node-1
drwxrwxrwx 3 usr grp 18 19. Dez 2017 mongo-node-2
drwxrwxrwx 4 usr grp 35 19. Dez 2017 solr-data-solr-0
drwxrwxrwx 4 usr grp 35 19. Dez 2017 solr-data-solr-1
drwxrwxrwx 4 usr grp 35 19. Dez 2017 solr-data-solr-2
drwxrwxrwx 5 usr grp 41 1. Mär 2018 zookeeper-data-zookeeper-0
drwxrwxrwx 5 usr grp 41 1. Mär 2018 zookeeper-data-zookeeper-1
drwxrwxrwx 5 usr grp 41 1. Mär 2018 zookeeper-data-zookeeper-2
Minimum täglich
Datenbanken
Shared Directory
Regelmäßig (ein- bis mehrmals wöchentlich)
Konfiguration
WebSphere
Connections
CCM
IBM HTTPServer (inkl. Plugin und SSL Keys)
TDI Solutions Verzeichnis
Restore unbedingt testen! |
Nach Restore sollte ein übereinstimmender Stand zwischen Datenbank und Shared Directory gegeben sein
wsadmin>execfile("filesAdmin.py")
Connecting to WebSphere:name=FilesAdminService,type=LotusConnections,cell=cnxCell01,node=cnxNode01,*
Files Administration initialized.
wsadmin>FilesDataIntegrityService.checkFiles("/opt/install/filesintegrity")
The file integrity check has started and will continue to run in the background until complete. Please
check the server logs for completion status and messages.
SystemOut.log
[16/09/15 20:36:19:851 CEST] 000000d4 DataIntegrity I EJPVJ9123I: The task Data integrity check has begun execution at 16 September 2015 20:36:19 CEST.
[16/09/15 20:36:20:005 CEST] 00000227 CheckDataInte I EJPVJ9343I: The data integrity check succeeded and the database and file system are consistent. 0 unused file(s) were moved to /opt/install/filesintegrity.
[16/09/15 20:36:20:005 CEST] 00000227 CheckDataInte I EJPVJ9366I: The task Data integrity check has finished at 16 September 2015 20:36:20 CEST.
analog: WikisDataIntegrityService.checkFiles
In der Namensfindung
Basiert auf Kubernetes und Docker
Bis 6.0.0.5 IF1 nur mit IBM Cloud Private
CentOS / Red Hat
Docker CE / Docker EE
6.0.0.6
Helmbasierte Installation
Kubernetes / Helm als Voraussetzung
Kein Zwang mehr zu IBM Cloud Private
Ziel: Continous Delivery
Häufigere Updates
Kubernetes Dashboard
Rancher
Visualizer
Kommandozeile
kubectl
kubectx
kubens
helm
User greift auf Connections zu, Weiterleitung zu Orient Me
Redirect auf BLUE (/homepage/login
)
Authentifizierung mit BLUE (LDAP, SSO)
LtpaToken, JSESSIONID
BLUE fordert einen PINK Token an (/social/auth/token
)
Erstellt einen JWS Token Cookie
BLUE leitet zurück zu PINK (/social
)
PINK prüft auf LtpaToken und JSESSIONID
PINK authorisiert den Benutzer nach Check gegen Profiles API
ComponentPack (offizieller Name von Pink)
bereits jetzt 78 Pods
Metrics
Orientme
Customizer
Zusätzlich noch Kubernetes System
[root@orientme ~]# kubectl get pods -n connections | grep -v RESTART | wc -l
77
[root@orientme ~]# kubectl get pods -n kube-system | grep -v RESTART | wc -l
5
[root@orientme ~]# kubectl get pods --all-namespaces | grep -v RESTART| wc -l
94
[root@orientme ~]# kubectl get pods -n connections | grep zookeeper
NAME READY STATUS RESTARTS AGE
zookeeper-0 1/1 Running 6257 106d (1)
zookeeper-1 1/1 Running 0 106d
zookeeper-2 1/1 Running 0 106d
1 | zookeeper-0 läuft seit 106 Tagen und ist in der Zeit 6257 Mal neugestartet |
Filesystem
[root@theodore ~]# ls /var/log/containers/zoo*
/var/log/containers/zookeeper-0_connections_zookeeper-8f7adb4701e06579d9e87a4f8a264e474ee58a4a70adc170b57951a86effaa73.log
/var/log/containers/zookeeper-0_connections_zookeeper-b0fd645398b5970669450a90113f9b676d2c48d3fb5c481bd39745fc4c3fb151.log
/var/log/containers/zookeeper-1_connections_zookeeper-867cb4244ab48745ef1d39baceba010e078d32e24c379b4eeec48d1a364d293e.log
/var/log/containers/zookeeper-2_connections_zookeeper-0cfd7f984e4b3f64c108d460c338352209ed9affc9a5b108c61f8fe51c33cf40.log
[root@orientme ~]# ls /var/log/containers/ | wc -l
131
kubectl
kubectl logs -n connections zookeeper-0
kubectl logs -n connections zookeeper-1
kubectl logs -n connections zookeeper-2
Installation
wget https://raw.githubusercontent.com/johanhaleby/kubetail/master/kubetail
sudo mv kubetail /usr/local/bin
sudo chmod +x /usr/local/bin/kubetail
Ausführung
[root@orientme ~]# kubetail zookeeper -n connections
Will tail 3 logs...
zookeeper-0
zookeeper-1
zookeeper-2
[zookeeper-2] 2018-09-06 10:07:10,927 [myid:3] - INFO [ProcessThread(sid:3 cport:-1)::PrepRequestProcessor@487] - Processed session termination for sessionid: 0x2658fc24d747982
[zookeeper-1] 2018-09-06 10:07:10,911 [myid:2] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@192] - Accepted socket connection from /10.1.50.185:39506
Farbig hinterlegt
Based on four frontend microservices
orient-web-client (1)
itm-services (2)
community-suggestions (3)
middleware-graphql
and many more backend microservices
Get logs
kubectl get pods -n connections
kubectl logs -n connections *
# Check Port für Sanity
[root@orientme ~]# kubectl get services -n connections |grep -i sanity
sanity 10.0.0.164 <nodes> 3000:30918/TCP
Alle Komponenten regelmäßig prüfen
SAN IO ist wichtig
Schwer zu monitoren
Message Store
Dateien
Docs
PMI (WebSphere ISC) ist ein guter Start
Database Connections
Database Wait Time
JVM (Memory)
Welche Tools gibt es?
OpenSource
Connections Scripts
Kommerziell
Infoware: Domain Patrol Social
TIMETOACT: CAT Connections Administration Tool
IBM Software Services: ICXT / IC360
+49 173 8588719 |