User Tools

Site Tools


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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
strutture:lnf:dr:calcolo:sistemi:ceph:iscsigw [2023/11/09 22:26] – created rorru@infn.itstrutture:lnf:dr:calcolo:sistemi:ceph:iscsigw [2023/11/14 14:55] (current) rorru@infn.it
Line 1: Line 1:
 +====== iSCSI Gateway ======
  
 +Il servizio permette di esportare un'immagine RBD attraverso protocollo iSCSI, secondo lo schema: 
 +
 +{{ :strutture:lnf:dr:calcolo:sistemi:ceph:rbd_ceph-iscsi-gateway.png?direct |}}
 +
 +
 +===== 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 [[https://wiki.infn.it/strutture/lnf/dr/calcolo/sistemi/ceph/rbd#inizializzazione_pool|qui]]):
 +  ceph osd pool create <iscsi_pool> 128 128 replicated
 +
 +4. Generare un file per la definizione del servizio come segue:
 +<code>
 +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>' 
 +</code>
 +
 +**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:
 +<code>
 +/>cd /iscsi-targets
 +create iqn.2001-07.com.ceph:<target_name>
 +ok
 +</code>  
 +
 +4. Aggiungere gli iSCSI GW per il target (gli host sui quali è stato installato il servizio):
 +<code>
 +/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)]
 +</code>
 +
 +5. Creare un nuovo disco dal pool prescelto per esportarlo come LUN:
 +<code>
 +cd /disks
 +/disks> create <iscsi_pool> image=<image_name> size=<size>
 +ok
 +</code>
 +
 +6. Creare un client dopo aver ottenuto l'initiator name dal sistema corrispondente: 
 +<code>
 +/disks> goto hosts
 +/iscsi-target.../hosts> create <initiator_name>
 +ok
 +</code> 
 +
 +7. Assegnare la LUN al client:
 +<code>
 +/iscsi-target...<initiator_name>> disk add <iscsi_pool>/<image_name>
 +ok
 +</code>
 +
 +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'':
 +<code>
 +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
 +        }
 +}
 +</code>
 +
 +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
 +  
 + 

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki