9月 4th, 2012
手段として、いぜ つかのサイトで公開されているようぜ
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ぜ 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
こちらのサイトぜ 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件? に削除。
§ 性能? 証? 果

・処理速度ぜ 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
ソケット接続するプログラムを作成する場合、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
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
?