タグ別アーカイブ: Apache

GoogleがロードバランサーSeesawをオープンソース化(Go言語で書かれている) | TechCrunch Japan

Googleが今日(米国時間1/29)、ロードバランサーSeesawをオープンソースにする、と発表した。このLinuxアプリケーションはGoogleのGo言語で書かれていて、これからはApacheライセンスによりGitHubで入手できる。

Googleのインフラの日常的メンテナンスを担当しているSite Reliability Engineer(SRE)の一人Joel Singが、今日の発表声明で述べているところによると、Googleは2012年までは二種類のロードバランシングシステムを使っていたが、しかしどちらも、“管理と安定性に問題があった”。そこで、彼と彼のチームは新しいソリューションを探したが、Googleのニーズを満たすものがなかったので、自作することになった。

関連記事

Google Open Sources Its Seesaw Load Balancer

Google Cloud Platform Adds Load Balancing To Provide More Scale Out Capability And Control To Developers

“要求はそれほど複雑ではなかった。必要なのは、ユニキャストとエニーキャストの仮想IPを扱えること、NATとDSR(またの名DR)でロードバランシングができること、そしてバックエンドに対する健康診断ができることだ”、とSingは書いている。“何よりも必要なのは、管理のしやすいプラットホームだった。構成を変えたときのデプロイの自動化、とかね”。

一部ではすでにネットワークレベルのロードバランシングにLinux Virtuall Server(LVS)を使っていたから、Singのチームもそうすることにした。ただしそれに加えて彼らは、 モジュール構造のマルチプロセスアーキテクチャと、フェイルオーバーやリカバリのサービスも実装した。

“開発は短期間で集中的に行い、完成しデプロイにも成功したSeesaw v2で二つの既存のプラットホームをリプレースした”、とSingは書いている。“これにより、全体的に、サービスの可利用性が向上し、管理のオーバヘッドが減った”。

なお、このプロジェクトの提供者はGoogleだが、オープンソースのバージョンはGoogleの公式のプロダクトではない。だから、サポートをGoogleに求めることはできない。

引用元: GoogleがロードバランサーSeesawをオープンソース化(Go言語で書かれている) | TechCrunch Japan.

これから始める人のためのNginx(1):高速・軽量・高機能……Nginxの基礎知識 (2/2) – @IT

Nginxが大量のリクエストでも同時に高速処理できるのは、イベント駆動方式を採用しているためです。

Webサーバーのように同時に複数の処理を行うには、ディスクやネットワークといったI/Oの多重化が必要になります。I/O多重化の実装には「select」や「poll」といったシステムコールが従来使われています。

Apache HTTPでプロセスベースやスレッドベースのMPM(マルチプロセッシングモジュール、注6)を選択すると、こうしたシステムコールが使用されます。select/pollでは、プログラムがアクセスするファイルネットワークソケットなどをOSが識別するための「ファイルディスクリプター」を1つ1つチェックします。チェックするディクリプタが増えれば処理にかかる時間も比例(注7)して長くなり、同時リクエスト数が2倍になれば処理に掛かる時間も2倍に膨らみます。

Niginxのイベント型では、I/O多重化を実装するのに「epoll」システムコールを使用します。epollではディスクリプターの状態がカーネル内で管理されるため、プログラムが1つ1つチェックする必要がなくなります。この場合、処理にかかる時間はリクエストによらず一定(注8)になります。そのためNginxは、万単位のリクエストも高速に効率良く処理することができます。

また、メモリの使用量が少ないのも特徴です。Apache HTTPのプロセスベースやスレッドベースのMPMでは、リクエストを処理するのにプロセスやスレッドを起動するため、使用するメモリもリクエスト数に応じて増加します。一方Nginxは単一プロセスで全てのリクエストを処理するため(注9)、リクエスト数に応じてメモリ使用量が変化することはありません。

Nginxの省リソースの恩恵は、数万単位のリクエストを処理するような大規模サイトだけではなく、組み込みPCやマイクロサーバーのように限られたリソースしか使用できない状況にも有効です。

引用元: これから始める人のためのNginx(1):高速・軽量・高機能……Nginxの基礎知識 (2/2) – @IT.

参加レポート: LINE Developer Conference (Infra Day) | Developers.IO

2つ目はIDC空間の不足。これは後述のネットワークレイヤのセッションでもあったのですが、LINEさんでは基本的に物理サーバで構成していて、サーバ台数だけで5桁(万単位)の台数があり、そうするとIDCの物理的スペースを食いつぶしてしまいサーバを設置する場所が無いという事態が発生しているそうです。LINEサーバのクラスタの仕組みで最も多く使っているのはApache HBaseだそうですが、経験則として1000台以上のクラスタ構成にすると性能が出ず、またサーバ台数を増やしていくとその分故障の可能性が増えるため運用コストが増加してしまいます。そのためサーバ台数を減らす施策として、サーバのスケールアップによる集約と、そして段階的に仮想化を行っているところとのこと。スケールアップとしてはCPUやメモリなど様々な方策がありますが一番ボトルネックとなったのはDisk I/Oで、ここは検証した結果最もIOPSが高かったPCIE-SSDを導入することで高いパフォーマンスが発揮出来たとのこと。また仮想化についてはVMware vSphereを使われており、1物理サーバに対し10VMくらいを割り当て、現在は数千台くらいのGuestOSが動作しているそうです。

引用元: 参加レポート: LINE Developer Conference (Infra Day) | Developers.IO.

RESTの代替は必要か

SOAPやXML-RPCのようなほかの方式ではなくて、RESTが成功した理由を説明している。しかし、氏はRESTが利用しにくい領域も多くあり、そのような領域ではほかの方法が必要だと考えている。

非同期API: "従来のリクエスト/レスポンスではなく、データを非同期で押し出さなければならない場合、RESTfulな設計はうまく適用できません。さらに、基盤技術(WebSockets, MQTT, AMQP, Stomp, pubsubhubbub/WebHooksなど)はHTTPとはまったく異なるので、RESTの原則とは普通、相容れません。"

オーケストレーションAPI: "従来のREST APIが提供するリソースの粒度には利点はない。要求されたリソースをモバイルのダッシュボードや複雑なシングルページウェブアプリケーションから取得するには多くのAPIリクエストが必要。この場合、クライアントのロジック、帯域、サーバ処理にオーバヘッドが発生します。"

SDK vs API: "ほとんどのAPIの利用者はハイレベルな言語から利用します。したがって、各言語向けのクライアントライブラリを含む多くのAPIプロバイダが生まれます(Google、Facebookなど)。言語自体がRPC指向なので、SDKが提供するコードレベルのAPIも同様RPC指向になってしまいます。すると、おそらくは、最適化されたバイナリプロトコルを利用して、あるいは、RPCライクにHTTPリソースを使うことで(例えばJSON-RPC)、バックエンドのAPIも同様の動作をするように作ってしまいます。"

バイナリプロトコル: "[...] 例えばIoTデバイスやSDKからのリクエストに対応するために最適化されたメッセージ転送を行うため、バイナリプロトコルはより注目を集め、利用されるようになっています。" Apache Thrift, Google Protocol Buffers, Apache Avroなどのプロトコルだ。"上述した非同期APIのいくつかはバイナリフォーマットを利用しています。デバイスやサービスによって背負わされた帯域や処理の制限に対応するためです。"

引用元: RESTの代替は必要か.

How to Enable vCO 5.1.x to log API requests

The following steps will enable additional logging on your vCO server. With these changes, be sure that you manage the log files that get generated…

On your vCO server, go to the following folder:

/app-server/server/vmo/deploy/jboss-deploy-tomcat/jbossweb-tomcat55.sar

Edit the "server.xml" file

Uncomment this section:

1

2

3

4

5

6

<!–

<Valve className="org.apache.catalina.valves.AccessLogValve"

prefix="localhost_access_log." suffix=".log"

pattern="common" directory="${jboss.server.home.dir}/log"

resolveHosts="false" />

–>

Uncommenting that line will result in the creation of a "localhost_access_log..log file. This file will log header details about each request

Since you likely want more detail than just headers, uncomment the following line too:

<Valve className="org.apache.catalina.valves.RequestDumperValve" />

Uncommenting that line will result in API related call details showing up in the server.log file

Now save the file and restart the vCO Server service

The log files for vCO 5.1.x are found in /app-server/server/vmo/log

引用元: How to Enable vCO 5.1.x to log API requests.

cybozu.com を真に常時 SSL にする話 | Cybozu Inside Out | サイボウズエンジニアのブログ

HTTP と HTTPSWeb ブラウザのアドレスバーに “www.cybozu.com” と打ち込むと、通常は暗号化されない HTTP 通信が行われます。そこでまず考えられるのは、Web サーバーにて HTTP 通信を受け付けたら、HTTPS に永続的リダイレクトをすることです。Apache なら以下のような設定になるでしょう。<VirtualHost :80> ServerName www.cybozu.com Redirect permanent / https://www.cybozu.com/</VirtualHost>一見これで良いようにも思えますが、最初の HTTP 通信時に中間者攻撃を仕掛けられた場合は、攻撃者の思うままのレスポンスが返ってしまうので万全ではありません。そこで考案されたのが HTTP Strict Transport Security HSTS です。HSTS とその弱点HSTS はサーバーから “Strict-Transport-Security” というヘッダを返すことで、以後そのブラウザで “www.cybozu.com” と入力すると HTTP ではなく HTTPS で暗号化した通信を行うようにする機能です。Apache なら SSL のバーチャルホストで以下のように設定します。<VirtualHost :443> ServerName www.cybozu.com SSLEngine on Header set Strict-Transport-Security "max-age=315360000; includeSubDomains"</VirtualHost>しかし、いくつかの弱点があります。 対応ブラウザが Chrome と Firefox IE と Safari はまだ対応していません。 はじめて訪れる際は HTTP でアクセスするので、中間者攻撃をされる可能性がある

引用元: cybozu.com を真に常時 SSL にする話 | Cybozu Inside Out | サイボウズエンジニアのブログ.

OSSの類似画像検索プロジェクト Apache alike のご紹介 | 株式会社ロンウイット

Apache alike はテキスト検索エンジンである Apache Lucene を画像検索に応用した OSS のプロジェクトです。alikeは昨年12月に筆者がApacheに提案して承認され、現在は Apache Labs のもと開発が進められており、Apache License 2.0 で公開されています。

Apache alike は下表のOSSを適宜利用して作成されています。

OpenCV 画像から特徴量を抽出する

Apache Mahout 特徴点をクラスタリングする

Apache Lucene 類似画像を検索する

引用元: OSSの類似画像検索プロジェクト Apache alike のご紹介 | 株式会社ロンウイット.