Hyppää sisältöön

Asennus

Huomautus

Muistutus: siirtyminen käyttäjäksi root Debian-koneilla on tehtävä seuraavalla komennolla:

1
su -

Tämän sivun ohjeita on noudatettava kaikkien PostgreSQL-klusterin solmujen asennuksessa.

Järjestelmäasetukset

Yhteyden muodostaminen koneeseen

Virtuaalisilla appliance-laitteilla on oletuksena kaksi tiliä: käyttäjätili ja pääkäyttäjätili.

  • Käyttäjätili
    • Kirjautumistunnus: systancia
    • Salasana: systnci
  • Pääkäyttäjätili
    • Kirjautumistunnus: root
    • Salasana: systnci

Yhdistä koneeseen konsolitilassa.

Huomautus

Oletusnäppäimistöasettelu on QWERTY.

Näppäimistöasettelun muuttaminen

Voit vaihtaa näppäimistöasettelun seuraavalla komentorivillä:

1
dpkg-reconfigure keyboard-configuration

Näkyviin tulee valikko, josta voit valita toisen näppäimistöasettelun.

Käytä sen jälkeen seuraavaa komentoriviä asetusten soveltamiseen ja tallentamiseen:

1
setupcon -k --save

Asetukset tulevat voimaan välittömästi tämän komennon suorittamisen jälkeen.

Verkon määritys

Virtuaalinen appliance ei ehkä saa verkkomääritystä käynnistyessään seuraavista syistä:

  • Verkkoliitännän nimi ei ole ens192: appliance on määritetty DHCP:tä varten vain ens192-liitännässä
  • DHCP-palvelinta ei ole käytettävissä

Tarkista verkkoliitännän nimi, sen tila ja määritetyt IP-osoitteet suorittamalla seuraava komento root-käyttäjänä:

1
ip -br a | grep -ve "^lo"
Esimerkki

Komennon suorittamisen jälkeen näytetään seuraava vastaus:

1
ens192      UP      10.100.0.51/24

Esimerkissä verkkoliitännän nimi on ens192, liitäntä on aktiivinen ja sen IP-osoite on 10.100.0.51/24.

Jos nimi poikkeaa ens192:sta tai jos komento ei palauta verkkoasetuksia, sinun on määritettävä verkko manuaalisesti seuraavilla komennoilla:

1
2
ip address add IP_ADDRESS/SUBNET dev DEV_NAME
ip route add default via GATEWAY

Korvaa:

  • IP_ADDRESS koneen IP-osoitteella
  • SUBNET aliverkolla
  • DEV_NAME aiemmin selvitetyn verkkoliitännän nimi
  • GATEWAY verkon gateway -osoitteella
Esimerkki

PostgreSQL-solmun määrittäminen seuraavilla tiedoilla:

  • IP-osoite: 10.100.0.51
  • Aliverkko: /24 tai 255.255.255.0
  • Verkkoliitännän nimi: eth0
  • Verkon gateway: 10.100.0.254

Komennot ovat seuraavat:

1
2
ip address add 10.100.0.51/24 dev eth0
ip route add default via 10.100.0.254

Huomautus

Tämä verkkomääritys on väliaikainen, joten palvelimen jokainen uudelleenkäynnistys nollaa ip address- ja ip route-komennoilla tehdyt manuaaliset asetukset.
Pysyvä määritys tehdään PostgreSQL-klusterin määritystyökalulla.

Tämän verkkomäärityksen ansiosta voit kuitenkin nyt käyttää PostgreSQL-solmua SSH:n kautta.

Aikavyöhykkeen muuttaminen

Virtuaalisen appliance-laitteen aikavyöhykkeeksi on oletuksena asetettu Europe/Paris.

Vaihtaaksesi tämän aikavyöhykkeen hae ensin käytettävissä olevien aikavyöhykkeiden kirjoitusasu seuraavalla komennolla:

1
timedatectl list-timezones

Käytä sen jälkeen seuraavaa komentoriviä:

1
timedatectl set-timezone your_time_zone
Esimerkki

Aikavyöhykkeen asettamiseksi Lontooseen on suoritettava seuraava komento:

1
timedatectl set-timezone Europe/London

Tarkista palvelimen aikavyöhyke seuraavalla komentorivillä:

1
timedatectl

NTP-aikapalvelimen määritys

Vaara

On erittäin suositeltavaa määrittää aikapalvelin, jotta järjestelmäkello pysyy ajassa: mikä tahansa aikaero PostgreSQL-solmujen välillä voi aiheuttaa epävakautta tai jopa pysäyttää klusterin toiminnan.

Tarvittavat vaiheet on kuvattu NTP-määrityksen sivulla (määritys vastaa CyberElements Bastion -tuotteen Mediation Controller -palvelimien määritystä).

PKI:n luonti PostgreSQL-solmujen sertifikaattien luomiseksi

Tietoa

Tämä osio on valinnainen, jos sinulla on jo PKI, jolla olet voinut luoda edellytyksissä mainitut sertifikaatit.
Tässä osiossa esitellään PKI:n ja PostgreSQL-klusterin vaatimien sertifikaattien luonnin eri vaiheet. Huomaa, että niiden uusimista ei kuvata, koska sertifikaatin uusiminen tarkoittaa sen luomista uudelleen.

Ohita tämä vaihe

Huomio!

Kuvattu menettely on validoitu Debian 12 -koneella, jossa on openssl-paketti. Menettely onnistuu kuitenkin millä tahansa koneella, jossa on tuore OpenSSL-versio (validoitu versio on 3.0.17). Poikkeuksena Windows tai MacOS, joissa järjestelmäkomennot on sovitettava.

Muuttujien ja mukautusten määrittely

Tässä osiossa esitetään erilaisia komentoja ja määritystiedostoja, jotka käyttävät muokattavissa olevia muuttujia.
Alla oleva taulukko kokoaa kaikki arvot ja mahdollistaa niiden määrittelyn, jotta voit muokata niitä suoraan tällä sivulla näytettävissä komennoissa.

Arvo Muuttuja Määritelmä
PSQL_IP PostgreSQL-klusterin virtuaalinen IP-osoite.
PSQL_NAME PostgreSQL-klusterin virtuaaliseen IP-osoitteeseen liitetty lyhyt nimi (ei FQDN).
PSQL_1_IP PostgreSQL-klusterin solmun nro 1 IP-osoite.
PSQL_1_NAME PostgreSQL-klusterin solmun nro 1 lyhyt nimi (ei FQDN).
PSQL_2_IP PostgreSQL-klusterin solmun nro 2 IP-osoite.
PSQL_2_NAME PostgreSQL-klusterin solmun nro 2 lyhyt nimi (ei FQDN).
PSQL_3_IP PostgreSQL-klusterin solmun nro 3 IP-osoite.
PSQL_3_NAME PostgreSQL-klusterin solmun nro 3 lyhyt nimi (ei FQDN).
CA_ROOT_NAME PKI:n juurivarmentajalle (CA) annettu nimi.

Valmistelu

Seuraavat toimet tehdään uudessa hakemistossa, jotta kaikki uudet tiedostot kerätään yhteen hakemistoon. Mikä tahansa hakemisto käy, mutta sen käyttöä on rajoitettava niin paljon kuin mahdollista. Kirjaudu PostgreSQL-solmuun nro 1 root-käyttäjänä ja suorita seuraavat komennot:

1
2
3
mkdir /root/psql-certificates/
chmod 600 /root/psql-certificates/
cd /root/psql-certificates/

Juurivarmentajan luonti

Suorita seuraava komento luodaksesi uuden juuri-CA:n. Sinulta pyydetään salasanaa CA:n suojaamiseksi:

1
openssl req -x509 -newkey rsa:4096 -days 3650 -sha512 -keyout CA_ROOT_NAME.key -out CA_ROOT_NAME.crt -subj "/CN=CA_ROOT_NAME" -extensions v3_ca -addext "subjectKeyIdentifier=hash" -addext "authorityKeyIdentifier=keyid:always,issuer:always" -addext "basicConstraints=critical,CA:true" -addext "keyUsage=critical,digitalSignature,cRLSign,keyCertSign"

Korvaa CA_ROOT_NAME juuri-CA:n nimellä, jos et ole mukauttanut sitä täällä.

Sertifikaattien luonti

PostgreSQL-solmujen sertifikaattien luontiin tarvittavat komennot ovat seuraavat:

1
2
3
openssl genrsa -out PSQL_1_NAME.key 4096
openssl req -new -key PSQL_1_NAME.key -out PSQL_1_NAME.csr -subj "/CN=PSQL_1_NAME"
openssl x509 -req -in PSQL_1_NAME.csr -CA CA_ROOT_NAME.crt -CAkey CA_ROOT_NAME.key -CAcreateserial -out PSQL_1_NAME.crt -days 1825 -sha512 -extfile <(printf "subjectKeyIdentifier=hash\nauthorityKeyIdentifier=keyid,issuer\nbasicConstraints=critical,CA:FALSE\nkeyUsage=critical,digitalSignature\nextendedKeyUsage=serverAuth,clientAuth\nsubjectAltName=DNS:PSQL_NAME,DNS:PSQL_1_NAME,IP:PSQL_IP,IP:PSQL_1_IP")

Korvaa CA_ROOT_NAME, PSQL_IP, PSQL_NAME, PSQL_1_IP ja PSQL_1_NAME, jos et ole mukauttanut niitä täällä.

1
2
3
openssl genrsa -out PSQL_2_NAME.key 4096
openssl req -new -key PSQL_2_NAME.key -out PSQL_2_NAME.csr -subj "/CN=PSQL_2_NAME"
openssl x509 -req -in PSQL_2_NAME.csr -CA CA_ROOT_NAME.crt -CAkey CA_ROOT_NAME.key -CAcreateserial -out PSQL_2_NAME.crt -days 1825 -sha512 -extfile <(printf "subjectKeyIdentifier=hash\nauthorityKeyIdentifier=keyid,issuer\nbasicConstraints=critical,CA:FALSE\nkeyUsage=critical,digitalSignature\nextendedKeyUsage=serverAuth,clientAuth\nsubjectAltName=DNS:PSQL_NAME,DNS:PSQL_2_NAME,IP:PSQL_IP,IP:PSQL_2_IP")

Korvaa CA_ROOT_NAME, PSQL_IP, PSQL_NAME, PSQL_2_IP ja PSQL_2_NAME, jos et ole mukauttanut niitä täällä.

1
2
3
openssl genrsa -out PSQL_3_NAME.key 4096
openssl req -new -key PSQL_3_NAME.key -out PSQL_3_NAME.csr -subj "/CN=PSQL_3_NAME"
openssl x509 -req -in PSQL_3_NAME.csr -CA CA_ROOT_NAME.crt -CAkey CA_ROOT_NAME.key -CAcreateserial -out PSQL_3_NAME.crt -days 1825 -sha512 -extfile <(printf "subjectKeyIdentifier=hash\nauthorityKeyIdentifier=keyid,issuer\nbasicConstraints=critical,CA:FALSE\nkeyUsage=critical,digitalSignature\nextendedKeyUsage=serverAuth,clientAuth\nsubjectAltName=DNS:PSQL_NAME,DNS:PSQL_3_NAME,IP:PSQL_IP,IP:PSQL_3_IP")

Korvaa CA_ROOT_NAME, PSQL_IP, PSQL_NAME, PSQL_3_IP ja PSQL_3_NAME, jos et ole mukauttanut niitä täällä.

Ensimmäinen komento luo uuden avaimen, toinen luo sertifikaatin allekirjoituspyyntötiedoston CSR ja kolmas luo itse sertifikaatin.

Sertifikaatti on vielä muunnettava P12-muotoon, mikä edellyttää salasanan asettamista:

1
openssl pkcs12 -chain -CAfile CA_ROOT_NAME.crt -export -inkey PSQL_1_NAME.key -in PSQL_1_NAME.crt -out PSQL_1_NAME.p12
1
openssl pkcs12 -chain -CAfile CA_ROOT_NAME.crt -export -inkey PSQL_2_NAME.key -in PSQL_2_NAME.crt -out PSQL_2_NAME.p12
1
openssl pkcs12 -chain -CAfile CA_ROOT_NAME.crt -export -inkey PSQL_3_NAME.key -in PSQL_3_NAME.crt -out PSQL_3_NAME.p12

PostgreSQL-klusterin asennuksessa tarvittavat tiedostot löytyvät täältä (korvaa muuttujat CA_ROOT_NAME, PSQL_1_NAME, PSQL_2_NAME ja PSQL_3_NAME aiemmin valitsemillasi arvoilla):

  • /root/psql-certificates/CA_ROOT_NAME.crt: juuri-CA:n sertifikaatti
  • /root/psql-certificates/PSQL_1_NAME.p12: PostgreSQL-solmun nro 1 sertifikaatti
  • /root/psql-certificates/PSQL_2_NAME.p12: PostgreSQL-solmun nro 2 sertifikaatti
  • /root/psql-certificates/PSQL_3_NAME.p12: PostgreSQL-solmun nro 3 sertifikaatti

PostgreSQL-klusterin asennus

Tietoa

Seuraavat vaiheet on tehtävä kaikilla kolmella PostgreSQL-solmulla.

PostgreSQL-klusterin määrityksen valmistelu

On muodostettava SFTP- tai SCP-yhteys, jotta appliance-laitteelle voidaan lähettää:

  • Sen varmentajan sertifikaatti, joka on allekirjoittanut PostgreSQL-solmujen sertifikaatit
  • PostgreSQL-solmun sertifikaatti P12-muodossa

Huomaa, että SFTP- tai SCP-yhteyksiä ei voi muodostaa root-tilillä. Lisäksi tiedostot voi yksinkertaisesti sijoittaa hakemistoon /home/systancia/.

Nämä tiedostot on siirrettävä uuteen hakemistoon:

1
2
3
mkdir /etc/ssl/certs/cleanroom/
mv /home/systancia/PSQL_?_NAME.p12 /etc/ssl/certs/cleanroom/
mv /home/systancia/ROOT_CA_NAME.crt /etc/ssl/certs/cleanroom/

Korvaa:

  • PSQL_?_NAME sen sertifikaatin nimellä, joka on tarkoitettu asennettavana olevalle PostgreSQL-solmulle
  • ROOT_CA_NAME juurivarmentajan sertifikaatin nimellä
1
2
3
mkdir /etc/ssl/certs/cleanroom/
cp /root/psql-certificates/PSQL_1_NAME.p12 /etc/ssl/certs/cleanroom/
cp /root/psql-certificates/CA_ROOT_NAME.crt /etc/ssl/certs/cleanroom/

Yllä olevat komennot on täytynyt mukauttaa mukautusasetusten mukaisesti.

1
2
3
mkdir /etc/ssl/certs/cleanroom/
mv /home/systancia/PSQL_2_NAME.p12 /etc/ssl/certs/cleanroom/
mv /home/systancia/CA_ROOT_NAME.crt /etc/ssl/certs/cleanroom/

Yllä olevat komennot on täytynyt mukauttaa mukautusasetusten mukaisesti.

1
2
3
mkdir /etc/ssl/certs/cleanroom/
mv /home/systancia/PSQL_3_NAME.p12 /etc/ssl/certs/cleanroom/
mv /home/systancia/CA_ROOT_NAME.crt /etc/ssl/certs/cleanroom/

Yllä olevat komennot on täytynyt mukauttaa mukautusasetusten mukaisesti.

PostgreSQL-solmun määritys

Solmun määrityksen alustamisen aloittamiseksi on suoritettava seuraavat komennot:

1
2
cd /etc/ssl/certs/cleanroom/
ConfigureSystanciaVault.py

Toinen komento käynnistää työkalun, joka vaatii seuraavat tiedot:

  1. Paikallisten käyttäjien root ja systancia uudet salasanat
  2. PostgreSQL-solmun nimi (ei FQDN)
  3. PostgreSQL-solmun IP-osoite, sen verkkoliitännän nimi, käytettävä verkon oletusarvoinen gateway sekä DNS-palvelimet ja DNS-pääte
  4. PostgreSQL:n versio; suosittelemme versiota 15
  5. PostgreSQL-klusterin käyttöportti; suosittelemme porttia 5432
  6. Replikointiin ja pg_rewind-komentoon käytettävän PostgreSQL-tilin salasana
  7. Toisen PostgreSQL-solmun nimi ja IP-osoite
  8. Viimeisen PostgreSQL-solmun nimi ja IP-osoite
  9. PostgreSQL-klusterin virtuaalinen IP-osoite
  10. Niiden CyberElements Bastion -tuotteen Edge Gateway -palvelimien tai muiden koneiden IP-osoitteet (pilkuin eroteltuina), joiden on muodostettava yhteys klusteriin
  11. PostgreSQL-käyttäjätilin nimi ja salasana
  12. IP-osoitteet tai verkot (pilkuin eroteltuina), joilla on oikeus muodostaa SSH-yhteys PostgreSQL-solmuihin
  13. PostgreSQL-solmun sertifikaattitiedot (solmun sertifikaatti P12-muodossa + juuri-CA:n sertifikaatti)

Näiden tietojen syöttämisen jälkeen näytetään ennen vahvistusta yhteenveto kaikista antamistasi tiedoista.
Annettujen tietojen vahvistamisen jälkeen näkyviin tulee /etc/ssh/sshd_config-tiedoston muutoksia koskeva ilmoitus. Valitse oletusvaihtoehto keep the local version currently installed.

Määrityksen käyttöön ottamiseksi tarvitaan uudelleenkäynnistys:

1
reboot
Vinkki PostgreSQL-solmujen nro 2 ja nro 3 asennuksen nopeuttamiseen

PostgreSQL-solmun nro 1 asennuksen jälkeen voit hakea sen asennuksessa käytetyt määritysasetukset /etc/cleanroom-vault.ini-tiedostosta.

Esimerkki /etc/cleanroom-vault.ini-tiedostosta

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[local]
name = PSQL-1
ip = 172.16.10.51

[cluster]
server1 = PSQL-2,172.16.10.52
server2 = PSQL-3,172.16.10.53

[ssl]
ca = MY-ROOT-CA.crt
client_cert = /etc/cleanroomvault.crt
client_key = /etc/cleanroomvault.key
peer_cert = /etc/cleanroomvault.crt
peer_key = /etc/cleanroomvault.key

[postgresql]
port = 5432
cluster = cleanroomvault5
version = 15

[patroni]
api_port = 8008
replication_password = R3pl1cationP@SSw0rd
rewind_password = Rew1ndP@SSw0rd

[vip]
interface = ens192
ip = 172.16.10.50

[cleanroom]
gw_ips = 172.16.10.10, 172.16.10.11
db_user = DbUser
db_password = DbP@SSw0rd

[networking]
interface = ens192
ip = 172.16.10.51/24
gateway = 172.16.10.254
dns = 172.16.10.100
dnssuffix = domain.local

[ssh]
allow = 10.0.20.0/24

Riittää, että muutat korostetut rivit asennettavana olevan PostgreSQL-solmun arvoilla PostgreSQL-solmusta nro 1 haetun tiedoston pohjalta.

Vaara

Jos käytät esimerkkitiedostoa uudelleen, sinun on muutettava kaikki seuraavat korostetut arvot ympäristösi mukaisiksi:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[local]
name = PSQL-1
ip = 172.16.10.51

[cluster]
server1 = PSQL-2,172.16.10.52
server2 = PSQL-3,172.16.10.53

[ssl]
ca = MY-ROOT-CA.crt
client_cert = /etc/cleanroomvault.crt
client_key = /etc/cleanroomvault.key
peer_cert = /etc/cleanroomvault.crt
peer_key = /etc/cleanroomvault.key

[postgresql]
port = 5432
cluster = cleanroomvault5
version = 15

[patroni]
api_port = 8008
replication_password = R3pl1cationP@SSw0rd
rewind_password = Rew1ndP@SSw0rd

[vip]
interface = ens192
ip = 172.16.10.50

[cleanroom]
gw_ips = 172.16.10.10, 172.16.10.11
db_user = DbUser
db_password = DbP@SSw0rd

[networking]
interface = ens192
ip = 172.16.10.51/24
gateway = 172.16.10.254
dns = 172.16.10.100
dnssuffix = domain.local

[ssh]
allow = 10.0.20.0/24

patronictl-komennon lisämääritykset

Jotta PostgreSQL-klusterin hallintakomentoja voi käyttää patronictl-komennolla, PostgreSQL-solmulla on vielä suoritettava joitakin komentoja root-käyttäjänä:

1
2
3
4
sed -i "s/2380/2380, 8008/g" /etc/nftables.conf
systemctl reload nftables
cp /etc/patroni/ca.crt /usr/local/share/ca-certificates/PSQL-CA.crt
update-ca-certificates

etcd-palvelun lisämääritykset

Jos haluat ottaa etcd-tietokannan automaattisen tiivistyksen ja eheytyksen käyttöön, suorita seuraavat komennot root-käyttäjänä PostgreSQL-solmulla:

1
2
3
4
5
6
7
apt update
apt install etcd-client
echo -e 'ETCD_AUTO_COMPACTION_MODE="periodic"\nETCD_AUTO_COMPACTION_RETENTION="1"' >> /etc/default/etcd
systemctl restart etcd
echo -e '#!/bin/bash\n\nsource /etc/default/etcd\netcdctl --endpoints=${ETCD_ADVERTISE_CLIENT_URLS}  --cert=${ETCD_CERT_FILE} --key=${ETCD_KEY_FILE} "$@"' > /usr/bin/clr_etcdctl
chmod a+x /usr/bin/clr_etcdctl
echo '0 3 * * * root clr_etcdctl defrag' > /etc/cron.d/systancia-db

CyberElements Bastion -tuotteen asennuksessa vaadittavan default-tietokannan luonti

CyberElements Bastion -tuotteen asennuksessa sinun on ensin luotava tietokanta nimeltä default.
Täytä tätä varten seuraava taulukko mukauttaaksesi komennon, joka sinun on suoritettava jollakin PostgreSQL-klusterin solmulla:

Arvo Muuttuja Määritelmä
PSQL_VIP PostgreSQL-klusterin virtuaalinen IP-osoite.
DB_USER Tietokannan käyttäjänimi, joka annettiin PostgreSQL-solmun määrityksessä

Komento, joka suoritetaan jollakin PostgreSQL-klusterin solmulla:

1
createdb -h PSQL_VIP -U DB_USER default