User Tools

Site Tools


strutture:lnf:dr:calcolo:sistemi:ceph:iscsigw

iSCSI Gateway

Il servizio permette di esportare un'immagine RBD attraverso protocollo iSCSI, secondo lo schema:

Deploy

Assumendo di disporre di un cluster CEPH operativo, per il deploy dei relativi daemon è possibile seguire i seguenti passi:

1. Applicare una label (di seguito verrà utilizzata una label iscsi) a tutti gli host che dovranno ospitare i relativi daemon (iscsigw API e targets):

ceph orch host label add <host1> iscsi
...
ceph orch host label add <hostn> iscsi

2. Verificare la corretta associaziome delle label con:

ceph orch host ls

3. Creare un pool per ospitare la configurazione (oppure utilizzarne uno già esistente che sia già assegnato all'applicazione rbd come indicato qui):

ceph osd pool create <iscsi_pool> 128 128 replicated

4. Generare un file per la definizione del servizio come segue:

service_type: iscsi
service_id: iscsi
placement:
  label: iscsi
spec:
  pool: <iscsi_pool>  
  trusted_ip_list: "<IP_1>, ... , <IP_n>" # IP autorizzati a dialogare con le API 
  api_user: <username>                    # credenziali usate per accedere alle API
  api_password: '<password>' 

Includere tra gli indirizzi abilitati gli IP degli host e assicurarsi che un'eventuale impostazione proxy non precluda l'accesso diretto alle API sulla porta 5000 TCP degli host

5. Scatenare il deploy del servizio utilizzando il file:

ceph orch apply -i /root/iscsi.yaml

6. Verificare i servizi effettivamente avviati con:

ceph orch ls 

Creazione Target

I target per lo sharing iSCSI devono essere opportunamente creati utilizzando le API. Per dialogarci è possibile utilizzare la dashboard o i tool da CLI (gwcli).

Per accedere a gwcli, è necessario passare dal container che fornisce il servizio iSCSI. Da uno degli host dove il servizio iSCSI è stato avviato:

1. Accedere a gwcli sul container:

podman exec -it $(podman ps | grep iscsi | grep -v tcmu | cut -d " " -f1 ) /bin/bash
[root@ /]# gwcli
/>

2. Visualizzare i target eventuali:

/> cd iscsi-targets
/iscsi-targets> ls
o- iscsi-targets ...................................................................... [DiscoveryAuth: None, Targets: 0] 

3. Creare un nuovo target:

/>cd /iscsi-targets
create iqn.2001-07.com.ceph:<target_name>
ok

4. Aggiungere gli iSCSI GW per il target (gli host sui quali è stato installato il servizio):

/iscsi-targets> goto gateways
/iscsi-target.../gateways> create <gw1_name> <gw1_IP>
Adding gateway, sync'ing 0 disk(s) and 0 client(s)
ok
/iscsi-target.../gateways> create <gw2_name> <gw2_IP>
Adding gateway, sync'ing 0 disk(s) and 0 client(s)
ok
/iscsi-target.../gateways> create <gw2_name> <gw2_IP>
Adding gateway, sync'ing 0 disk(s) and 0 client(s)
ok
/iscsi-target.../gateways> ls
o- gateways ...................................................................................... [Up: 3/3, Portals: 3]
  o- <gw1_name> ........................................................................................ [<gw1_IP> (UP)]
  o- <gw2_name> ........................................................................................ [<gw2_IP> (UP)]
  o- <gw3_name> ........................................................................................ [<gw3_IP> (UP)]

5. Creare un nuovo disco dal pool prescelto per esportarlo come LUN:

cd /disks
/disks> create <iscsi_pool> image=<image_name> size=<size>
ok

6. Creare un client dopo aver ottenuto l'initiator name dal sistema corrispondente:

/disks> goto hosts
/iscsi-target.../hosts> create <initiator_name>
ok

7. Assegnare la LUN al client:

/iscsi-target...<initiator_name>> disk add <iscsi_pool>/<image_name>
ok

8. Configurare l'iSCSI initiator sul client come indicato nella prossima sezione

Configurazione iSCSI initiator

1. Installare i pacchetti necessari (su distribuzioni non RH-like potrebbero differire):

dnf install iscsi-initiator-utils device-mapper-multipath

2. Abilitare il multipath

mpathconf --enable --with_multipathd y

3. Aggiungere al file /etc/multipath.conf:

devices {
        device {
                vendor                 "LIO-ORG"
                product                "TCMU device"
                hardware_handler       "1 alua"
                path_grouping_policy   "failover"
                path_selector          "queue-length 0"
                failback               60
                path_checker           tur
                prio                   alua
                prio_args              exclusive_pref_bit
                fast_io_fail_tmo       25
                no_path_retry          queue
        }
}

4. Rconfigurare il servizio multipath:

systemctl reload multipathd

5. Effettuare il discovery dei portal, e appuntarsi il nome del target:

iscsiadm -m discovery -t st -p <gw*_IP>

6. Fare login sul target:

iscsiadm -m node -T <target_name> -l

7. Verificare la presenza di più path con multipath -ll

8. Verificare la corrispodenza dei devicename con portali:

iscsiadm -m session -P 3
strutture/lnf/dr/calcolo/sistemi/ceph/iscsigw.txt · Last modified: 2023/11/14 14:55 by rorru@infn.it

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki