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-mgmt02.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 eller skrive om til å autentisere mot LDAP (bedre).
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
START
Sett opp IPv6 på tjeneren, er gjort med:
# mm-prod01 nmcli con mod ens192 ipv6.method manual ipv6.address 2001:700:100:120::215/64 ipv6.gateway 2001:700:100:120::1 nmcli con up ens192 # mm-prod02 nmcli con mod ens192 ipv6.method manual ipv6.address 2001:700:100:52::34/64 ipv6.gateway 2001:700:100:52::1 nmcli con up ens192
IPv6-adressene ble regisrert i mreg/DNS før oppsett på tjenerne.
SLUTT
/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.
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