====== 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 iscsi ... ceph orch host label add 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 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: trusted_ip_list: ", ... , " # IP autorizzati a dialogare con le API api_user: # credenziali usate per accedere alle API api_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: 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 Adding gateway, sync'ing 0 disk(s) and 0 client(s) ok /iscsi-target.../gateways> create Adding gateway, sync'ing 0 disk(s) and 0 client(s) ok /iscsi-target.../gateways> create Adding gateway, sync'ing 0 disk(s) and 0 client(s) ok /iscsi-target.../gateways> ls o- gateways ...................................................................................... [Up: 3/3, Portals: 3] o- ........................................................................................ [ (UP)] o- ........................................................................................ [ (UP)] o- ........................................................................................ [ (UP)] 5. Creare un nuovo disco dal pool prescelto per esportarlo come LUN: cd /disks /disks> create image= size= ok 6. Creare un client dopo aver ottenuto l'initiator name dal sistema corrispondente: /disks> goto hosts /iscsi-target.../hosts> create ok 7. Assegnare la LUN al client: /iscsi-target...> disk add / 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 6. Fare login sul target: iscsiadm -m node -T -l 7. Verificare la presenza di più path con ''multipath -ll'' 8. Verificare la corrispodenza dei devicename con portali: iscsiadm -m session -P 3