Pacemaker klastr se dvema linkami

Jan Kasprzak kas na fi.muni.cz
Úterý Srpen 4 17:27:39 CEST 2020


	Dobry den,

mam tady historickou instalaci klastru s heartbeatem - za ta leta funguje
a vim co od ni cekat, no ale HB uz se nevyviji, tak delam pokusy
s pacemakerem a corosyncem, momentalne na CentOSu 8.

Chtel bych mit dvouuzlovy klastr nezavisly na vypadku switche mezi temi
uzly. V HB jsem to resil tak, ze uzly byly propojene vice nezavislymi
linkami, pripadne jednou linkou naprimo krizenym kabelem. Snazim se toto
nasimulovat v pcs - vypada to nejak takto:

===================================
# pcs cluster corosync
totem {
    version: 2
    cluster_name: yklastr
    transport: knet
    crypto_cipher: aes256
    crypto_hash: sha256
}

nodelist {
    node {
        name: pcs1.yenya.net
        nodeid: 1
        ring1_addr: 10.0.0.147
        ring2_addr: 172.26.1.147
    }

    node {
        name: pcs2.yenya.net
        nodeid: 2
        ring1_addr: 10.0.0.208
        ring2_addr: 172.26.1.208
    }
}

quorum {
    provider: corosync_votequorum
    two_node: 1
}

logging {
    to_logfile: yes
    logfile: /var/log/cluster/corosync.log
    to_syslog: yes
    timestamp: on
}
===================================

Klastr je zda se spokojeny:

===================================
# pcs cluster status
Cluster Status:
 Cluster Summary:
   * Stack: corosync
   * Current DC: pcs1.yenya.net (version 2.0.3-5.el8_2.1-4b1f869f0f) - partition with quorum
   * Last updated: Tue Aug  4 17:05:51 2020
   * Last change:  Tue Aug  4 16:00:56 2020 by hacluster via crmd on pcs1.yenya.net
   * 2 nodes configured
   * 0 resource instances configured
 Node List:
   * Online: [ pcs1.yenya.net pcs2.yenya.net ]

PCSD Status:
  pcs1.yenya.net: Online
  pcs2.yenya.net: Online
===================================

A ted bych si chtel nasimulovat vypadek jedne linky.

Pokus 1: odriznu sitovy provoz jedne linky pres iptables:

pcs2# iptables -I INPUT -i eth1 -j DROP
pcs2# iptables -I OUTPUT -o eth1 -j DROP

Tohle se projevi tak, ze "pcs cluster status" si porad mysli
ze je vse v poradku, akorat ve /var/log/cluster/corosync.log pribudou
radky o vypadku jedne z linek, a "best link" je ta druha.
Toto je v zasade to co chci, nicmene bylo by pekne, aby v nejakem
prikazu bylo videt, ze neni vsechno uplne v poradku.

DOTAZ 1: ve kterem prikazu by byl videt vypadek jedne z linek?

Pokus 2: misto zariznuti provozu pres iptables shodim cely interface:

pcs2# ifdown eth1

Tohle se projevi tak, ze pcs1 nejprve zaznamena vypadek linky
a "best link" je ta druha. V tuto chvili zacne corosync na pcs2
zrat temer 100 % casu, "pcs status" na pcs1 pise ze pcs2 je offline,
"pcs status" na pcs2 trva strasne dlouho a pak napise, ze oba uzly jsou OK.
corosync ma zreme real-time prioritu, takze odezva na uzlu pcs2 je pomala.
V corosync.log na pcs1 se po chvili objevi "host 2 has no active links".
V tcpdumpu na zivem interface je videt jen UDP komunikace pcs1->pcs2
(na obou strojich).

DOTAZ 2: proc v tomto pripade corosync nefunguje normalne po zbyvajici lince?

Diky,

-Y.



-- 
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| http://www.fi.muni.cz/~kas/                         GPG: 4096R/A45477D5 |
IORING_OP_NOP ... the benefits of doing nothing asynchronously are minimal,
but sometimes a placeholder is useful.             --Jonathan Corbet at LWN


Další informace o konferenci Linux