Tutorial > Creare e configurare un server ElasticSearch con CentOS 8

Creare e configurare un server ElasticSearch con CentOS 8

Pubblicato il: 21 luglio 2021

CentOS ElasticSearch Sviluppo

ElasticSearch è un motore di ricerca gratuito e open source, basato su Apache Lucene e dotato di capacità Full Text e supporto ad architetture distribuite. Si tratta di una soluzione affermata ormai da tempo nel campo dell'analisi dei dati in tempo reale.

In questo tutorial ti illustreremo tutti gli step necessari per creare e configurare un server ElasticSearch su CentOS 8.

Per prima cosa dovrai connetterti al tuo server tramite una connessione SSH. Se non l’hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.

Installazione di Java

Prima di installare ElasticSearch provvedi all'installazione del Java JDK mediante il seguente comando:

$ sudo dnf install java-11-openjdk

Installazione di ElasticSearch

Procedi importando la chiave GPG per i pacchetti di ElasticSearch:

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Crea il file di configurazione per la repository di ElasticSearch:

$ sudo vi /etc/yum.repos.d/elasticsearch.repo

Inserisci il seguente contenuto:

[Elasticsearch-7]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

e infine salva.

Ora puoi procedere aggiornando le repository e installando il pacchetto:
$ sudo dnf update -y && sudo dnf install elasticsearch -y

Quindi procedi installando e avviando il servizio tramite:

$ sudo systemctl enable elasticsearch
$ sudo systemctl start elasticsearch

Verificare lo stato del servizio

Per verificare che il servizio si sia avviato, controlla le porte TCP attualmente in ascolto, lanciando:

$ netstat -a -o -n | grep LISTEN

Dovresti quindi notare le porte 9200 e 9300 in ascolto come sotto:

tcp        0 0 127.0.0.53:53           0.0.0.0:* LISTEN   off (0.00/0/0)

tcp        0 0 0.0.0.0:22              0.0.0.0:* LISTEN   off (0.00/0/0)

tcp6       0 0 127.0.0.1:9200          :::* LISTEN   off (0.00/0/0)

tcp6       0 0 ::1:9200                :::* LISTEN   off (0.00/0/0)

tcp6       0 0 127.0.0.1:9300          :::* LISTEN   off (0.00/0/0)

tcp6       0 0 ::1:9300                :::* LISTEN   off (0.00/0/0)

Utilizzare ElasticSearch

Ora che il servizio è in funzione, puoi fare delle prove di utilizzo inserendo dei dati e verificando che vengano successivamente reperiti.

N.B. Se utilizzi un server remoto sostituisci localhost con l'indirizzo IP del tuo server nei comandi mostrati di seguito.

In questo esempio, inserirai 3 prodotti commerciali:

$ curl -POST 'http://localhost:9200/products/1' -curl -H 'Content-Type: application/json' -d '

{

    "name": "Coffe Machine 1",

    "uuid": "00000010"

}'

Effettuando la chiamata sopra stai inserendo un nuovo documento nell indice “products” con attributo “name” corrispondente a “Coffe Machine 1" e con un indentificativo “uuid”:

{"_index":"index","_type":"products","_id":"cUqGY20Bm2mQybZCoeKU","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

ElasticSearch risponderà come indicato sopra, specificando l’id del prodotto inserito e altri dati di reportistica.

Procedi quindi inserendo altri 2 prodotti:

$ curl -POST 'http://localhost:9200/index/products' -curl -H 'Content-Type: application/json' -d '

{

    "name": "White Desk",

    "uuid": "WD000010"

}'
                $ curl -POST 'http://localhost:9200/index/products' -curl -H 'Content-Type: application/json' -d '

{

    "name": "Black Desk",

    "uuid": "WD000011"

}'

Una volta completato, puoi procedere ad effettuare la tua prima ricerca indicando come parametro di ricerca “Desk”:

$ curl -X GET "http://localhost:9200/index/_search?q=Desk*&pretty"

Come potrai notare, otterrai 2 risultati che comprendono le due scrivanie inserite sopra:

{

    ...

    "hits" : [

      {

        ….

        "_source" : {

          "name" : "White Desk",

          "uuid" : "WD000010"

        }

      },

      {

        ...

        "_score" : 1.0,

        "_source" : {

          "name" : "Black Desk",

          "uuid" : "WD000011"

        }

      }

    ]

  }

}

Configurare ElastiSearch

Tutti i file di configurazione di ElasticSearch sono presenti nella directory /etc/elasticsearch. Il file più importante è elasticsearch.yml che permette di modificare i parametri di funzionamento di base del sistema, come ad esempio le informazione del cluster, i parametri di connessione TCP/IP oppure le cartelle dove memorizzare i dati.

Tutti i file di configurazione presenti utilizzano il formato YAML, per cui durante la modifica di tali file, devi prestare attenzione all'indentazione.

Migliorare la sicurezza

Una tra le prime operazioni che puoi effettuare per aumentare la sicurezza del servizio è quella di limitare le connessioni in ingresso, ammettendo soltanto quelle locali. In questa maniera, solo la tua applicazione presente sul server potrà utilizzare il servizio.

Per modificare la scheda di ascolto puoi alterare il file /etc/elasticsearch/elasticsearch.yml andando a decommentare e modificare la riga seguente:

…

network.host: 127.0.0.1

...

Salva il file e riavvia il servizio per applicare le modifiche:

$ sudo systemctl restart elasticsearch

Attendi qualche minuto e verifica che il servizio sia in ascolto solo sull’interfaccia locale lanciando:

$ netstat -a -o -n | grep LISTEN

Nel caso in cui avessi bisogno di mantenere il servizio disponibile anche per l’esterno, puoi sempre cambiare la porta di ascolto per occultare la presenza di ElasticSearch.

Modifica il file di configurazione principale /etc/elasticsearch/elasticsearch.yml:

…

#

# Set the bind address to a specific IP (IPv4 or IPv6):

#

network.host: 0.0.0.0

#

# Set a custom port for HTTP:

#

http.port: 2900

...

N.B. Al posto della porta 2900 puoi inserire la porta che desideri.

Dopo aver salvato il file, riavvia il servizio:

$ sudo systemctl restart elasticsearch

Per verificare lo stato del servizio, dopo aver applicato le modifiche, utilizza sempre netstat:

$ netstat -a -o -n | grep LISTEN