Table of Contents
iSCSI Gateway
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