čtvrtek 30. dubna 2020

Upgrade firmware on PC Engines APU.3C4

Nedávno jsem psal článek, na root.cz, jak aktualizovat PC Engines BIOS pomoci pfSense a flashrom. Opakovani je matka moudrosti :-) Včera vyšel nový BIOS Mainline releases v4.11.0.6 a tak jsem jej chtěl vyzkoušet na desce PC Engines/APU.3C4. Od výrobce tam je 4.0.7 z 2017XXXX. Doposud jsem aktualizoval jen verze Legacy releases v4.0.30. Zde si poznamenám postup s updatem na aktuální Mainline releases.

Nainstalujeme si aktualizační nástroj.

pkg install flashrom

Zjistíme si generaci desky

dmidecode | grep 'Product Name' | uniq 
Product Name: APU3

Zjistíme si verzi aktuálního BIOSu.

dmidecode | grep 'Version'
Version: 4.0.7
Version: AMD GX-412TC SOC

Provedeme stažení správneho archivu, ověříme kontrolní součet a aktualizujeme, nakonec reboot.

cd /tmp
fetch https://3mdeb.com/open-source-firmware/pcengines/apu3/apu3_v4.11.0.6.zip
apu3_v4.11.0.6.zip                                     647 kB 1476 kBps    00s
 

unzip apu3_v4.11.0.6.zip
Archive:  apu3_v4.11.0.6.zip
 extracting: apu3_v4.11.0.6.rom 
 extracting: apu3_v4.11.0.6.SHA256.sig 
 extracting: apu3_v4.11.0.6.SHA256


cat apu3_v4.11.0.6.SHA256 a093e61db53aa4b5897c0f96f8e2df910db063e5faa77c941c64dd6d4f9a0153 apu3_v4.11.0.6.rom

openssl sha256 apu3_v4.11.0.6.rom
SHA256(apu3_v4.11.0.6.rom)= a093e61db53aa4b5897c0f96f8e2df910db063e5faa77c941c64dd6d4f9a0153
 


flashrom -w apu3_v4.11.0.6.rom -p internal:boardmismatch=force
flashrom v1.1 on FreeBSD 11.3-STABLE (amd64)
flashrom is free software, get the source code at https://flashrom.org Using clock_gettime for delay loops (clk_id: 4, resolution: 2ns).
coreboot table found at 0xdffae000.
Found chipset "AMD FCH". Enabling flash write... OK.
Found Winbond flash chip "W25Q64.V" (8192 kB, SPI) mapped at physical address 0x00000000ff800000.
This coreboot image (PC Engines:apu3) does not appear to be correct for the detected mainboard (PC Engines:PCEngines apu3).
Proceeding anyway because user forced us to.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

reboot

pátek 17. ledna 2020

Zabbix HA - s MariaDB s DRBD



 Již mnoho let jsem chtěl vyzkoušet DRBD pro synchronizaci raw device (/dev/sdb) na druhý server. Něco jako RAID-1 po síti. V době mého zájmu zájmu o DRBD bylo vše mnohem složitější a bylo nutno kompilovat modul do kernelu. To je dnes mnohem snažší. Za DRBD® stojí společnost , LINBIT®, která zajišťuje vývoj, placenou podporua zároveň DRBD pouzívá ve svých storrage technologiích a produktech.


Využití DRBD pro HA je hnedle několik. Já jej použiji pro synchronizaci disku na kterém běží MariaDB databáze, která je využívána pro monitorovací systém Zabbix.

Pro otestování jsem si vybral Linux Distribuci CentOS 7.7 do níž je přidán repository ELRepo.

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org --httpproxy=http://192.168.42.1:3128
yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm


yum repolist | grep ELRepo
elrepo                      ELRepo.org Community Enterprise Linux Repository


yum update
yum install -y kmod-drbd90 drbd90-utils

lsmod | grep -i drbd
modprobe drbd
echo drbd > /etc/modules-load.d/drbd.conf


tail -f /var/log/messages
Jan  7 08:26:36 zbx-02  kernel: drbd: initialized. Version: 9.0.20-1 (api:2/proto:86-115)
Jan  7 08:26:36 zbx-02  kernel: drbd: GIT-hash: 7dce3c8be99f4912f1490f9bb37f5aff6c873335 build by mockbuild@, 2019-10-17 20:27:56
Jan  7 08:26:36 zbx-02  kernel: drbd: registered as block device major 147


cat /proc/drbd
version: 9.0.20-1 (api:2/proto:86-115)
GIT-hash: 7dce3c8be99f4912f1490f9bb37f5aff6c873335 build by mockbuild@, 2019-10-17 20:27:56

Hlavní konfigurace DRBD se provádí zde:

vim /etc/drbd.d/global_common.conf
global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}


protocol A: Asynchronous replication protocol; it’s most often used in long distance replication scenarios.
protocol B: Semi-synchronous replication protocol aka Memory synchronous protocol.
protocol C: commonly used for nodes in short distanced networks; it’s by far, the most commonly used replication protocol in DRBD setups.

Zdroje DRBD se defunuji naříklad takto:

vim /etc/drbd.d/mariadb_data.res

resource zbxdb {
        on zbx-01 {
         device /dev/drbd0;
               disk /dev/sdb;
            meta-disk internal;   
                address 192.168.42.10:7789;
        }
        on zbx-02 {
        device /dev/drbd0;
            disk /dev/sdb;
            meta-disk internal;
                address 192.168.42.20:7789;
        }
}


Vytvoření zdroje:

drbdadm create-md zbxdb
initializing activity log
initializing bitmap (160 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.



Nahození synchronizace:

drbdadm up zbxdb


Nastavení primátního sync media:

[root@zbx-01 ~]# drbdadm primary --force zbxdb

Status synchronizace zjistíme takto:

[root@zbx-01 ~]# drbdadm status zbxdb
zbxdb role:Primary
  disk:UpToDate
  zbx-02 role:Secondary
    peer-disk:UpToDate

[root@zbx-02 ~]# drbdadm status zbxdb
zbxdb role:Secondary
  disk:UpToDate
  zbx-01 role:Primary
    peer-disk:UpToDate


Vytvoříme mount point a naformatujeme disk např. pomocí xfs.

mkdir -p /data/mariadb
mkfs.xfs /dev/drbd0
mount -t xfs -o noatime,nodiratime,attr2 /dev/drbd0 /data/mariadb

Veškeré HA služby svěřím aplikacím Corosync a Pacemaker z projektu ClusterLabs. Společnost LINBIT přispívá do projektu Pacemaker a tím zajišťuje podporu pro správné volání drbadm. Nadefinováním zdroju clusteru docilim toho, že Zabbix server beží jen na jednim nodu a zároveň i databáze jejíz data (disk) se synchroniyuje na druhý node.


Tato testovací instalace bude v budoucnosti reinstalována na CentOS 8 se Zabbix 4.4, protože novější Zabbix umí monitorovat raw device a to v tomto případě je velmi zajímavé, protože na node2 pokud není /dev/drbd0 namontován o disku nic nevime.

Monitoring Clusteru se dá snadno realizovat z těchto zdrojů.

https://share.zabbix.com/cat-server-hardware/other/template-drbd
https://github.com/VadimIpatov/zbx_pacemaker
https://github.com/cnshawncao/zabbix-module-mysql

Dále je se třeba zaměřit na performace a patřičně upravit a vylepšit konfiguraci DRBD.

https://docs.linbit.com/docs/users-guide-9.0/#p-performance