アプリケーションエンジニアでもわかる Docker と Mesos 勉強会 https://sakura-kanto.doorkeeper.jp/events/53777 2016年11月18日(金) 発表資料 本スライドの想定は 「 Mesos って聞いたことあるけど、よくわかんない 」 「 Apache Mesosって何だ? 」 といった疑問を持つ読者であり Mesos の概念や背景を知るための資料ですRead less
Go 言語で Apache Bench (ab) を実装してみた。 https://github.com/takatoshiono/go-ab なぜか 以前、wc コマンドを実装した。その時に ab も候補に入っていたけど、ab は http 通信をするプログラムなので、より単純な wc を選択したのだった。その次に何やるか、ということで http クライアントのコードを書く練習になりそうな ab を実装してみることにした。 期間は2016年10月から1ヶ月くらいやったあと、2ヶ月くらいブランクがあって、2017年1月に再開して一ヶ月くらいやっていた。コツコツとよく続いたと思う。 Apache Bench (ab) とは Apache Bench (ab) は HTTP サーバーの性能を測定するためのプログラムでシングルスレッドで動作する。Apache HTTP サーバーのソースコードに含
その対処で全部に対応するのは無理なんじゃないの? Watermark、Trigger、Accumulationの機構が導入されればストリーム処理は全て対応可能かというと、 そんなことはありません。 何故なら、下記のような問題が発生してくるからです。 Watermarkを実時刻からどれくらい遅らせて設定すればいいのか? 遅れを大きくすれば正確性は増しますが、遅延時間は大きくなります。 Accumulationのためにウィンドウの集計結果をどれだけ保持すればいいのか? 保持する時間が長いほど、ストリーム処理を行うシステムのリソースが必要となります。 データ処理システム(バッチ、ストリーム含む)には下記の3要素のトレードオフがあるとされています。 完全性(Completeness) 低遅延(Low Latency) 低コスト(Low Cost) この3要素を全てに満たすことは出来ず、全てのデータ
2. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 2 自己紹介 所属 • Acroquest Technology Co., Ltd. • 「働きがいのある会社」(GPTW) 従業員25~99人部門 2年連続1位 主な業務分野 • テクニカルアーキテクト • SEPG • IoTサービス開発 • ビッグデータ処理プラットフォーム 最近の興味 • サーバーレス • DevOps • Elasticsearch 鈴木 貴典 Twitter : @takanorig Qiita : http://qiita.com/takanorig 3. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3 本日お話する内容 #1 ビッグ
github.com 会社の運用メンバーと色々議論していた中で、「カジュアルにWebサーバへのDoSみたいなアクセスが来た時に検知して制御したいよねー」という話が上がったので、http-dos-detectorというnginxでもapacheでも使えるWebサーバ拡張をmrubyで書きました。 もちろんmrubyなので、mod_mrubyとngx_mrubyを使っています。ので、Rubyコードはそのまま同じコードをどちらのミドルウェアでも使えます。mod_mrubyとngx_mrubyを使えば、ちょっとしたWebサーバの拡張は両方で同じ実装に落とし込めるので便利ですね。 使い方 例の如く、GitHubのREADME通りにインストールして下さい。Rubyのコードはmod_mrubyでもngx_mrubyでも有効なので、そのコードを読み込む設定をそれぞれ以下のように記述するだけでよいです。 a
Apacheのmod_statusを使えば各プロセスの状態を知ることができます。CloudForecastやCacti等でそれを元に視覚化している人も多いと思います。 mod_statusで確認できる状態には以下の11種類があるのですが、 状態名 値 mod_stautsでの記号 説明 SERVER_DEAD 0 . Open slot with no current process SERVER_STARTING 1 S Server Starting up SERVER_READY 2 _ Waiting for connection (or accept() lock) SERVER_BUSY_READ 3 R Reading a client request SERVER_BUSY_WRITE 4 W Processing a client request SERVER_BUSY_
ニフティクラウドでサーバを数台、手配していたのですが、諸事情で3月末までに返却しないといけなくなってしまいました。 ということで返す前に、ニフティクラウドに攻撃している悪い人たちと、さくらのVPSに攻撃している悪い人たちとを比べるとどうなのか……をちょっと見てみます。前回の「ニフティクラウドに来る悪い人を観察する、の取っかかり」の続きです。 環境 2/1から3/21までの期間、データ取得をおこいました。用いたVM環境は、以下の表の通りです。 ニフティクラウド さくらのVPS サーバの場所 西日本(WEST-1) 石狩 IPアドレス 175.184.19.124 153.120.5.227 OS CentOS 6.4 (64bit) CentOS 6.5 (64bit) Apacheバージョン 2.2.15(標準RPM) 2.2.15(標準RPM) なおApacheについては、mod_rew
shibには認証機能は無いのですが、認証をつける必要が出てきたりします。 固定パスワードによるBasic認証であればexpress.basicAuthを使えばいいらしいというのはわかったので対応してpull requestでも出すかーとか思ってました。 で、でもですね、誰がどういうクエリを投げたのかロギングしたいなんていう独自要件が出てきましてこりゃLDAP連携が必要だなあという話になりました。 なので、ApacheでリバースプロキシしてかつLDAP連携してshibに認証かけたりなんかしました。 どんな感じでやるかというとこんな感じです。 mod_authnz_ldapを使ったときのユーザ名の扱いについて - たごもりすメモ こうすればバックエンド側のshibでx-forwarded-userヘッダにユーザ名が渡ってきます。 あとはこいつをロギングすればOK。 log4jsなんていうモジュ
昨夜に、魔法少女アパッチ☆マギカ攻撃を観測しました。魔法少女アパッチ☆マギカとは、PoCのソースコードに Apache Magica by Kingcope とコメントされていることに由来しています(というか、私がそう訳しましたw)。 これは10月29日にPoCが発表されたPHP-CGI攻撃(CVE-2012-1823)の変種です。従来のPHP-CGI攻撃は、CGI版PHPが動作する環境で、PHPスクリプト(中身はなんでもよい)に対する攻撃でしたが、魔法少女アパッチマギカの方は、/cgi-bin/に置かれたPHP処理系(php-cgiなど)に直接攻撃するものです。 CGI版PHPを設置する方法は複数ありますが、よく使われる方法としてApacheのリダイレクトによりPHPスクリプトをPHP処理系に実行させる方法があります。この場合、/cgi-bin/php-cgiなどとしてPHP処理系を公開
こんにちは。 Kafkaを試している最中で微妙ですが、最近使えるのかなぁ、と情報を集めているのが「Apache Spark」です。 MapReduceと同じく分散並行処理を行う基盤なのですが、MapReduceよりも数十倍速いとかの情報があります。 ・・・んな阿呆な、とも思ったのですが、内部で保持しているRDDという仕組みが面白いこともあり、 とりあえず資料や論文を読んでみることにしました。 まず見てみた資料は「Overview of Spark」(http://spark.incubator.apache.org/talks/overview.pdf)です。 というわけで、読んだ結果をまとめてみます。 Sparkとは? 高速でインタラクティブな言語統合クラスタコンピューティング基盤 Sparkプロジェクトのゴールは? 以下の2つの解析ユースケースにより適合するようMapReduceを拡張
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ある人「あなたのやりたいことはなんですか?」 僕「複数あるWebサーバソフトウェアの拡張記述を統一したいです」 ある人「(それはさすがに無理だろ…)」 という感じで始まったmod_mrubyやngx_mrubyの開発ですが、今ではそれも夢では無い所まできています。当時は「mod_mrubyを作ってみようか」という記事からmod_mrubyの開発ははじまりました。 朧げにあったアイデアでは、「どうやって統一するのか?どんな言語にするのか?どうやって組み込むのか?え?そもそもそんな事無理では?」という感じでしたが、1年前に運良くmrubyがGitHubで公開されて以来、色々なアイデアのピースがはまっていき、いつの間にかそのアイデアが形になろうとし
HTTPとは? HTTPのサンプル メッセージ構文 リクエスト行 レスポンス行 メソッド ステータス番号 ヘッダ Accept (要求) Accept-Charset (要求) Accept-Encoding (要求) Accept-Language (要求) Accept-Ranges (応答) Age (応答) Allow (要求/応答) Authorization (要求) Cache-Control (要求/応答) Connection (要求/応答) Content-Encoding (要求/応答) Content-Language (要求/応答) Content-Length (要求/応答) Content-Location (要求/応答) Content-MD5 (要求/応答) Content-Range (要求/応答) Content-Type (要求/応答) Date (
Keep-Aliveがなかった当初のHTTPはシンプルだった。ステートレスで単純。それはとてもよいことだけど、遅かった。そこでKeep-Aliveが発明された。 HTTP/1.0 HTTP 1.0 では、keep-aliveの仕様はなくて、後付けで実装された。 もしブラウザがサポートしているならこんなリクエストを送る。 Connection: Keep-Alive そしてサーバーもこう返す。 Connection: Keep-Alive そして、接続を捨てずに、再利用して、サーバーかクライアントのどちらかがやり取りを終了したとして接続を破棄するまでこれを続ける HTTP/1.1 HTTP 1.1 では、すべての接続がkeep-alive。 次のようなヘッダが送信されない限りは keep-alive。 Connection: close なので、Connection: Keep-Alive
Apacheでreverse proxyするときに、バックエンドは同じなんだけど受けるパスに応じて別なタイムアウト値を設定しようとしてハマったのでそのメモです。 以下、Apache 2.2.22 でのお話です。2.4でどうなってるか、どなたかご存知でしたら教えてください>< まず思いつくのはこんな設定だと思います。 ProxyTimeout 7 ProxyPass /3sec/ http://127.0.0.1:9999/ timeout=3 ProxyPass /5sec/ http://127.0.0.1:9999/ timeout=5バックエンド (127.0.0.1:9999) は、こんなのを動かしておけば十分です。 $ while true; do echo listen...; nc -l 9999; doneこれでクライアントでアクセスしてみると… $ time curl h
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 Web屋さんはみんな大好きabコマンドは便利ですが、オプションは複雑で数も多く、複数のホストにそれぞれに対応するオプションを指定してテストしたりすると結構カオスになりがちです。 最近では、httperfやweighttp等のabに変わる次のHTTPベンチマークツールが出てきていますが、やっぱりまだまだ現役で良く使うのはabコマンドだと思います。 そこで、今回はabコマンドの複数のベンチマークオプションのパターンを1つのRubyスクリプトに定義しておいて、それをabコマンドで読み込む事で動的に任意のパターンでベンチマークを行うab-mrubyを作りました。外出しで書いたRubyスクリプトとabコマンドの連携は、ab-mrubyと見てわかるように
認証APIについていろいろ調査をしていて、TwitterAPIでPOST系APIで認証にBasic認証を利用している箇所で、どうやって実装しているんだろう?という話になりました。「まさか全ユーザの情報を.htpasswdファイルなんかに格納しているはずは無いだろうに。。。」と思いながら調べていると、Basic認証のユーザ情報を既存のMySQLのDB/Tableと統合するためのApacheモジュール「mod_auth_mysql」なるものを発見しました。この利用方法について、まとめてみたいと思います。 MySQL以外もOK 普段はRDBMSにはMySQLを利用しているので、mod_auth_mysqlについて調査をしていましたが、他のRDBMS用にもモジュールは用意されているようです。たとえば、Apacheのmoduleの公式サイトで「mod_auth」で検索すると、mod_authn_db
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 これまでのApache2.2系以前でのアクセス制御の書き方は賛否両論でした。僕はあまり好きじゃありませんでした。 過去のアクセス制御に関しては、以下の記事がとてもわかりやすくまとめられていると思います。 こせきの技術日記 – Apacheのアクセス制御をちゃんと理解する。 ここで、以下のように言及されています。 こんなバッドノウハウ、本当はどうでもいいと思う。Apache 3.0では、かっこいいDSL(VCL)で書けるようにする構想があるらしいのでがんばってほしい。 ということで、2.4系ではDSLとはいかないまでも、Require*というディレクティブを使ったモダンな書き方ができるようになったので、それを2.2系以前のアクセス制御の記述と比
Apacheの設定で Order deny,allowとか Satisfy anyとか、なんだか意味わからん人のために。僕はずっとわかってなかった。 基本 Apacheのアクセス制御には、 ホストによる制御 (Order,Allow,Deny) ユーザ認証による制御 (Auth*, Require) の2通りがある。 Satisfyは、2通りあるアクセス制御の両方を満たす必要があるかどうかを決定する。デフォルトはSatisfy all。Satisfy anyなら、どちらか片方満たせばよい。 Order http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order Order deny,allowは、全てのホストからのアクセスを許可する。 Order allow,denyは、全てのホストからのアクセスを拒否する。 Order d
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 HTTP関連の研究をしているので、そろそろ古い技術を詰めるばかりではなく(これはこれでとても大事な事なのですが)、新しい技術についても調べておきたいところです。 ということで、僕のSPDYに関する現状の理解を、mod_spdyに関する情報を元にまとめておきたいと思います。 SPDY概要 SPDYの概要を表す図としては、下記が良く用いられます。 TLS上にのせたSPDYストリーム上でHTTPやWebSocketを扱うプロトコルで、特徴としては、以下の4つがあげられます。 ストリームの並列化 フレームレイヤーやヘッダーの圧縮 リクエストの優先処理 サーバからのリソースプッシュ HTTP/2.0についても、SPDYを元に仕様が検討されています。では
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mod_mrubyにはぜひluajit版に勝って、言語の性能の差がシステム全体の決定的な差でないことを教えてやる と言ってほしい。すっかり他力本願モード — Miura Hidekiさん (@miura1729) 1月 23, 2013 というツイートに触発されて、mod_luaのLuaJIT版の速度がどの程度早く、mod_mrubyと比較してどれほどの性能差があるのかを試してみました。 mod_luaのLuaJIT版の設定 ここが結構はまってしまって、最新のApache2.4.3ソースで–enable-luajitとしても、LuaJIT版でmod_luaが動作するようにはなっていません。バグかな? というわけで、Apacheのソースを追って
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く