Si të konfiguroni disponueshmërinë e lartë Nginx me Pacemaker, Corosync dhe Crmsh në Ubuntu 16.04


Në këtë tutorial, unë do t'ju tregoj hap pas hapi se si të krijoni një server të uebit Nginx të grupuar me disponueshmëri të lartë me Pacemaker, Corosync dhe Crmsh. Ne do të krijojmë një server në internet Cluster-Pasiv ose Failover-Cluster Nginx duke përdorur Pacemaker në Ubuntu 16.04.

Pacemaker është një softuer i menaxhimit të grupeve me burim të hapur që arrin disponueshmërinë maksimale të lartë të shërbimeve tuaja. Është një menaxher i avancuar dhe i shkallëzuar i grupeve HA i zhvilluar nga ClusterLabs që nga viti 2007.

The Corosync Cluster Engine është një projekt me burim të hapur që rrjedh nga projekti OpenAIS në 2008 dhe i lëshuar nën licencën BSD. Është një sistem komunikimi në grup me veçori shtesë për zbatimin e Disponueshmërisë së Lartë brenda aplikacioneve.

Ekzistojnë disa aplikacione të disponueshme për ndërfaqen Pacemaker dhe Crmsh është një prej tyre. Është një ndërfaqe e linjës së komandës së stimuluesit kardiak për të menaxhuar grupin e disponueshmërisë së lartë të stimuluesit kardiak. Crmsh është shkruar në python. Ne mund të krijojmë, konfigurojmë dhe zgjidhim problemet e stivës së stimuluesit HA me mjetin e linjës së komandës Crmsh.

Kushtet paraprake

  • Tre serverë Ubuntu 16.04
    • web01       10.0.15.11
    • web02       10.0.15.12
    • web03       10.0.15.13

    Çfarë do të bëjmë?

    1. Hartëzimi i skedarit të hosteve.
    2. Instaloni dhe konfiguroni Nginx.
    3. Instaloni Pacemaker, Corosync dhe Crmsh.
    4. Konfiguro tastin Corosync.
    5. Filloni të gjitha shërbimet.
    6. Krijoni dhe konfiguroni një grup.
    7. Testimi.

    Hapi 1 - Hartimi i skedarit të hosteve

    Shënim:
    Ekzekutoni hapin 1 - 3 në të tre serverët web01, web02, web03.

    Në këtë tutorial, unë do të përdor 3 serverë Ubuntu 16.04 dhe secili prej tyre ka një emër unik pritës: web01, web02 dhe web03. Çdo server mund të lidhet me serverët e tjerë me emrin e hostit të serverit.

    Për ta arritur këtë, modifikoni skedarin/etc/hosts në të gjithë serverët me vim.

    vim /etc/hosts

    Ngjitni konfigurimin /etc/hosts më poshtë.

    10.0.15.11      web01
    10.0.15.12      web02
    10.0.15.13      web03
    10.0.15.15      ha-web.co

    Ruani skedarin dhe dilni nga vim.

    Më pas, testoni të gjithë serverët duke pinguar serverët e tjerë përmes çdo emri të hostit.

    ping -c 3 web01
    ping -c 3 web02
    ping -c 3 web03

    Hapi 2 - Instaloni dhe konfiguroni Nginx

    Tani fillojmë të krijojmë konfigurimin e disponueshmërisë së lartë të serverit të internetit Nginx duke krijuar grupin Failover me Pacemaker. Së pari duhet të instalojmë Nginx në secilën prej nyjeve të serverit.

    Instaloni Nginx me komandën apt më poshtë.

    apt install -y nginx

    Kur të përfundojë instalimi, zëvendësoni faqen e paracaktuar të nginx me një faqe unike në secilin server duke ekzekutuar komandat më poshtë, në mënyrë që më vonë të mund të identifikojmë se cili server ka dorëzuar një faqe.

    #Run Command on 'web01'
    echo '<h1>web01 - hakase-labs</h1>' > /var/www/html/index.html

    #Run Command on 'web02'
    echo '<h1>web02 - hakase-labs</h1>' > /var/www/html/index.html

    #Run Command on 'web03'
    echo '<h1>web03 - hakase-labs</h1>' > /var/www/html/index.html

    Tani ndaloni serverin në internet.

    systemctl stop nginx

    Instalimi dhe konfigurimi i Nginx ka përfunduar.

    Hapi 3 - Instaloni Pacemaker, Corosync dhe Crmsh

    Pacemaker është një aplikacion i menaxhimit të grupeve me burim të hapur. Corosync është një Cluster Engine për Pacemaker, dhe Crmsh është një mjet i bazuar në python për të menaxhuar një grup stimulues stimulues. Të gjitha këto aplikacione janë të disponueshme në depon e Uubuntu.

    Instaloni Pacemaker, Corosync dhe crmsh me komandën apt më poshtë.

    apt install -y pacemaker corosync crmsh

    Pas instalimit, të gjitha këto shërbime funksionojnë automatikisht në sistem. Ndaloni ato me komandat systemctl më poshtë.

    systemctl stop corosync
    systemctl stop pacemaker

    Është instaluar grupi i softuerit që ofron disponueshmëri të lartë për Nginx.

    Hapi 4 - Konfiguro Corosync

    Shënim:
    Ekzekutoni hapin 4 vetëm në serverin web01.

    Meqenëse nuk po përdornim pcsd për Ubuntu, ne duhet të konfigurojmë Corosync manualisht. Ne do të gjenerojmë çelësin Corosync për vërtetimin e grupit dhe do të krijojmë një skedar të ri konfigurimi Corosync në serverin web01, më pas do të kopjojmë çelësin dhe konfigurimin në serverët e tjerë web02 dhe web03.

    Përpara se të gjenerojmë çelësin Corosync, duhet të instalojmë paketën e re haveged. Përdoret për marrjen e numrave më të mirë të rastit për gjenerimin e çelësave Corosync.

    Instaloni haveged nga depoja me komandën apt.

    apt install -y haveged

    Tani krijoni një çelës të ri Corosync me komandën më poshtë.

    corosync-keygen

    Kur të përfundojë gjenerimi i çelësit, mund të shihni çelësin e ri të authkeys në drejtorinë /etc/corosync/.

    ls -lah /etc/corosync/

    Më pas, shkoni te drejtoria /etc/corosync dhe bëni kopje rezervë të skedarit të konfigurimit të paracaktuar corosync.conf.

    cd /etc/corosync/
    mv corosync.conf corosync.conf.bekup

    Më pas krijoni një skedar të ri konfigurimi corosync.conf me vim.

    vim corosync.conf

    Ngjitni konfigurimin më poshtë në atë skedar.

    # Totem Protocol Configuration
    totem {
      version: 2
      cluster_name: hakase-cluster
      transport: udpu

    # Interface configuration for Corosync
      interface {
        ringnumber: 0
        bindnetaddr: 10.0.15.0
        broadcast: yes
        mcastport: 5407
      }
    }

    # Nodelist - Server List
    nodelist {
      node {
        ring0_addr: web01
      }
      node {
        ring0_addr: web02
      }
      node {
        ring0_addr: web03
      }
    }

    # Quorum configuration
    quorum {
      provider: corosync_votequorum
    }

    # Corosync Log configuration
    logging {
      to_logfile: yes
      logfile: /var/log/corosync/corosync.log
      to_syslog: yes
      timestamp: on
    }

    service {
      name: pacemaker
      ver: 0
    }

    Ruani skedarin dhe dilni nga redaktori.

    Më pas, kopjoni çelësin e vërtetimit dhe skedarin e konfigurimit nga serveri web01 në serverin web02 dhe web03.

    scp /etc/corosync/* :/etc/corosync/

    Kur gjithçka të ketë përfunduar, shkoni te serverët web02 dhe web03, më pas kontrolloni skedarët.

    ssh 
    cd /etc/corosync/
    ls -lah

    Konfigurimi i Corosync ka përfunduar.

    Hapi 5 - Filloni të gjitha shërbimet e grupimit

    Shënim:
    Ekzekutoni hapin 5 në të gjithë serverët.

    Nisni grumbullin e softuerit të grupit HA, stimuluesin kardiak dhe korosinkronizimin, në të gjithë serverët. Pastaj aktivizoni që të fillojë automatikisht në kohën e nisjes.

    Nisni Corosync dhe shtoni atë për të filluar automatikisht në nisje.

    systemctl start corosync
    systemctl enable corosync

    Tani nisni stimuluesin kardiak dhe aktivizoni që të fillojë në nisje.

    systemctl start pacemaker
    update-rc.d pacemaker defaults 20 01
    systemctl enable pacemaker

    Të gjitha shërbimet janë nisur, kontrolloni të gjitha nyjet dhe sigurohuni që statusi i serverit të jetë Online në të gjitha.

    crm status

    Ose mund të kontrolloni statusin duke kontrolluar anëtarët e Corosync me komandën corosync-cmapctl më poshtë.

    corosync-cmapctl | grep members

    Do të shihni të gjitha adresat IP të serverit.

    Hapi 6 - Krijoni dhe konfiguroni grupin

    SHËNIM:
    Ekzekutoni hapin 6 vetëm në serverin web01

    Në këtë hap, ne do të konfigurojmë grupin Nginx Active-Passive duke përdorur veglën e linjës së komandës crmsh. Meqenëse nuk përdorim një pajisje STONITH, duam të çaktivizojmë STONITH dhe të injorojmë politikën e Kuorumit në grupin tonë.

    Ekzekutoni komandat crm më poshtë për të çaktivizuar STONITH dhe Injoroni politikën e Kuorumit.

    crm configure property stonith-enabled=false
    crm configure property no-quorum-policy=ignore

    Tani kontrolloni statusin e STONITH dhe politikën e kuorumit me komandën crm më poshtë.

    crm configure show

    Do ta shihni rezultatin si më poshtë.

    Më pas, ne duhet të krijojmë disa burime të reja për grupin. Pacemaker mbështet llojet e mëposhtme të agjentëve të burimeve (RA).

    • LSB (Linux Standard Based) - Ofrohet nga distribucioni Linux. p.sh.: /etc/init.d/skripti i shërbimit.
    • OCF (Open Cluster Framework) - Një grup mjetesh për llogaritjen e grupeve. Projekti është pjesë e Fondacionit Linux.

    Për serverin tonë të internetit Nginx HA, duhet të krijojmë dy burime OCF: virtual_ip për IP-në lundruese dhe serverin në internet për shërbimin nginx.

    Krijo një burim të ri virtual_ip për konfigurimin e IP-së lundruese me komandën crm më poshtë.

    sudo crm configure primitive virtual_ip \
    ocf:heartbeat:IPaddr2 params ip="10.0.15.15" \
    cidr_netmask="32" op monitor interval="10s" \
    meta migration-threshold="10"

    Dhe për uebserverin nginx, krijoni burimin me komandën më poshtë.

    sudo crm configure primitive webserver \
    ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf \
    op start timeout="40s" interval="0" \
    op stop timeout="60s" interval="0" \
    op monitor interval="10s" timeout="60s" \
    meta migration-threshold="10"

    Kur kjo të bëhet, kontrolloni burimet e reja virtual_ip dhe serverin në internet me komandën më poshtë. Sigurohuni që të gjitha burimet të kenë statusin e nisur.

    crm resource status

    Së fundi, duhet të shtojmë një grup për konfigurimin e ri të shërbimit IP Failover. Ne duam të migrojmë shërbimin Nginx në një burim webserver me një IP lundrues në një burim virtual_ip.

    Ne krijuam tashmë IP-në Floating dhe Shërbimin, tani shtoni ato burime në një grup të ri të quajtur hakase_balancing me komandën më poshtë. Ju mund të zgjidhni emrin e grupit tuaj natyrisht këtu, thjesht sigurohuni që ta zëvendësoni emrin kudo që të përdoret.

    sudo crm configure group hakase_balancing virtual_ip webserver

    Është përcaktuar një grup i ri burimesh me emrin hakase_balancing. Mund ta kontrolloni me komandën e mëposhtme.

    crm resource show

    Ju do të merrni një grup të quajtur hakase_balancing me anëtarë virtual_ip dhe burime të serverit në internet.

    Konfigurimi i grupit ka përfunduar.

    Hapi 7 - Testimi

    Testimi i statusit të nyjës dhe statusit të grupimit.

    crm status

    Weve 3 nyje me status Online.

    Ne kemi një grup burimesh të quajtur hakase_balancing, dhe tani funksionon në nyjen web01.

    Testimi i serverit të internetit Nginx nga një shfletues në internet. Vizitoni adresën IP lundruese, emri i serverit tim të testimit është - ha-web.co. Përdorni emrin që keni zgjedhur për serverin tuaj këtu.

    Të gjitha burimet janë në web01 node.

    Testimi i grupit aktiv-pasiv ose i dështimit

    Ndaloni grupin në serverin web01 duke ekzekutuar komandën më poshtë në nyjen web01.

    crm cluster stop

    Do të merrni rezultatin INFO: Shërbimet e grupit u ndaluan.

    Tani identifikohuni në nyjen web02 dhe kontrolloni statusin e grupit.

    crm status


    Tani ju merrni rezultatin që nyja web01 është Offline dhe burimet e virtual_ip dhe serverit të uebit kalojnë në nyjen web02.

    Kur të vizitoni përsëri IP-në lundruese ha-web.co, do të merrni faqen web02.

    Disponueshmëria e lartë Nginx me Pacemaker, Corosync dhe Crmsh në Ubuntu 16.04 është instaluar dhe testuar me sukses.

    Referenca

    • http://linuxlasse.net/linux/howtos/Pacemaker_and_Corosync_HA_-_2_Node_setup