9月 4th, 2012

Hadoop(CDH3u4)管理画面をリバースプロキシ? 由で圏 ?

Posted in Hadoop by admin

手段として、いぜ つかのサイトで公開されているようぜ
mod_rewrite、mod_proxy_htmlを利用します。

圏 考:
http://d.hatena.ne.jp/matobat/20100916/1284626356

CDHの管理画面は、コミュニティ版と地 し異なる為、
いぜ つか変更を加えながら確? してみました。
準備作業は以下のようになります。

# yum install httpd-devel libxml2 libxml2-devel
# wget http://apache.webthing.com/mod_proxy_html/mod_proxy_html.tar.bz2
# bzip2 -d mod_proxy_html.tar.bz2 | tar xvf
# cd mod_proxy_html
# apxs -c -I/usr/include/libxml2 -I./ -i mod_proxy_html.c
# wget http://apache.webthing.com/svn/apache/filters/mod_xml2enc.c
# wget http://apache.webthing.com/svn/apache/filters/mod_xml2enc.h
# apxs -c -I/usr/include/libxml2 -I./ -i mod_xml2enc.c

httpd.confには、以? の設定を追加しました。
もっと効? 的な方? があるかもしれません。

# mod_rewrite
RewriteEngine On
RewriteRule ^/namenode/(.*)$ http://(MasterNode_VIP):50070/$1 [P,L,QSA]
RewriteRule ^/jobtracker/(.*)$ http://(MasterNode_VIP):50030/$1 [P,L,QSA]
RewriteRule ^/datanode/([^/]*)/(.*)$ http://$1:50075/$2 [P,L,QSA]
RewriteRule ^/tasktracker/([^/]*)/(.*)$ http://$1:50060/$2 [P,L,QSA]

Header edit Location ^http://(MasterNode_VIP):50070/(.*)$ /namenode/$1
Header edit Location ^http://(MasterNode_VIP):50030/(.*)$ /jobtracker/$1
Header edit Location ^http://([^:]*):50075/(.*)$ /datanode/$1/$2
Header edit Location ^http://([^:]*):50060/(.*)$ /tasktracker/$1/$2

# mod_proxy_html
LoadFile      /usr/lib64/libxml2.so
LoadModule    proxy_html_module       modules/mod_proxy_html.so
LoadModule    xml2enc_module          modules/mod_xml2enc.so

ProxyHTMLEnable On
#ProxyHTMLLogVerbose On
ProxyHTMLURLMap ^http://(.*):50070/(.*)$ /namenode/$2 [R,x,l,e,c]
ProxyHTMLURLMap ^http://(.*):50030/(.*)$ /jobtracker/$2 [R,x,l,e,c]
ProxyHTMLURLMap ^http://(.*):50075/(.*)$ /datanode/$1/$2 [R,x,l,e,c]
ProxyHTMLURLMap ^http://(.*):50060/(.*)$ /tasktracker/$1/$2 [R,x,l,e,c]
ProxyHTMLURLMap ^http://(.*):50060$ /tasktracker/$1/ [R,x,l,e,c]
ProxyHTMLURLMap ^/static/(.*) /namenode/static/$1 [R,x,l,e,c]
ProxyHTMLURLMap ^/nn_browsedfscontent.jsp /namenode/nn_browsedfscontent.jsp [R,x,l,e,c]
ProxyHTMLURLMap ^/logs/$ logs/ [R,x,l,e,c]
ProxyHTMLURLMap ^/logs/(.*)$ $1 [R,x,l,e,c]
ProxyHTMLURLMap ^/dfshealth.jsp /namenode/dfshealth.jsp [R,x,l,e,c]
ProxyHTMLURLMap ^/jobdetails.jsp(.*)$ /jobtracker/jobdetails.jsp$1 [R,x,l,e,c]
ProxyHTMLURLMap ^/taskgraph(.*)$  /jobtracker/taskgraph$1 [R,x,l,e,c]
ProxyHTMLURLMap ^/taskstats.jsp(.*)$ /jobtracker/taskstats.jsp$1 [R,x,l,e,c]
ProxyHTMLURLMap ^/taskstatshistory.jsp(.*)$ /jobtracker/taskstatshistory.jsp$1 [R,x,l,e,c]

また、MapReduce、Shuffleのグラフ表示ぜ embedタグのリンク部分を
書き朏 える為、proxy_html.confへの追記も行っています。

ProxyHTMLLinks  embed           src

画面アクセス時は、/namenode/、/jobtracker/のようにアクセスします。
また、スレーブボ ードぜ IPアドレスは、リバースプロキシで名前解決できるようぜ
hostsに登録しています。

7月 25th, 2012

pssh & capistrano、ssh+sudo

Posted in Admin by admin

psshぜ sudoする場合、以? のようにコマンドオプションを指定する。

$ pssh -P -x '-tt' -h hosts.txt  "sudo whoami"

-xぜ sshにコマンドオプショボ ‘-tt’を付加し、仮想端末を割り当てる。
‘-t’ではなぜ ‘-tt’にすることでローカル側での端末を持っていない場合でも
強制的に割り当てる事が可能。

または、/etc/sudoersぜ “Defaults requiretty”を
コメントアウトしぜ sudoを許可するが、パスワードが
端末に表示されてしまうので? しぜ ない。

capistrano場合は、以? の? 義を追加する。

set :default_run_options, :pty => true
3月 28th, 2012

NoSQLパフォーマンス? 較

Posted in NoSQL/KVS by admin

こちらのサイトぜ MySQL(HEAPエンジボ )ぜ memcachedの速度? 較を実施しています。
http://blog.asial.co.jp/220

追加でその? ぜ NoSQLソフトウェアとの? 較も実施しました。
とりあえずNoSQLは初めてなので、上っ面だけで深く突っ込んで調査しない。(最初に宣言)
検証サーバは、仮惜 CPUコア×4、メモボ 4Gの仮想サーバ上で? 施しています。

§ 性能? 証方?
NoSQLデータベースに対し、100,000件のレコード挿入、検索、削除を実施する。
・挿入するレコードは、Keyにループ回数ぜ MD5ボ ッシュ? ()、Valueぜ CRC32チェックサム値。
・? 索は、Keyを検索条件にしぜ Valueを圏 得。圏 得したデータはメモリに格? するだけでが出力しない。
・削除は、TRUNCATEのような処理ではなぜ 、Keyを検索条件にしぜ 1件? に削除。

§ 性能? 証? 果
nosql_perf
・処理速度ぜ 3回の平均値を表示
・使用したJDKバージョンは「1.6.0_20」
・各ソフトウェアで確保したメモリは? 3GB

§ まとめ
ボ memcachedは、MySQLぜ HEAPエンジンと? 較しても高速。
ボ TokyoCabinet/TokyoTyrantは、memcachedとほぼ同等の処理速度。データ永続性がある為、ディスク書き込みが発生する。ただし、それ程サーバ負荷は? ぜ ないので、フロントアプリケーション側で利用するKVSソフトウェアとしては適していると思゜ れる。
ボ MongoDBは、スキーマレスのデータベースなのぜ RDBでいうテーブル? 義が不要なのが非常に楽。また、memcachedよりも挿入、検索スピードが速いが、1件削除が異常に遅い。(要調査?
ボ Cassandraは、比較的高速ではあるがディスクぜ flushされた後の? 索処理が遅い。Hadoopとの親和性もある為、オンライン処理ではなぜ 、バッチ処理用途が向いている。
ボ VoltDBがなぜか遅い。(要調査?

§ 要追加調?
ボ MongoDBの削陜 (remove)が異常に遅い
ボ VoltDBの処理が異常に遅い。hprofでは以下のメソッドぜ 65%占めている。

java.lang.Object.wait
sun.nio.ch.EPollArrayWrapper.poll
java.util.concurrent.locks.LockSupport.park
sun.nio.ch.SocketDispatcher.read

ボ 100,000件だけではなぜ 、処理件数によってどう性能が変゜ るのかという特性も確かめる必要があるかもしれない。

9月 4th, 2011

ESTABLISHEDセッションが残り続ける

Posted in Linux by admin

ソケット接続するプログラムを作成する場合、setsockoptを使用しぜ TCP接続ぜ keep-aliveパケットを送るようにする。これをしないと、接続中ぜ LANケーブルが抜けた場合などぜ ESTABLISHED状態のセッションが残り続ける事になる。netstat -aonコマンド(–timers)ぜ keepaliveのタイマーを閲覧できる。(最後のカラムがTimer)

keep-alive適用前

tcp 0 0 0.0.0.0:80 192.168.100.1:52549 ESTABLISHED off (0.00/0/0)

keep-alive適用?

tcp 0 0 0.0.0.0:80 192.168.100.1:40201 ESTABLISHED keepalive(1767.52/0/0)

以? のようぜ keep-aliveパケット送信を有効にする。

#define CONN_SO_KEEPALIVE 1
?
on = CONN_SO_KEEPALIVE;
setsockopt( lsock->iom->fd, SOL_SOCKET, SO_KEEPALIVE, (void*)&on, sizeof(on) );

keep-aliveを最初に投げ始めるまでの時間、keep-aliveパケットを投げる間隔、keep-aliveパケットを投げリトライする回数などの指定は、カーネルパラメータにて設定する。

net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9

元のプログラムの? 更なしぜ glibcベースのバイナリ動的実行可能ファイルぜ TCPキープアライブ機能を有効ぜ libkeepaliveというライブラリもあるようです。
http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/

6月 3rd, 2011

LVSぜ FTP/FTPS負荷分?

Posted in LVS by admin

FTP/FTPSの? 荷分散朧 成 設? 例です。
LVS(ipvsadm)を管理にするツールとして、
ultramonkey(ldirectord)を使用した例になります。

FTPは制御、データコネクショボ 2つを扱うマルチポートなプロトコル? 様となっている為、
他のプロトコルと同じ構成では動作しない部分が多いです。
FTPぜ PASVモードを使用することを前朏 としています。

カーネボ

# uname -r
2.6.18-194.32.1.el5xen

モジューボ (ip_vs_ftpはロードしていない。kernel2.6.xでは? 要?)

# lsmod | grep ip_vs
ip_vs_wlc	34881  2
ip_vs		122241  4 ip_vs_wlc

# lsmod | grep iptable
iptable_filter	36161  1
iptable_mangle	36033  1
iptable_nat		40773  1
ip_nat		53101  1 iptable_nat
ip_conntrack	91621  3 ip_conntrack_netbios_ns,iptable_nat,ip_nat
ip_tables              55201  3 iptable_filter,iptable_mangle,iptable_nat
x_tables               50377  6 iptable_nat,ip_tables,ipt_LOG,xt_MARK,xt_tcpudp,xt_multiport

パケットの転送許圏

# grep ip_forward /etc/sysctl.conf
net.ipv4.ip_forward = 1

ldirectord設? (バーチャルサーバの? 成、プロトコルぜ tcpではなぜ fwm)

# cat /etc/ha.d/ldirectord.cf
?
virtual  = 21
        real = 192.168.0.10:21 masq 10
        real = 192.168.0.11:21 masq 10
        scheduler   = wlc
        checktype   = connect
        protocol    = fwm
        persistent  = 600
?

# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  21 wlc persistent 600
  -> 192.168.0.10:21               Masq    10     0          0
  -> 192.168.0.11:21               Masq    10     0          0
?

iptables設? (制御コネクションポート21とデータコネクションポート30000-40000を同じファイアウォールマー゜ “21″で関連? ける)

# iptables -t mangle -A PREROUTING -p tcp -d 207.175.44.110/32 --dport 21 -j MARK --set-mark 21
# iptables -t mangle -A PREROUTING -p tcp -d 207.175.44.110/32 --dport 30000:40000 -j MARK --set-mark 21

# iptables -L -n -t mangle
Chain PREROUTING (policy ACCEPT)
target     prot opt source        destination
MARK       tcp  --  0.0.0.0/0     207.175.44.110    tcp dpt:21 MARK set 0x15
MARK       tcp  --  0.0.0.0/0     207.175.44.110    tcp dpts:30000:40000 MARK set 0x15
?