Mattermost: Installasjon
| Oppdatert: | 25. februar 2025 |
|---|
Innhold:
Vi kjører Mattermost i et "High Availability Cluster", noe som betyr at man har minst to noder som kommuniserer med hverandre og som er plassert bak en lastbalansert VIP.
Denne dokumentasjonen beskriver installasjon av noder i henholdsvis test- og produksjonsmiljøet vårt, samt en administrativ maskin som brukes for oppdatering av teams og kanaler.
Management / synkronisering
Sørg for at den nye tjeneren har rollene (dette kan man gjøre i Virtprov nå):
- postmaster_host
- with_monitoring
- mattermost_mgmt_server
Per i dag er mm-mgmt01.uio.no plassert på postmasternettet, men ideelt sett burde den vært på et nedsperret nett (f.eks. kategori 4). Ulempen er at man da må bestille tilgang til LDAP.
Synkroniseringstjeneren krever en Pythonversjon høyere enn 3.6. Skal bli automatisk innstallert av CFEngine. I tillegg ønsker vi at /site/ skal populeres (med katalogene «bin», «lib» og «config»):
echo "prod" > /etc/uio/conf/postmaster-release
TODO: I tillegg trenger vi en bruker for å kjøre synkoriniseringen, lag mattermost:
useradd --system --user-group mattermost
TODO: Generere en token for synchroniseringen. Initiell synkronisering?
Mattermost-noder
Endel av installasjonen er felles for test- og produksjonsmiljøet. Alle nodene er plassert på kategori 1-nett (eller tilsvarende), noe som betyr at de er åpne for verden. Hvert av miljøene består av to noder, hvor en er plasser i OJD (VLAN 121) og en i KNH (VLAN 4). Vi har tilgang til å bestille VM-er på begge nett i Virtprov.
Det er ikke behov for å bestille ekstra diskplass, siden Mattermost lagrer mesteparten enten i databasen eller på det delte NFS-området.
Sørg for at den nye tjeneren har rollene under. Alle i postmastergruppen kan gjøre dette i Virtprov nå, alternativt i mreg (om man har tilgang):
- postmaster_host
- mattermost_server
- with_monitoring
Test og produksjon bruker samme lisens. Den distribueres med CFEngine og lastes automatisk inn ved oppstart (se konfigurasjonen i Git). Lisensnøkkelen ligger også i Vault.
Testmiljøet
For nye maskiner må det bestilles tilgang til:
- NFS området /net/app-evs/mattermost-test-data
- Databasen mm_test på dbpg-hotel-utv.uio.no
Databasenavn, -bruker og -passord er lagret i Vault.
Produksjonsmiljøet
For nye maskiner må det bestilles tilgang til:
- NFS området /net/app-evs/mattermost-data
- Databasen mm_prod på dbpg-mattermost01.uio.no
Databasenavn, -bruker og -passord er lagert i Vault.
Install av maskin
NB! Det er gjort noen endringer i denne dokumentasjonen etter at produksjonsmiljøet ble installert, bl.a. fordi CFEngine-oppsettet er utvidet, som ikke er testet.
Mattermost blir installert på /opt. Utvid disken:
lvextend -L+20g /dev/internvg/opt xfs_growfs /dev/internvg/opt
Last ned siste versjon av Mattermost, «Enterprise Edition». Dette må være samme versjon som det de andre nodene kjører. Oppdater de andre nodene hvis de ligger etter i versjon.
Last ned siste versjonen, i dette eksemplet 5.19.1:
cd /tmp/ wget https://releases.mattermost.com/5.19.1/mattermost-5.19.1-linux-amd64.tar.gz
Pakk ut og kopier over filene:
tar -zxvf /root/mattermost-5.19.1-linux-amd64.tar.gz mv -i ./mattermost /opt
Opprett noen mapper vi trenger:
mkdir /site mkdir -p /var/www/mattermost/
Opprett bruker og sett eierskap (sett UID pga. delt data-område?)
useradd --uid 496 --system --user-group mattermost chown -R mattermost:mattermost /opt/mattermost chmod -R g+w /opt/mattermost
Tagg tjeneren som «prod» elller «test» basert på tjenernavn):
echo ${HOSTNAME:3:4} > /etc/uio/conf/postmaster-release
cat /etc/uio/conf/postmaster-release
/var/cfengine/bin/cf-agent -K -I
Start autofs og lag symbolsk lenke til NFS-området med delte data:
systemctl enable autofs
systemctl start autofs
if [[ "${HOSTNAME:3:4}" == "test" ]]; then
SHARE=/net/app-evs/mattermost-test-data
else
SHARE=/net/app-evs/mattermost-data
fi
cd $SHARE
chown mattermost:mattermost .
ln -s $SHARE /opt/mattermost/data
Generer oppdatert konfigurasjon:
/site/bin/mattermost-generate-config-file
«nginx» og sertifikater skal bli distribuert av CFEngine, inkludert root CA for OCSP Stapling og DH Parameter Tillat nginx å koble til localhost:8065 og :8074:
semanage port -a -t http_port_t -p tcp 8065 semanage port -a -t http_port_t -p tcp 8074
Start opp nginx:
systemctl enable nginx systemctl start nginx
Skru på og start Mattermost-tjenesten:
systemctl enable mattermost systemctl start mattermost
Mattermost har en egen produksjons-tagg for om tjeneren skal være i i LVS eller ikke. Oppdater den:
/site/bin/mattermost-add-prodtag.sh /site/bin/mattermost-check-server-status.py /sbin/restorecon -Fv /var/www/mattermost/check.txt
Det er lagt til en egen datadisk på 100G i produksjon, ta i bruk halvparten i første omgang:
pvcreate /dev/sdb vgcreate datavg /dev/sdb lvcreate -L 50G -n data datavg mkfs.xfs /dev/datavg/data mkdir -p /data echo "/dev/mapper/datavg-data /data xfs defaults 0 0" >> /etc/fstab mount /data
Nett
/etc/sysctl.d/90-lvs.conf og /etc/modules-load.d/lvs.conf distribueres av CFEngine, sørg for at nettverksinnstillingene der er i effekt før VIP-grensesnittet settes opp:
echo "DEVICE=tunl0 BOOTPROTO=static IPADDR=129.240.13.135 NETMASK=255.255.255.255 ONBOOT=yes TYPE=ipip ZONE=public" > /etc/sysconfig/network-scripts/ifcfg-tunl0
osv. osv.
Gjort på mm-prod03 og mm-prod04 etter litt støy i logger:
echo "net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf sysctl -p
iptables
«iptables» skal være installert av CFEngine, skru på:
systemctl enable iptables systemctl enable ip6tables
Fjerne firewalld:
systemctl stop firewalld systemctl disable firewalld systemctl mask firewalld
Start iptables:
systemctl start iptables systemctl start ip6tables
Feilsituasjon
Dersom tjeneren ikke blir tilgjengelig over ipv6 etter boot, gjør følgende (ssh -4):
[root@mm-prod03 ~]# nmcli con mod ens192 ipv6.method manual ipv6.address 2001:700:100:8041::61/64 ipv6.gateway 2001:700:100:8041::1 [root@mm-prod03 ~]# nmcli con up ens192 [root@mm-prod04 ~]# nmcli con mod ens192 ipv6.method manual ipv6.address 2001:700:100:52::22/64 ipv6.gateway 2001:700:100:52::1 [root@mm-prod04 ~]# nmcli con up ens192