標題通り。あくまでお試しのレベル。バージョンは現在の最新12から1つ落として11を試用。主な目的は「自前のWebアプリとSAML連携」及び「Google AppsとSAML連携」。

  • OSはCentOS7、Javaは標準添付のjava-1.7.0-openjdkを使用。Javaは標準品のインストールが推奨されてるが、とりあえずインストールはできて、今のところ不具合らしいものは発生していない。なおCentOS6.5付属の古いopenjdkではダメだった。なおtomcatも標準添付品を使用。
  • インストールはネット上で確認できる方式でほぼ問題なし。名称が「opensso」だったりするところを「openam」にするなどの細かい違いはある。
  • 待ち受けポートとかはTomcatの 設定に依存する。ちゃんとKey設定すればhttps通信も可能。なお標準に近い設定でhttps/8443にて稼働させようとする場合、うっかりhttpdが標準設定で起動してるとnss.conf上で同じ8443で待ち受ける設定が入っており、起動順でこっちが優先になってるためいくら設定変えても起動しないとゆー現象に見舞われる(た)。
  • OpenLDAP連携しようと思う場合:
    •  データストアに「汎用LDAP」設定で登録する。
    •  もし既に自前のLDAPがある場合、ある程度DN値やらマッピング設定やらすればとりあえずOpenAM上で認識するようになり、最低限のユーザ情報も取れる/書けるようにはなる。
    •  ただしここでSAMLによるSSO連携したい、という話になった場合、アカウントのアクティヴ設定だとかSAMLの一時データだとかで実はかなりの数の非標準属性値が必要になる(認証だけだったら少なくて済むかもしれないが)。既存の属性に対するキーマッピングでいけるのかもしれないが、いちいち検証するのも面倒なのでそれ用のスキーマを取り込んで属性を使えるようにした方が早い。
      • →Githubとかにスキーマを上げてくれてる方がいらっしゃった。「openam openldap ldif」とかでググると見つかるんじゃないでしょうか。OpenLDAPへの取り込みについては各自で。
      • →多分OpenAMと同時にインストールされ、テスト用?のデフォルトデータストアとなってる「OpenDS」のスキーマをOpenLDAP用に取り込ませるのが一番確実だろうとは思われる。
      • →OpenLDAPで属性追加後、管理コンソールから対象となるLDAP(データストア)設定にユーザ属性を追加してくわけだが、基本的にデフォルトデータストア「embedded」の設定にある属性値と追加した属性値を比較して、存在するものを入れていく。…一行ずつだととてもめどいのでCLIである「ssoadm」とか使った方が楽かもしれない。
      • →ここまで来ると、OpenAMから新規追加すれば必要なobjectclassと属性値を備えたユーザが作成される。既存のユーザはそれ見ながらobjectclassやら属性やら追加するのが良いんじゃないでしょうか。
  • 標準で存在するトップレベルのレルム「/」。ここに記述してあるDNS/エイリアス設定から、ホスト名のFQDNを削除すると、そもそも管理画面にログインできなくなって大変困る(※実はこのDNS/エイリアス設定の意味をよくわかっていない)。当然管理権限でアクセスできないので変更すらできないわけだが、やはりCLIの管理ツール「ssoadm」で強制的に叩きこむ事は可能。
    • コマンド例:ssoadm set-realm-attrs -e / -s sunIdentityRepositoryService -u amadmin -f ./pass.txt -p -a sunOrganizationAliases=[そのFQDN]
  • そんなこんなでいざとゆー時にはssoadmに頼る事になる可能性があるのでインストールしとくが吉。Web系とは別にインストールする必要がある。インストールマニュアル参照。
  • ログインページのカスタマイズは主に以下のファイルを編集する(パスは多少異なる可能性あり)。なおいずれもトップレベルレルムの場合。実際はレルム毎に複製される、のか?
    • /var/lib/tomcat/webapps/openam/config/auth/default/Login.jsp
      • →jsp本体。
    • /var/lib/tomcat/webapps/openam/config/auth/default_ja/DataStore.xml
      • →日本語用のテキストとかが入っている。ログインページの「OpenAMへのサインイン」とか文言の変更が可能。
    • /var/lib/tomcat/webapps/openam/css/new_style.css
      • →単にCSS。背景画像とかの調整に用いる。なおCSSファイル名は変わる可能性あり。
  • 自前WebアプリとのSAML連携について:
    • IdPをOpenAMで構築、SP側は「simpleSAMLphp」をZendFrameworkに喰わせる形で構築。標準的なIdP、SP設定でほぼ問題なし。というかその他詳細不明。
  • Google AppsとのSAML連携について:
    • 設定自体は管理コンソールのトップページにある「Google Appsとの連携」に従えば拍子抜けするほど簡単に終わる。もちろん細かい制御をしようと思ったらまた別だろうが。
    • Apps側の特権管理者はSAMLの配下には置かれない(自前認証)。確かにある検証ドメインではそのように動作するのだが、別のドメインで一時的に特権管理者もSAML連携するようになってた時があった。1日経ったら自前に戻ってた。謎。
    • POP&IMAP、Androidとの同期についてはSAMLの影響を受けない。そっちは普通の管理制御、管理API経由等で別に制御する必要がある模様。
    • SAMLサーバ側のアクセスURLがhttpになるかhttpsになるかはIdP登録時の管理コンソールにどっちで入ってるかに依存する。ただしあくまで表面上の話であり、例えばhttp/8080で作った(Apps側にもそれで登録した)後にhttps/8443通信を有効にした場合でも、Apps側に登録するURL設定をhttp/8443に書き換えるだけでフツーに動作してくれる。



 継続して調査中。

2014-09-04 [技術・作業]

 試用していたCloudStack4.0.2がある程度落ち着いたので、最新版での運用が可能か今度は4.2の検証をしてみた。というかしている。まだやり切れてるわけではないけど取り敢えず現状で把握したことなど。なお例によって間違いや嘘が交じる可能性があるのでご注意。
 なお環境としては引き続きCentOS6.4のKVMベース。NICが2枚あるPCサーバ3台(管理x1 ホストx2)で構築。ホストは2枚のNICのそれぞれにIP持ちのブリッジcloudbr0、cloudbr1を設定(つまりインストールマニュアルとはNIC構成が異なる)。

  • 基本的な雰囲気は4.0系列と同じような感じ。それほど違和感なく進められる。
  • 名称、コマンド等が「cloud~」から「cloudstack~」に変更。初期DB投入スクリプトが「cloudstack-setup-databases」になったのとか。
  • システムVMイメージのダウンロードURLが4.0系列からは変更されてる。まあマニュアルに従ってインストール進めてれば問題なし。
  • 4.0系列では「yum install cloud-agent」でKVM関係までインストールされた(ような気がする)が4.2だと入らない模様。別途「yum install kvm」で追加する。
  • 4.2に限ったことではないが、自動で入るiptablesの状況(ブリッジに対するFORWARDのDROP等)次第ではシステムVMが外部にアクセス出来ない事がある。しかもそのiptable設定が入るタイミングがよくわからない。(投入直後は大丈夫だったのに翌日になったらダメになってたとか)
→投入タイミングは色々ある模様。例えばマイグレーションを行なった時に受けた側のホストはiptablesの設定が書き換わる。
→iptable設定を書き換えるスクリプトは「/usr/share/cloudstack-common/scripts/vm/network/security_group.py」である模様。
 上記ファイルの下記をコメントアウトすればブリッジに対するFORWARDのDROP処理は停止する。
→もちろんこれがセキュリティ的に、且つどの環境でも正しいかは不明。無条件許可が正しいとは思えない一方で、ブリッジはいわばスイッチだから無条件で止められても困るよなぁと。
  • 手動で入れる主なiptables設定は管理・ホスト側とも4.0系列と同じ。
  • ホスト投入直後だとシステムVMを含むインスタンスの作成にコケるのも一緒。もうクラスタにホストを追加したらagent、libvirtdは再起動するのはデフォにした方が良い気がしてきた。
  • ひと通りゾーンの基本設定を終えた後にじゃあホストを追加しようとしたところ「Guid is not updated for cluster with specified cluster id; need to wait for hosts in this cluster to come up」とゆーエラーが出て追加が出来なかった。
→とりあえず原因を突き詰めると、当該クラスタの情報テーブル「cluster」の「guid」が「NULL」なっていることが原因の様子。
→このguidはクラスタ生成直後はNULLで、その後ホストを追加するとよくあるランダムげなidが投入される。どこか別のテーブルとリンクしてるかは不明。とりあえず「host」テーブルとリンクしてる箇所はない模様。
→どうもこのguid、初期のホストの作成に失敗→その後手動で再設定や強制接続を行なってホストを有効にした場合は入ってくれないらしい。
→初期ホスト投入時のみNULL値を無視すると思われる。その後は「ホスト投入が完了してない」と判断して上記エラーが出る、のか。
→とりあえず暫定的な手法として、当該クラスタのguiidになんでもよいので適当な値を代入しとけばこのエラーは出なくなりホストの追加が可能になる。ぶちゃけ以下の状態でも可。
   update cluster set guid='a' where id=[当該クラスタのID]
→もちろんこんなのが良いとはとても思えない。なんかリンクしてるところがあるならそこから引っ張ってきたいし、そうでないにしても従来のフォーマットに基づいた値を投入したいところ。
→あるいは 「初期状態」と判定させられれば良いのだろうが、それを判定しているフラグはテーブル内にはなさそう。詳細はプログラムを追わなければわからないか。
→なおこのguidは特にその後の操作(更なるホスト追加等)で上書きされることはない。
→ただし、クラスタ内から全てのホストを削除するとまたNULL値が入る。こうなるとまた同じエラーが出てホストの追加が出来なくなる。こうなったらクラスタも消して再作成した方が多分速い。

2013-12-10 [技術]

 タイトル通り。久々に技術ネタ。とあるシステム一群をKVMで構築するに当たり管理性の向上を目的として導入を検討。OpenStackじゃないのかとゆー話もあるわけだが、構築後に扱う人間がCloudStackベースの商用サービスを使った経験があったので。
 バージョンは参考として購入した「CloudStack徹底入門」がベースとしている4.02を使用。またハイパーバイザは上述の通りKVMを前提。当然間違いや嘘が混じっている可能性があるので注意。


  • インストールはリポジトリを追加した上でyumのみで可。ただし各関連アプリやOS、セキュリティに対する設定変更が必要。なおyumは重いw
  • 一般的には構築に必要なサーバは「最低2台」と言われる。CloudStackそのもので言った場合、管理用の「management」とハイパーバイザに入る「agent」の2種類があるため。この2つを1台のサーバにインストール・設定できれば1台でもいけそうな気はするが未確認。
  • 構築後、「ゾーン」と呼ばれる管理領域単位で物事を進めていくことになるのだが、その中で幾つか役割の異なるネットワーク(セグメント)を設定していくことになる(パブリック、ゲスト、管理、ストレージ等)。で、最初コレを全て同一のセグメント(IPはずらした)で構築しようとしたのだが、どうもそうすると「システムVM」が正常に起動してくれない。資料的には「各ネットワークは分けたほうが良い」的な記述があるのだが、分ける以前に単一のネットワークはできないのかもしれない。
  • ただし、上記は構築を始めた初期の頃にハマってた話なのでちゃんと作れば大丈夫な可能性も。結構システムVMは他の場合でも上手く起動しないことが多かった。
  • インストール直後、まずゾーン作成ウィザードから諸々を作成するのだが、どうも「インストール直後の一発目は『ホスト』作成に失敗する確率が高い」模様。agent及びlibvirtdの初期状態から最初の設定投入が上手く反映されてないような気がする。ホスト作成のパラメータに間違いがないのにホスト作成で止まる場合は一度諦めてキャンセル。それでも管理画面的にはホストが作成されてるよーに見えるので、その状態で「agentを停止→libvirtdを再起動→agentを起動」してから管理画面のホスト情報から当該ホストの「強制再接続」もしくはホストの再作成を行うと上手くいく場合がある。その後プライマリストレージ、セカンダリストレージを手で作成する。
  • 下記に述べた設定変更とかを行う場合、管理画面から「ゾーンの無効化」を行なってからにする。こうしないとシステムVMの破棄とかが出来ない。
  • 「システムVM」。CloudStack環境を実現するために自動で生成される仮想マシン群。主だったところでは作成された仮想OS(インスタンス)の画面を擬似的にWebで表示するための「コンソールプロキシVM」と、セカンダリストレージを管理する「セカンダリストレージVM」があるわけだが、設定のバランスで、特にセカンダリストレージVMが起動に失敗し、消滅→自動再作成を繰り返す場合がある。とりあえず私の対処方法は以下の通り。
  1.  agent→libvirtdの再起動。特にagentのログに「x-xx-xxのcgroupを作成できません:そのようなファイルやディレクトリはありません」とゆーログが延々と出る場合はコレでなおる可能性がある。
  2.  プライマリストレージのマウント状態の確認。色々設定をいじったり再インストールを行なったりする中で、agentがプライマリストレージをマウントしっぱなしの場合がある。その状態でゾーンを一から再作成しようとするとagentが新たにマウントを試みる段階でエラーとなる。同じ所を同じ名前でマウントするんだからそのまま進んでくれれば良さそうなものだが、どうも「マウントできなかった」事自体をエラーと捉えるようで先に進んでくれない。ログに「ファイル '/mnt/[長ったらしいID]' を開けませんでした: そのようなファイルやディレクトリはありません」と出つつ、「df -h」でそのフォルダがマウントされている場合にこの可能性が高い。なお単純にマウント先に問題があっても同じログが出ると思われるので注意。
  • またセカンダリストレージVMが起動していても「テンプレートに標準テンプレート(CentOS5.5)が表示されない」「表示されてるんだけど利用可能状態にならない」と場合がある。こうなるとISOの登録もできない場合が多い。この場合原因はネットワーク設定にある可能性が高い。
  1.  セカンダリストレージVMが外部(インターネット)とアクセスできない場合:特に標準テンプレートは最初にインターネットからダウンロードできる必要があるため、パブリックネットワークの設定に問題があると先に進んでくれない。この場合初期データとして標準テンプレートの情報はあるため「表示されてるんだけど利用可能にならない」状態になる。セカンダリストレージVMからでもインターネットにアクセスできるIPが割り振られるようにすると解決する。(ただISOの登録はこの状態でもできるかも)
  2.  いわゆる「ストレージネットワーク」の設定が間違っている場合:KVM構成の場合、事前にハイパーバイザ側のネットワークにブリッジ(cloudbr0、cloudbr1等)を構築し、各ネットワークに割り当てることになるのだが、このブリッジを複数設定し、パブリックや管理・ストレージを分離しようとした場合に、各ネットワークに対するこのブリッジを正しく設定しないと対象ネットワークへ流すべきインターフェースが異なる事になり、通信ができない状態となる。まずは各ネットワークとブリッジの関係が正しいか確認する。また、何らかの理由で「管理画面から設定した後にホスト側で『cloud-setup-agent』コマンドをノーオプションで実行」すると、基本的にはその時のagent.propertiesの内容を元に再設定してくれるのだが、本来「guest」「private」「public」に分かれているネットワークデバイスの設定を1つにまとめてしまう。この場合一度システムVMを破棄した上でagent.propertiesの値を正しいものに変更した上でゾーンを再起動する。
  • システムVM系が正常に動かないとコンソールVMが動かない場合もあり、その場合セカンダリストレージVMとかの詳細設定も見えないのだが、とりあえず起動に成功していれば、各システムVMが稼働しているホスト上から以下のSSHでログインする事が可能。特にネットワークの不通系エラーを把握するのに有効。
 ssh -i /root/.ssh/id_rsa.cloud -p 3922 [ローカルリンクアドレス]  ※ローカルリンクアドレスは各システムVMの詳細設定から確認可能
  • 初期設定でシステムVM用のイメージをダウンロードするとゆー作業が入る。これは一度ダウンロードすれば(nfs的な置き場所さえ同じなら)何度再インストールしてもそのままで可っぽい。(再ダウンロード不要)
  • iptablesについて。インストールマニュアルに初期設定があり、また自動で色々と追加設定してくれるのだが、初期状態だとまずコンソールにつながらない。また作成したインスタンス(ゲストネットワーク)にもつながらない。ただし動作しているホストからは繋がる。ぶちゃけiptablesを停止すれば当然繋がるのだが、とりあえず以下の設定を停止させれば繋がるようになる。KVMの場合、そのブリッジを経由した通信になるので下記の設定を入れられるてはそりゃ繋がるワケがない気がするのだがどうか。どうもKVMデフォルトの「virbr0」を元に設定変更しようとしている?
 -A FORWARD -o cloudbr0 -j DROP
 -A FORWARD -i cloudbr0 -j DROP
  ※「/etc/sysconfig/iptables」内記述。なおcloudbr1以降を設定している場合それも含む。
  ※ただしセキュリティ的に正しいかは不明。一応拡張NWの設定では正しく防いでいる。
  • グローバル設定について。admin管理画面から閲覧&操作が可能な「グローバル設定」。幾つか特徴的なものを。
  1.  「host」:管理マネージャーのIPが指定されるところ、なのだが、デフォルトだと管理マネージャーサーバのデフォルトゲートウェイが指定されるI/FのIPが入ってしまう模様。管理ネットワーク及びI/Fを別にした場合に、ゾーン作成前に事前に変更する必要がある模様。
  2.  「expunge~」:Cloudstackの場合インスタンスを削除しても一定期間残して復帰ができる。デフォルトだと1日保存してくれるが、試験や仮構築の段階でこんなに残されても困るだけである。「expunge」で検索かけて引っかかる設定のうち「86400」となってるものを適宜変更すると吉。
  3.  その他「物理リソースに対してインスタンスに割り当てられる量」とかあって、これも環境によって厳しい場合があるので必要に応じて調整する。
  • よく「管理とストレージネットワークは同一でも可。でもできれば分ける」みたいな記述を見かけるのだが、上述の通りagent.propertiesを見るとネットワークI/Fの指定方法には「guest」「public」「private」の3つしかない。このうち「private」が管理・ストレージであることは明白なので、仮にネットワークを分けてもI/Fを分けることはできない?未確認。
  • 拡張ネットワーク構築時の「負荷分散」について。仮想ルータが行なってくれる仮想負荷分散。だが物理リソースがいっぱいいっぱいの場合、そもそもソレの稼働自体で結構な負荷となる模様。例えばホストが1台の環境で複数のWebインスタンスを生成し分散設定。ab等で大量のアクセスを投げ込むと、親となるホストのLoad Averageが跳ね上がり処理が遅延する。同じ条件で単一のWebにのみ負荷を集中させた方が軽い。
  • ただし上記はあくまでホスト1台をギリギリまで使うようなキツい環境の場合の話。ホストを2台にすると途端に解消され、負荷分散の効力が出る。もちろんその2台の限界値に近づけば話は別だろうが…。
  • 色々やり直す場合話。試行中は何度も再構築することになると思われる。以下が手っ取り早いと思われる。
  1.  management、agent停止
  2.  agentのマウントを解除
  3.  mysqlにログインし、データベースを消去。「drop database cloud」
  4.  DB構築スクリプトの実行。インストール途中で実行した「cloud-setup-databases」を同じオプションで実行する。
  5.  プライマリストレージ内ファイル、フォルダを削除。セカンダリ内はそのままで可。
  6.  ホストのagent.propertiesの中身をクリア(あるいはコメントアウト)。でも「host」の値は変更がなければそのままにしておいた方が良いかも。
  7.  nfsの再起動。
  8.  libvirtdの再起動。
  9.  management、agent起動
  • 上記の再作成の一環でagent.propertiesの内容を全てクリアしてagentを起動した場合、「/etc/init.d/cloud-agent status」で状態を見ると「停止してるがサブシステムがロック」とかイミフな事を言われるが、management側から再設定コマンドが投げられれば改善するのでとりあえずはシカトが吉。
  • ISOの追加について。ISOイメージの追加時に指定できる場所はURL(Web)限定っぽい。マニュアル等には「場合によってはローカルにおける」みたいな曖昧な書かれ方をしているが、「ローカルに置いたWebサーバ」を意味するのか。
  • 当たり前だがあるゾーンに登録したホストは他のゾーンに指定できない。単一のハイパーバイザサーバを異なるゾーンで共有するマネは不可能。
2013-12-09 [技術]

 もともと開発停止した挙句にOSSに移行して動きが停滞したかと思っていたPoderosa。そのため旧Verを細々と使用していたけれどもちゃんと開発続いてたのね。そして最新の4.3.5bを入れてみたところ前身である「VaraTerm」で可能だった「タブ移動ショートカット」が復活していて歓喜。なんという俺得。
関連タグ:オープンソース
2011-11-09 [ソフトウェア]

 …どーも最近Oracleが絡むと単なる競合潰しのよーな気がしてならない。
2011-01-31 [ソフトウェア]

 ふむ。影響が大きいのかそーでもないのかにわかには判断つかない(苦笑)。H.264でエンコードしたメディアはけっこーたくさんあるが、それをChrome経由で再生する機会がそう多いかと問われると微妙。

 まあいずれYoutubeやらニコ動とかでは問題になる…のだろうか。
2011-01-12 [ソフトウェア]

 JAVAはもうダメかもわからんね。少なくとも今までのようにはいかない…というか既にいかなくなり始めてるよーに思う。
2010-12-10 [技術]

『Doug Lea氏はJCPがOracleの提案する仕様を承認するだけの組織になりつつあると指摘し、今後はJCPを通じての革新的な取り組みは期待できないと表明』

OracleのSUN買収は結果的にほぼ予想通りの「よくない」方向に進んだとゆー事でしょうか。特にJAVA系は例のGoogleとの訴訟問題やらのややこしさもまだ残ってるし、普及率に比例した巨大泥沼展開にならないといいですが。
2010-10-28 [ソフトウェア]

やれやれ面倒な事よな。
関連タグ:オープンソース
2010-09-29 [ソフトウェア]

ほほう。

話は若干違うけど、そろそろこのサイトも色々バージョンアップしたい頃なんだよな。忙しくて中々手がつけられないけど来月くらいから徐々に着手できれば。その中でDBの入れ替えなんかも考えてるわけです。
まあ個人用途では複数サーバ用意する必要があるレプリケーションとかはあんま使う気ないんですけどね。
2010-09-21 [ソフトウェア]