新LDAPベンチマークツール: lb

2015-12-06

OpenLDAP と仲間たち Advent Calendar 2015 6日目。

かつてLDAPのベンチマークといえばSLAMDが主流でした、しかしSLAMDは既に開発プロジェクトが消滅しメンテナンスされていません。

そこで今回はlbという新しいLDAPのベンチマークツールを紹介します。

lbはGolangで書かれていて軽量スレッドのGoroutineを使って並列処理を行っています。

SLAMDはWebインターフェースで操作するので、様々な条件のベンチマークを実行するために何度もWebインターフェースをクリックする必要がありました。

lbはApache Benchによく似たインターフェースのコマンドラインツールですので、簡単にベンチマークを自動化できます。

RIP SLAMD

lbのインストール

依存パッケージのインストール

  • Debian/Ubuntuの人
# apt-get install golang
  • RHEL7/CentOS7の人
# yum install -y golang

※旧バージョンではOpenLDAP開発環境が必要でしたが最新版では必要ありません。

環境変数の設定

$ export GOPATH=~/go
$ export PATH=$GOPATH/bin:$PATH

ビルド&インストール

$ go get github.com/hamano/lb

使い方

セットアップ

  • ベースエントリの投入
$ lb setup base -b 'dc=example,dc=com' ldap://localhost/
  • 1000個のエントリを投入
$ lb setup person --cn 'user%d' --last 1000 ldap://localhost/

BINDベンチマーク

$ lb bind -c 10 -n 1000 -D 'cn=user%d,dc=example,dc=com' -w secret --last 10 ldap://localhost/

このベンチマークでは以下のDNでランダムにBINDリクエストを行います。

cn=user1,dc=example,dc=com
...
cn=user1000,dc=example,dc=com

SEARCHベンチマーク

$ lb search -c 10 -n 1000 -a "(cn=user%d)" --last 1000 -s sub ldap://localhost/

このベンチマークでは以下のようなランダムなサーチフィルターで検索を行います。

(cn=user1)
...
(cn=user1000)

ADDベンチマーク

$ lb add -c 10 -n 1000 ldap://localhost/

このベンチマークでは以下のような1000個のエントリーを10並行で投入します。

dn: cn=${THREADID}-${COUNT},dc=example,dc=com
cn: ${THREADID}-${COUNT}
sn: sn
userPassword: secret

–uuidオプションをつけることでcnにUUIDを指定できます。

MODIFYベンチマーク

$ lb modify -c 10 -n 1000 --attr sn --value modified ldap://localhost/

このベンチマークは以下のようなランダムなDNに対してのSN属性を変更するベンチマークを実行します。

cn=0-0,dc=example,dc=com
...
cn=9-999,dc=example,dc=com

Recent Entries

認証器としてのキーボード

Using LDAP directory for FIDO 2.0

パスポートのセキュリティ

55億円詐欺と本人確認

マイナンバーカードでPAM認証

マイナンバーカードでmacOSにログイン

マイナンバーカードでSSHする

Python Flaskでつくる LDAPログインページ

GitHub EnterpriseとLDAPで認証連携する

PythonでLDAP Persistent Search

Hot Entries