giovedì 14 marzo 2013

SCST ocf Resource Agent Updated: SRPT (Infiniband) support

It's time to update the SCST Pacemaker Resource Agents!


This release introduces some new features.

Infiniband support is added. Now is possible to add infiniband target and map LUNs to it. It is also possible to have, in the same resource a LUN mapped both to iSCSI and to Infiniband. ESXi is reported to behave fine with this setup.

Tests are welcome and appreciated.

Resource Agents can be downloaded from my Dropbox: https://dl.dropbox.com/u/3102209/Projects/SCST-ocf/SCST-ocf-1.2.tar.gz


Below is part of README file:


EXAMPLE OF USAGE

Assumptions:
- you are using DRBD as backing device (/dev/drbd1)
- your target iqn is iqn.2012-02.com.mysuperhasan:vdisk.lun
- your nic reserved for iscsi is eth2 and your iscsi subnet is 192.168.103.x

This is what your resource configuration in cib notation will look like:


primitive DRBD_VOLUME ocf:linbit:drbd \
    params drbd_resource="DRBDRESOURCE" \
    op monitor interval="29" role="Master" \
    op monitor interval="31" role="Slave"
primitive ISCSI_IP ocf:heartbeat:IPaddr2 \
    params ip="192.168.103.20" cidr_netmask="24" nic="eth2" \
    op monitor interval="10s"
primitive ISCSI_LUN ocf:scst:SCSTLun \
    params iscsi_enable="1" target_iqn="iqn.2012-02.com.mysuperhasan:vdisk.lun" iscsi_lun="0" \
    path="/dev/drbd1" handler="vdisk_fileio" device_name="VDISK-LUN10" \        
    additional_parameters="nv_cache=1" \
    op monitor interval="10s" timeout="120s"
primitive ISCSI_TGT ocf:scst:SCSTTarget \
    params iscsi_enable="1" iqn="iqn.2012-02.com.mysuperhasan:vdisk.lun" \
    portals="192.168.103.20" \
    op monitor interval="10s" timeout="120s"
group GR_ISCSI ISCSI_TGT ISCSI_LUN ISCSI_IP
ms MS_DRBD_VOLUME DRBD_VOLUME \
    meta master-max="1" master-node-max="1" clone-max="2" \
    clone-node-max="1" notify="true"
colocation CO_ISCSI_ON_DRBD_VOLUME inf: GR_ISCSI MS_DRBD_VOLUME:Master
order OR_DRBD_BEFORE_ISCSI inf: MS_DRBD_VOLUME:promote GR_ISCSI:start


INFINIBAND:
For now infiniband support is using one target per HCA model, with SCST auto-created target names.
Soon it will be ported in one target per per mode, with target names represented by HCA port GUID

The CIB for infiniband looks like this:

primitive ISCSI_LUN ocf:scst:SCSTLun \
    params target_iqn="iqn.2012-02.com.mysuperhasan:vdisk.lun" lun="0" \
    path="/dev/drbd1" handler="vdisk_fileio" device_name="VDISK-LUN10" \        
    srpt_enable=1 additional_parameters="nv_cache=1" \
    op monitor interval="10s" timeout="120s"
primitive ISCSI_TGT ocf:scst:SCSTTarget \
    params iqn="iqn.2012-02.com.mysuperhasan:vdisk.lun" \
    portals="192.168.103.20" \
    srpt_enable=1 \
    op monitor interval="10s" timeout="120s"







lunedì 7 maggio 2012

Autenticazione Multi-Tenant Active Directory con Dovecot

Nota: questo articolo è un'estensione di Mailbox Virtuali con Dovecot, Postfix e Active Directory

Se volessimo fare in modo che il nostro server di posta autentichi su diversi domini AD è necessario apportare qualche piccola modifica alla configurazione di Dovecot.
Prendiamo come esempio questa struttura:


Il dominio BRICK.LOCAL ha una relazione di Trust unidirezionale col dominio TRICK.LOCAL. Percé la relazione di trust funzioni c'è bisogno che sui due DNS di AD sia impostato un conditional forward.

Proviamo quindi a risolvere TRICK.LOCAL:

nslookup trick.local
Server:        192.168.98.101
Address:    192.168.98.101#53

Non-authoritative answer:
Name:    trick.local
Address: 192.168.99.101

Nel caso non risolvesse, c'è da controllare la configurazione DNS.

Aggiungiamo nella configurazione di kerberos i parametri relativi al secondo dominio AD, modificando il file /etc/krb5.conf:

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log 

[libdefaults]
default_realm = BRICK.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true

[realms]
BRICK.LOCAL = {
kdc = brick.local:88
admin_server = brick.local:749
default_domain = brick.local
}

TRICK.LOCAL = {
kdc = trick.local:88
admin_server = trick.local:749
default_domain = trick.local
}

[domain_realm]
.brick.local = BRICK.LOCAL
brick.local = BRICK.LOCAL
.trick.local = TRICK.LOCAL
trick.local = TRICK.LOCAL

[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}


Dal momento che il setup che andremo a realizzare sarà un setup multidominio, e si configurerà la possibilità di collisione fra nomi utente, è necessario variare il modo in cui Dovecot chiamerà la procedure di login e in cuiandrà a salvare i messaggi su filesystem.

Modifichiamo il file /etc/dovecot/conf.d/10-auth.conf

auth_username_format =%Ln@%Ud

In questo modo Dovecot passerà a PAM il nome utente nella forma utente@DOMINIO, in modo da rispettare la sintassi di kerberos utente@REALM.

Modifichiamo poi i file:

/etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/var/vmail/%Ld/%Ln/Maildir

/etc/dovecot/conf.d/auth-system.conf.ext

userdb {
  driver = static
  args = uid=500 gid=500 home=/var/vmail/%Ld/%Lu/Maildir allow_all_users=yes
}

In questo modo i messaggi verranno registrati nella cartella dominio/utente sotto /var/mail.