GNU/Linux >> Linux Esercitazione >  >> Linux

Semplici modi per eseguire un rilevamento di servizi in Linux

Il rilevamento del servizio non può ottenere una definizione corretta senza il riconoscimento di una rete di computer esistente. Una rete di computer imposta i protocolli di comunicazione necessari affinché i dispositivi di rete condividano le risorse disponibili attraverso i suoi nodi di rete. Questa condivisione di risorse coinvolge sia i dispositivi di rete che i servizi predefiniti su quella rete.

La soluzione alternativa al rilevamento o rilevamento automatico di questi dispositivi e servizi di rete in una rete di computer è una definizione praticabile di rilevamento del servizio. Affinché il rilevamento del servizio in una rete di computer configurata sia completo, sarà necessaria l'assistenza di un protocollo di rete chiamato Service Discovery Protocol (SDP). Con questi protocolli, gli utenti e gli amministratori di rete non devono fare affidamento sulle loro competenze di configurazione di rete per far funzionare le cose.

Poiché il rilevamento del servizio comunica con agenti software su una rete di computer, i suoi protocolli di comunicazione devono aderire a un linguaggio di rete comune per impedire l'intervento continuo dell'utente ogni volta che è necessaria l'esecuzione di un passaggio critico.

Concettualizzazione del rilevamento dei servizi in un ambiente di produzione

Tradizionalmente, lo sviluppo delle applicazioni ha adottato un approccio monolitico. Questo approccio è stato successivamente rifattorizzato facendo esistere una singola applicazione come piccoli pezzi sincronizzati che lavorano verso un obiettivo comune. Questo concetto definisce l'utilità dei microservizi in base ai quali componenti separati lavorano verso un unico obiettivo dell'applicazione. Le applicazioni SaaS o aziendali sono una preferenza per questo approccio allo sviluppo di applicazioni.

Un'app definita da piccoli componenti semplifica l'eliminazione dei bug e l'identificazione e la sostituzione di un componente dell'app che non è completamente funzionante. Poiché questi componenti sono distruttibili, la distribuzione di tali componenti in un ambiente di produzione li collega a un servizio di rete che si identifica con le posizioni dei componenti e altri servizi ad essi collegati.

Questa configurazione automatica delle istanze del servizio sui componenti dell'app di produzione scompone la definizione di rilevamento del servizio.

Strumenti di rilevamento dei servizi open source popolari per Linux

L'evoluzione dell'architettura dei microservizi e il suo contributo allo sviluppo di app moderne ha reso la scoperta dei servizi un must. Quando viene distribuito un nuovo componente dell'app, il rilevamento del servizio elimina qualsiasi latenza tra l'app e altri endpoint del servizio. Se consideri la facilitazione di alcune funzionalità di rilevamento dei servizi tramite i microservizi, dovresti conoscere questi strumenti open source.

Console

Oltre a soddisfare l'obiettivo di rilevamento del servizio, Consul è uno strumento efficace per il monitoraggio e la configurazione delle impostazioni di produzione di una rete. Crea un archivio dati peer-to-peer e cluster dinamici attraverso la libreria di Serf. Per questo motivo, questo strumento di rilevamento dei servizi è altamente distribuito.

Consul si presenta come un archivio chiave-valore per configurare e gestire un ambiente di produzione. Serf esiste come protocollo di gossip che gestisce efficacemente cose come il rilevamento degli errori nei cluster creati. Un protocollo di consenso gestisce la coerenza del sistema in questo ambiente di produzione tramite Raft.

Caratteristiche principali di Console

  • A condizione che esista un'interfaccia dell'app come MySQL, DNS o HTTP; i servizi possono registrarsi facilmente e automaticamente. È anche facile rilevare e incapsulare altri servizi esterni necessari per il corretto funzionamento dell'ambiente di rete di configurazione.
  • Questo strumento ha un ampio supporto per la configurazione DNS. Semplifica il processo di integrazione DNS.
  • A condizione che un cluster di installazione presenti problemi di integrità, Consul eseguirà in modo efficace un controllo dello stato su questo cluster e registrerà i risultati diagnostici su un registro inviato all'operatore di rete pertinente.
  • La funzionalità di archiviazione chiave/valore di Consul è efficace nella segnalazione delle funzionalità e nella creazione di configurazioni dinamiche.
  • Questo strumento funziona con le API HTTP per archiviare e recuperare dati chiave/valore definiti e confinati all'interno di un archivio chiave/valore distribuito.

Configurazione del cluster Consul

Questa guida avrà un'idea pratica su come ottenere il rilevamento dei servizi tramite un cluster Consul utilizzando più nodi.

Prerequisiti
  • Questa configurazione sarà più produttiva se hai accesso a tre server Linux.
  • Tutti i tuoi tre server dovrebbero avere alcune porte specificate aperte. Sono 8300 per TCP, 8301 per TCP e UDP, 8302 per TCP e UDP, 8400 per TCP, 8500 per TCP e 8600 per TCP e UDP. A seconda dei server che stai utilizzando, ad esempio AWS, GCP o Azure, il firewall e i tag dei gruppi di sicurezza devono essere configurati correttamente in modo che le porte menzionate possano comunicare facilmente.
Configurazione del cluster di console

Poiché stiamo utilizzando tre server, implementeremo un cluster Consul a tre nodi. Possiamo assegnare a questi nodi i nomi console-1, console-2 e console-3. I seguenti passaggi ci porteranno a un cluster Consul pienamente funzionante.

Installazione e configurazione di Consul sui tre nodi definiti

I passaggi da uno a tre si applicano a tutti i nodi Consul definiti.

Passaggio 1 :su ogni terminale del server, naviga nella directory bin e usa il comando applicabile sulla tua distribuzione Linux per scaricare il binario Linux Consul. Quest'ultimo collegamento evidenzia le procedure di installazione per altri gestori di pacchetti Linux.

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install consul

Passaggio 2: È necessario creare le seguenti directory. Presta attenzione ai percorsi delle directory.

sudo mkdir -p /etc/consul.d/scripts 
sudo mkdir /var/consul

Fase 3: Tra i tre server, scegline uno ed esegui il seguente comando sul suo terminale per creare il tuo segreto Consul. Il segreto generato dovrebbe essere salvato su un file di testo.

consul keygen

Fase 4: Tutti e tre i tuoi server dovrebbero avere il seguente file di configurazione. Crealo come mostrato di seguito.

sudo vi /etc/consul.d/config.json

Popola il file config.json sopra creato con i dati seguenti. In questo file, il valore "encrypt" dovrebbe essere sostituito con il valore Consul secret che hai generato nel passaggio 3. Inoltre, il valore "start_join" dovrebbe contenere i rispettivi indirizzi IP dei tre server che hai scelto di utilizzare.

{ 
    "bootstrap_expect": 3, 
    "client_addr": "0.0.0.0", 
    "datacenter": "Us-Central", 
    "data_dir": "/var/consul", 
    "domain": "consul", 
    "enable_script_checks": true, 
    "dns_config": { 
        "enable_truncate": true, 
        "only_passing": true 
    }, 
    "enable_syslog": true, 
    "encrypt": "generated_Consul_key_value", 
    "leave_on_terminate": true, 
    "log_level": "INFO", 
    "rejoin_after_leave": true, 
    "server": true, 
    "start_join": [
        "server-1_IP", 
        "server-2_IP", 
        "server-3_IP" 
    ], 
    "ui": true 
}
Creazione del servizio Consul

Tutti i nostri tre nodi o server devono superare i seguenti passaggi.

Passaggio 1: Creazione di un file Systemd

sudo vi /etc/systemd/system/consul.service

Dopo aver creato il file, compilalo con i seguenti dati.

[Unit] 
Description=Consul Startup process 
After=network.target 

[Service] 
Type=simple 
ExecStart=/bin/bash -c '/usr/local/bin/consul agent -config-dir 
/etc/consul.d/' 
TimeoutStartSec=0 

[Install] 
WantedBy=default.target

Passaggio 2: Esegui un ricaricamento sui demoni di sistema

sudo systemctl daemon-reload
Bootstrapping e avvio del cluster

Per avviare il servizio Consul sul primo server o console-1, eseguire il seguente comando sul suo terminale.

sudo systemctl start consul

Per avviare il servizio Consul sugli altri due server, console-2 e console-3, è necessario eseguire lo stesso comando sui rispettivi terminali del sistema operativo.

sudo systemctl start consul

Su ciascuno dei tre server, potrai annotare i rispettivi stati del cluster eseguendo il comando seguente su ciascuno dei loro terminali.

 /usr/local/bin/consul members

Per sapere se la configurazione del tuo cluster Consul ha avuto successo, l'output che ricevi dall'esecuzione del comando precedente dovrebbe avere alcune somiglianze con il seguente.

[fosslinux@consul-1 ~]$ /usr/local/bin/consul members
Node       Address       Status     Type     Build     Protocol     DC 
Segment 
consul-1 10.128.0.7:8301 alive     server   1.2.0        2     us-central 
<all> 
consul-2 10.128.0.8:8301 alive     server   1.2.0        2     us-central 
<all> 
consul-3 10.128.0.9:8301 alive     server   1.2.0        2     us-central 
<all>
Accesso all'interfaccia utente del Console

Se la versione di Consul installata è 1.20 o successiva, viene fornita con un componente dell'interfaccia utente di Consul integrato. Questa interfaccia utente di Consul è basata sul Web e per accedervi dal browser è necessario rispettare la seguente regola di sintassi dell'URL.

http://<your-consul-server-IP-address>:8500/ui

Un esempio di implementazione della regola di sintassi dell'URL sopra sarà qualcosa di simile al seguente:

http://46.129.162.98:8500/ui

Praticità del Console

Lo svantaggio dell'utilizzo di Consul è quando si ha a che fare con le complessità intrinseche dei sistemi distribuiti configurati con esso. Questo problema è generale e dipende dall'architettura di questi sistemi. Non ha nulla a che fare con l'aspetto delle prestazioni del Console.

Un altro vantaggio di lavorare con Consul è che ha tutte le librerie necessarie, rendendo superfluo per gli utenti definire e utilizzare librerie di terze parti. Possiamo paragonare la concettualizzazione di Consul a OSS Sidecar di Netflix. Qui, i client non Zookeeper rimangono rilevabili poiché possono registrarsi sul sistema.

L'importanza dello strumento di scoperta del servizio Consul ha attratto aziende rinomate come SendGrid, Percolate, DigitalOcean, Outbrain e EverythingMe.

Ecc

Lo strumento di rilevamento del servizio Etcd offre funzionalità di archiviazione chiave/valore descritte in modo simile in Consul e Zookeeper. Era un componente CoreOS chiave prima dello stato di deprecazione del sistema operativo. Il linguaggio di programmazione Go è stato fondamentale nel suo sviluppo. Utilizza anche Raft come mezzo per gestire i protocolli di consenso.

È veloce e affidabile nella fornitura di API basate su JSON e HTTP. Questa disposizione funzionale è ulteriormente integrata con query e notifiche push. In un ambiente pratico, il cluster definito o creato ospiterà cinque o sette nodi. Oltre al rilevamento dei servizi, anche le architetture di microservizi che implementano Etcd nei loro contenitori trarranno vantaggio dalla registrazione di questi servizi.

Durante la registrazione del servizio, Etcd gestisce la scrittura della coppia chiave-valore necessaria. Sotto il rilevamento del servizio, Etcd gestisce la lettura della coppia chiave-valore creata.

Affinché altre applicazioni create possano comunicare con Etcd, devono aderire a un protocollo di progetto confd. Questo protocollo crea file di configurazione statici dalle informazioni memorizzate di Etcd. In questa impostazione, è responsabilità dei client gestire eventuali errori di connessione praticabili e creare una riconnessione tramite altre istanze di servizio valide.

Le aziende di alto profilo che hanno Etcd nel loro curriculum includono CloudGear, Headspace, Red Hat, Kubernetes, Apptus, Zenreach, Cloud Foundry e Google. Il crescente supporto della community, ecc., sta migliorando l'esperienza degli sviluppatori sulla piattaforma di questo strumento di rilevamento dei servizi.

Configurazione ecc.

La capacità di Etcd di archiviare e recuperare le configurazioni non è la sua unica caratteristica principale come archivio chiave-valore open source. I cluster Etcd creati presentano problemi di errore dei nodi minimi a causa della loro elevata disponibilità. I suoi valori memorizzati vengono recuperati dai client tramite REST/gRPC.

Prerequisiti

I seguenti requisiti renderanno più fruttuosa la tua esperienza nella creazione del cluster Etcd.

  • Avere accesso a tre server Linux funzionali
  • Le tre scelte del server devono essere configurate con nomi host validi.
  • Per comunicazioni peer-to-peer e richieste client efficaci, le porte 2380 e 2379 sui tuoi server devono essere abilitate dalle regole del firewall del sistema.
Configurazione del cluster Etcd sulla tua macchina Linux

L'installazione del cluster Etcd non dovrebbe darti alcun mal di testa in quanto è relativamente semplice, specialmente con l'approccio bootstrap statico. Per eseguire correttamente il bootstrap con questo approccio, dovresti memorizzare gli IP del tuo nodo. Questa guida all'installazione tratterà tutti i passaggi di cui potresti aver bisogno per creare correttamente cluster di server Linux poiché abbiamo a che fare con un'installazione multinodo.

Affinché etcd possa essere eseguito come servizio, dovremo anche configurare i file systemd. Quello che segue è solo un esempio della relazione tra nome host e indirizzo IP menzionata che useremo in questa guida all'installazione.

etcd-1 : 10.128.0.7

etcd-2 : 10.128.0.8

etcd-3 : 10.128.0.9

Se disponi dei privilegi amministrativi necessari, puoi modificare i nomi host dei tuoi server per riflettere le tue preferenze personalizzabili.

È ora di procedere con la configurazione del cluster etcd.

I tre nodi

I seguenti passaggi successivi si applicano a tutti e tre i nodi del server.

Passaggio 1: Su ciascun terminale del server, vai alla directory src con il seguente comando:

cd /usr/local/src

Passaggio 2: Mentre fai riferimento alle versioni di Github, dovresti essere in grado di recuperare l'ultima versione di etcd. Assicurati di scaricare l'ultima versione stabile.

sudo wget "https://github.com/coreos/etcd/releases/download/v3.3.9/etcd-v3.3.9-linux-amd64.tar.gz"

Passaggio 3: In questo passaggio, decomprimeremo il file binario etcd scaricato.

sudo tar -xvf etcd-v3.3.9-linux-amd64.tar.gz

Passaggio 4: Il processo untar dovrebbe produrre file etcd e etcdctl. Queste estrazioni sono eseguibili etcd. Utilizzare il comando seguente per spostarli nella directory bin locale.

sudo mv etcd-v3.3.9-linux-amd64/etcd* /usr/local/bin/

Passaggio 5: Poiché vogliamo che un utente etcd esegua il servizio etcd, dovrai creare un utente, un gruppo e delle cartelle etcd.

sudo mkdir -p /etc/etcd /var/lib/etcd
groupadd -f -g 1501 etcd
useradd -c "etcd user" -d /var/lib/etcd -s /bin/false -g etcd -u 1501 etcd
chown -R etcd:etcd /var/lib/etcd

Passaggio 6: Assicurati di disporre dei privilegi di utente root mentre esegui le seguenti azioni.

ETCD_HOST_IP=$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)
ETCD_NAME=$(hostname -s)

La sequenza di comandi sopra imposta due variabili di ambiente. La prima variabile di ambiente recupera l'indirizzo IP del server e la seconda associa quell'indirizzo IP a un nome host.

Etcd ora ha bisogno di un file di servizio systemd.

cat << EOF > /lib/systemd/system/etcd.service

Dopo aver creato questo file di servizio, compilalo in modo che assomigli a quello di seguito.

[Unit]
Description=etcd service
Documentation=https://github.com/etcd-io/etcd 
 
[Service]
User=etcd
Type=notify
ExecStart=/usr/local/bin/etcd \\
 --name ${ETCD_NAME} \\
 --data-dir /var/lib/etcd \\
 --initial-advertise-peer-urls http://${ETCD_HOST_IP}:2380 \\
 --listen-peer-urls http://${ETCD_HOST_IP}:2380 \\
 --listen-client-urls http://${ETCD_HOST_IP}:2379,http://127.0.0.1:2379 \\
 --advertise-client-urls http://${ETCD_HOST_IP}:2379 \\
 --initial-cluster-token etcd-cluster-1 \\
 --initial-cluster etcd-1=http://10.142.0.7:2380,etcd-2=http://10.142.0.8:2380,etcd-3=http://10.142.0.9:2380 \\
 --initial-cluster-state new \\
 --heartbeat-interval 1000 \\
 --election-timeout 5000
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target
EOF

La parte "–listen-client-urls" di questo file deve essere sostituita con i tre IP del server utilizzati. A seconda dei server di configurazione, i valori di “–name”, “–listen-peer-urls”, “–initial-advertise-peer-urls” e “–listen-client-urls” differiranno. Come per le variabili ETCD_HOST_IP e ETCD_NAME, i loro valori di input sono automatizzati e sostituiti dal sistema.

Avvio del cluster etcd

Le configurazioni precedenti dai passaggi da 1 a 6 dovrebbero applicarsi a tutti e tre i server. Successivamente, il passaggio successivo sarà avviare e abilitare il servizio etcd che abbiamo appena creato. Questo sforzo dovrebbe applicarsi a tutti e tre i nodi. Il server 1 assumerà la funzionalità di un nodo bootstrap. Una volta che il servizio etcd è attivo e funzionante, selezionerà automaticamente un nodo come leader. Quindi non devi preoccuparti di essere coinvolto in questa configurazione del nodo leader.

systemctl daemon-reload
systemctl enable etcd
systemctl start etcd.service
systemctl status -l etcd.service
Verifica dello stato del cluster ecc.

L'utilità etcdctl che abbiamo estratto in precedenza dopo aver scaricato il binario etcd è responsabile dell'avvio dell'interazione con il cluster etcd. Tutti e tre i tuoi nodi dovrebbero avere questa utilità nella directory /usr/local/bin.

I seguenti controlli di sistema sono applicabili su tutti i nodi del cluster e non sono limitati a uno specifico. Il primo controllo consiste nel determinare lo stato di salute del tuo cluster.

etcdctl cluster-health

Puoi anche controllare e verificare lo stato di appartenenza di un nodo del cluster per determinare se ha lo stato di leadership.

etcdctl  member list

Per impostazione predefinita, accederai esplicitamente alle funzionalità di etcd v2 tramite etcdctl. È la sua associazione predefinita. Se desideri accedere a etcd v3 e alle sue funzionalità, l'utilizzo della variabile "ETCDCTL_API=3" è un'opzione praticabile. Per implementare questa variabile, configurala come variabile di ambiente. In alternativa, puoi passare la variabile ogni volta che usi il comando etcdctl.

Prova a creare e verificare le seguenti coppie chiave-valore.

ETCDCTL_API=3 etcdctl put name5 apple
ETCDCTL_API=3 etcdctl put name6 banana
ETCDCTL_API=3 etcdctl put name7 orange
ETCDCTL_API=3 etcdctl put name8 mango

Per accedere al valore name7, eseguire il comando seguente.

ETCDCTL_API=3 etcdctl get name7

Attraverso l'utilizzo di intervalli e prefissi, è possibile elencare tutte le chiavi come illustrato di seguito:

ETCDCTL_API=3 etcdctl get name5 name8 # lists range name5 to name8
ETCDCTL_API=3 etcdctl get --prefix name # lists all keys with name prefix

Apache Zookeeper

Questo servizio può essere descritto come centralizzato, distribuito e coerente. Il linguaggio di programmazione Java è responsabile della sua creazione. Apache Zookeeper può gestire efficacemente le modifiche ai cluster tramite il protocollo Zab. Il suo ruolo precedente era la manutenzione dei componenti del cluster software nel mondo Apache Hadoop.

Qui, l'archiviazione dei dati è su un albero, all'interno di un file system o in uno spazio dei nomi gerarchico. Quando un client è connesso a questa rete, i nodi continueranno a esistere. D'altra parte, quando si verifica la disconnessione dalla rete o si verifica un problema con la rete configurata, i nodi scompaiono. Quando si verifica un problema di errore di rete o di bilanciamento del carico, spetta ai client risolverlo. Quando Apache Zookeeper registra un nuovo servizio, i client ricevono notifiche relative a questi servizi.

La coerenza del sistema Zookeeper non lo protegge da potenziali guasti del sistema. Alcune piattaforme potrebbero riscontrare problemi nella registrazione dei servizi necessari o addirittura incorrere in errori durante l'implementazione delle funzioni del servizio di lettura e scrittura. D'altra parte, Apache Zookeeper continua a essere un'applicazione solida e consolidata con un ampio supporto per le librerie a vantaggio della sua vivace comunità di utenti e dei clienti in crescita.

Le aziende di alto profilo associate ad Apache Zookeeper includono Apache Software Foundation, Luxoft, Solr, Reddit, Rackspace, Spero Solutions, F5 Networks, Cloudera, eBay e Yahoo!

Configurazione di Apache Zookeeper

Apache Zookeeper è perfetto per gestire vari carichi di lavoro distribuiti grazie al suo adattamento funzionale come strumento di coordinamento distribuito.

Prerequisiti
  • Sono necessarie tre macchine virtuali (VM). Il numero di macchine virtuali da utilizzare può essere superiore a 3, ma tale numero deve essere dispari per il cluster ad alta disponibilità.
  • Le porte 2181, 2888 e 3888 devono essere abilitate tramite le tabelle IP del sistema server affinché le connessioni in entrata delle macchine virtuali avvengano tramite queste porte. Queste porte sono responsabili della comunicazione di Apache Zookeeper.

Gli individui che lavorano con fornitori di servizi cloud come AWS dovrebbero disporre di endpoint o gruppi di sicurezza abilitati affinché Apache Zookeeper possa lavorare con queste porte.

L'installazione e la configurazione di Apache Zookeeper

Tutte e tre le tue VM dovrebbero beneficiare dei seguenti passaggi:

Passaggio 1: Aggiornamento del server

 sudo yum -y update

Passaggio 2: Installazione Java. Salta questo passaggio se Java è già installato.

 sudo yum  -y install java-1.7.0-openjdk

Passaggio 3: Usa il comando "wget" per scaricare Zookeeper.

wget http://mirror.fibergrid.in/apache/zookeeper/zookeeper-3.5.2-alpha/zookeeper-3.5.2-alpha.tar.gz

Passaggio 4: Decomprimi l'applicazione Apache Zookeeper nella directory /opt.

 sudo tar -xf zookeeper-3.5.2-alpha.tar.gz -C /opt/

Passaggio 5: Passa alla directory dell'app Apache Zookeeper e rinominala in

cd /opt
sudo mv zookeeper-* zookeeper

Passaggio 6: All'interno della directory /opt/zookeeper/conf, dovremo lavorare con un file chiamato zoo.cfg. Crea questo file e compilalo con i seguenti dati di configurazione.

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=<ZooKeeper_IP/hostname>:2888:3888
server.2=<ZooKeeper_iP/hostname>:2888:3888
server.3=<ZooKeeper_iP/hostname>:2888:3888

I tuoi tre server Zookeeper sono rappresentati da Server 1, server 2 e server 3. La variabile "ZooKeeper_IP" dovrebbe essere sostituita con i tuoi tre indirizzi IP del server o con i nomi host risolvibili di questi indirizzi IP identificabili.

Passaggio 7:  Il file zoo.cfg che abbiamo creato e popolato punta a una directory di dati chiamata lib, che contiene anche un'altra directory chiamata zookeeper. Dobbiamo creare questa directory in quanto non esiste ancora.

 sudo mkdir /var/lib/zookeeper

Passaggio 8: All'interno della directory sopra creata, crea un file myid.

 sudo touch /var/lib/zookeeper/myid

Passaggio 9: Questo file myid conterrà numeri univoci per identificare ogni server Apache Zookeeper.

Per il server Zookeeper 1

 sudo sh -c "echo '5' > /var/lib/zookeeper/myid"

Per il server Zookeeper 2

 sudo sh -c "echo '6' > /var/lib/zookeeper/myid"

Per il server Zookeeper 3

 sudo sh -c "echo '7' > /var/lib/zookeeper/myid"
Configurazioni del servizio Apache Zookeeper

Per avviare e fermare Zookeeper, dovremo utilizzare gli script. Tuttavia, l'esecuzione di questi script come servizio aiuta a gestirli meglio. Dovremo aprire il file zkServer.sh.

 sudo vi /opt/zookeeper/bin/zkServer.sh

Il file aperto sotto “#!/usr/bin/env” lo popola con i seguenti dati.

# description: Zookeeper Start Stop Restart
# processname: zookeeper
# chkconfig: 244 30 80

Sullo stesso file zkServer.sh, traccia il live "#use POSTIX interface, symlink...". Sostituisci e sostituisci le variabili che seguono quella riga con questi valori.

ZOOSH=`readlink $0`
ZOOBIN=`dirname $ZOOSH`
ZOOBINDIR=`cd $ZOOBIN; pwd`
ZOO_LOG_DIR=`echo $ZOOBIN`

Il servizio Zookeeper ora ha bisogno di un collegamento simbolico.

sudo ln -s /opt/zookeeper/bin/zkServer.sh /etc/init.d/zookeeper

Il menu di avvio dovrebbe ospitare Zookeeper.

sudo chkconfig zookeeper on

Tutti e tre i server dovrebbero essere riavviati con il seguente comando. Eseguilo sui rispettivi terminali.

 sudo  init 6

Una volta riavviati i server, gestirli sarà semplice attraverso le seguenti sequenze di comandi.

sudo service zookeeper status
sudo service zookeeper stop
sudo service zookeeper start
sudo service zookeeper restart

Quando viene eseguito il comando per il controllo dello stato di Zookeeper, l'output del terminale dovrebbe essere simile al seguente.

/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader

A uno dei tre server viene assegnata la modalità leader e agli altri due la modalità follower.

Nota finale

Il rilevamento dei servizi ha due obiettivi importanti:disponibilità elevata e rilevamento degli errori. Con più funzionalità in coda, un'implementazione dell'infrastruttura non può essere completa senza riconoscere e configurare strumenti di rilevamento dei servizi come Consul, Etcd e Apache Zookeeper. Questi strumenti sono open source e fondamentalmente efficaci nelle loro funzionalità di erogazione dei servizi. Pertanto, non ti imbatterai in alcun muro nel tentativo di testare o implementare un semplice meccanismo di rilevamento dei servizi sui tuoi sistemi Linux.


Linux
  1. Servizio del sistema operativo Linux 'nfs'

  2. Servizio del sistema operativo Linux 'microcode_ctl'

  3. Servizio del sistema operativo Linux 'ldap'

  4. Servizio del sistema operativo Linux 'yppasswdd'

  5. Servizio del sistema operativo Linux "xendomains"

Come riavviare i servizi di rete in Linux

3 modi per configurare un'interfaccia di rete in Linux

Semplici modi per generare una password casuale su Linux Shell

Servizio del sistema operativo Linux "NetFS"

Servizio del sistema operativo Linux "hplip"

Sistema operativo Linux Servizio "smartd"