Surgo

lazy programmer. (simple is better than complex !)

Jan 15, 2010

Google Python スタイルガイド (日本語訳)

今日まで 5 日間実家の福岡 & 長崎に帰省しました。久しぶりの休みだったので、Sphinx テーマ作成、restructured text の復習、英語の勉強、綺麗な Python コードを書けるようになれるように Google Python スタイルガイド を日本語訳してみました。相変わらず英語が残念なので閲覧注意です。

http://works.surgo.jp/translation/pyguide.html

複数行にまたがる文字列でも、インデントを揃えた方が美しい時は非明示的な行継続をする等は知らなかったです。

# Yes:
print ("This is much nicer.\n"
       "Do it this way.\n")

# No:
print """This is pretty ugly.
Don't do this.
"""

たしかに見やすいですね。また、Eclipse では自動的にやってくれていましたが、インポートはジェネリックなものから非ジェネリックな順にインポートとかはついつい忘れがちです・・・。さらに、パスを通すのがめんどくさいので、作成しているモジュール内の特定のクラスをインポートする時はフルパスじゃなくて相対パスで書いてしまったり・・・。後からどうせ書かないといけないんですけどね。さらに、配列を返すよりも Yeild の方がメモリ効率が高いとかも勉強になりました。これは実戦投入したいと思いました。

英語教えてくだしあ ><

Jan 6, 2010

2010 - Happy New Year !

あけましておめでとうございます!いまさらですが ;-) 土日祝日とは無縁の生活をしていると、年末年始なんて気にならなくなってしまいますね (いいわけです)。

2009 年は楽しい 1 年でした。pyspa のおかげさまで仕事につけましたし、公私にわたってなにかと充実していました。改めまして、私をサポートしてくださっている皆様ありがとうございます。2009 年を振り返ってみました。

  • プライバシー・プリザーブド・データマイニングの研究開発 (3 年 PJ を 2 年で離脱)
  • 人生 2 度目のニート生活
  • 千葉へ引っ越し
  • 就職
  • インフラなお仕事 ++
  • やっぱり Web システム開発
  • 初デスクトップアプリ開発
  • フットサル部 (バトミントン部 --) 始動
  • google app engine + python はすごい遊べた
  • android 登場 (java の戦闘力が 1.4 レベルで止まってたことに気づく
    ※ 一応・・・俺俺 notification アプリを作成
  • wave のボットも作ったけどいまいち楽しくなれなかった
  • flob な API (rtm とか flickr とか) に惚れた
    ※ 社内システムとかにも流用
  • 技術系以外の研修や勉強会に参加

そして 2010 年の目標。

  • google nexus one / xperia x10 を手に入れる
  • android アプリをマーケットプレイスへリリースするまで持っていく
  • インフラの勉強 (特に MySQL、キュー、非同期)
  • ネットワークの勉強
  • 英語の勉強も兼ねて、技術ドキュメントを翻訳
  • 月 1 度は勉強会に参加する (技術系以外も)
  • 禁煙

がむばります。今年もよろしくお願いします。

Nov 19, 2009

高可用性ロードバランサーを nginx + heartbeat で作る

ロードバランサーの可用性を高めるために、アクティブスタンバイ構成で、アクティブ系が落ちたらスタンバイ系に引き継げるようにする。

構築環境

  • サーバー機
    • NIC × 2 枚 (推奨 4 枚)
    • RAID: 1, (推奨 0 + 1)
    • 電源ボード × 2 (予算があれば)
    • 仮想化ソフトウェア: VMWare ESXi 4.0
  • 仮想化ソフトウェア (VMWare ESXi 4.0) の設定
    • NIC は 2 枚 1 組でフェイルオーバーするように設定
    • ネットワーク × 2 (NIC 2 枚構成の場合は VLANを作成)
      • VM Network: 既存 (デフォルト)
      • HA Network: 新規追加
  • ロードバランサー用ゲストOS (Ubuntu Server 9.10: 各サーバに1 台ずつ追加)
    • ディスク: 4G程度 (Ubuntu Server の最小ハードウェア要件は 1G)
    • コア数: 2
    • メモリ: 4G
    • ネットワーク × 2
      • VM Network に接続された NIC
      • HA Network に接続された NIC
ネットワーク アクティブ (lb01) スタンバイ (lb02)
eth0 (heartbeat 監視用) 192.168.0.2 192.168.0.3
eth1 (管理用) 172.16.0.2 172.16.0.3
サービス用 172.16.0.1 (実際にサービスを提供する IP)

インストールと設定

  1. パッケージ類のインストール (nginx と heartbeat)
    ロードバランサーとして利用する nginx と、クラスタリングするための heartbeat をインストールする
    sudo aptitude install nginx heartbeat
    
  2. nginx の自動起動をやめる
    sysv-rc-conf などを利用し、各ランレベルでの自動起動を停止しておく
    ※ sysv-rc-conf をインストールしていない場合は以下でインストールできる
    sudo sptitude install sysv-rc-conf
    
  3. hosts ファイルに各サーバを登録する
    sudo vi /etc/hosts
    
    192.168.0.2 lb01
    192.168.0.3 lb02
    
    ※ お互い ping 試験
  4. /etc/ha.d/ha.cf の作成
    テンプレートがあるので、作業用ディレクトリーに複製、及び編集
    監視対象を指定
    sudo cp /usr/share/doc/heartbeat/ha.cf.gz .
    sudo gzip -d ha.cf.gz
    sudo vi ha.cf
    
    コメントを外したり、記入したりなどする
    keepalive 2
    deadtime 30
    warntime 10
    initdead 120
    udpport 694
    ucast eth0 192.168.0.[2-3] # 相手のIPアドレス
    auto_failback on
    node lb01
    node lb02
    use_logd yes
    
    /etc/ha.d/ へ配置する
    sudo cp ha.cf /etc/ha.d/
    
  5. /etc/ha.d/haresources の作成
    これもテンプレートから
    アクティブ系、IP、サービス名を指定
    sudo cp /usr/share/doc/heartbeat/haresources.gz .
    sudo gzip -d haresources.gz
    sudo vi haresources
    
    lb01 IPaddr::172.16.0.1/24 nginx
    
    /etc/ha.d/ へ配置する
    sudo cp haresources /etc/ha.d/
    
  6. /etc/ha.d/authkeys の作成
    これもテンプレートから
    sudo cp /usr/share/doc/heartbeat/authkeys .
    sudo vi authkeys
    
    auth 3
    3 md5 Hello!
    
    /etc/ha.d/ へ配置し、root ユーザからのアクセスのみ許可するようにする (これしてなくて heartbeat 起動時に怒られた)
    sudo cp authkeys /etc/ha.d/
    chmod 600 /etc/ha.d/authkeys
    
  7. lb01 -> lb02 の順で heartbeat を起動
    sudo /etc/init.d/heartbeat start
    
  8. フェイルオーバーの試験とか
    ifconfig とかでeth1:0 に サービス IP 172.16.0.1 が引き継がれていれば成功。

about

friends

archives

Kosei Kitahara.

surgo.jp at gmail.com

hosted at blogger.