AWSのITコストを削減 Simpline

選ばれ続けること

 

エンジニアブログ

ホーム - エンジニアブログ - 2016年9月

h2oについて

2016.09.19

私の乗っているバイクが、今年を以って生産中止だそうで、
このバイクに乗りたくて、までは言いすぎだけど、免許を取った要因の一つくらいの重みはあり
なんだか寂しい気持ちになっています。
寂しい気持ちはあまり得意ではありません。
それはおっさんになっても変わらないのです。
どころかひどくなってきます。
きっと新しく得る事より、失うことの方が
いつのまにか多くなってしまっているからなのだと思います。

今日のお題

情報収集能力と意識の低さは比類ない感じの私なので
ごく最近H2OというWebサーバの存在を知りました。
で以下の説明がGitに書いてありました。

H2O is a new generation HTTP server. Not only is it very fast, it also provides much quicker response to end-users when compared to older generations of HTTP servers.

英語力がゆるふわほっこりな感じの私でも「なんやようわからんけどはやいらしいで」と言うのはビンビン伝わってきますね!


ですので、今日はh2oを立ててみたいと思います。

# install

0.環境
AWS
EC2:t2.micro
OS:Red Hat Enterprise Linux Server release 7.2

1.リポジトリ追加
Rpmが提供れているみたいなので手順に従って入れて行きます
※baseurlだけ他を弄らず通過できるよう修正


# cat << EOS > /etc/yum.repos.d/bintray-tatsushid-h2o-rpm.repo
> [bintray-tatsushid-h2o-rpm]
> name=bintray-tatsushid-h2o-rpm
> #If your system is CentOS
> baseurl=baseurl=https://dl.bintray.com/tatsushid/h2o-rpm/centos/7/x86_64/
> #If your system is Fedora
> #baseurl=https://dl.bintray.com/tatsushid/h2o-rpm/fedora/$releasever/$basearch/
> gpgcheck=0
> repo_gpgcheck=0
> enabled=1
> EOS
#


2.導入

# yum install h2o


3.自動起動設定・起動

# systemctl enable h2o
Created symlink from /etc/systemd/system/multi-user.target.wants/h2o.service to /usr/lib/systemd/system/h2o.service.
# systemctl start h2o


ok

3.ベンチマーク(ApacheBench)の投入

yum install httpd-tools



4.older generationsとの比較
比較の為nginx,apacheを別のインスタンスで準備します。
nginxとapacheもh2oと同じインスタンス構成で作成します。



◆nginx
rpm -ivh http://nginx.org/packages/rhel/7/noarch/RPMS/nginx-release-rhel-7-0.el7.ngx.noarch.rpm
yum install nginx



◆httpd
yum install httpd


作成後index.htmlのサイズをすべて同一にし、それ以外の設定はDeafultのままにしてApacheBenchを流します。
負荷は100多重、10万リクエストにしました。

で、結果
Apache=17.141 seconds / Requests per second: 5833.86
nginx=7.149 seconds / Requests per second: 13988.80
h2o=4.945 seconds / Requests per second: 19754.23
チューニングなしDefault設定なので、それぞれ無駄な部分がある状態ではありますが
見る限りh2o軽いですね。

AB

次はどこまで早くなるか、チューニングして計測してみようと思います。

どなたかの参考になれば幸いです。



proxyサーバーを立ててみました。

2016.09.09

こんにちは。hmです。

初めてこちらでエントリーを書かせてもらいます。

今回は検証としてAWSでプロキシサーバーを立ててみました。
実現したかったこととしては、
・一部のWebサイト閲覧を制限する。
・外部へのアクセスログを収集する。

ただし、今回は構築まででとどまっております。
ログを取る部分に関しては、見る場所までわかっているので、
最後に軽く触れて終わります。

今回の作業で躓いたところは、pingは通じているものの、
プロキシサーバーからの応答がなかった(not responding)
という点です。

原因としては、プロキシサーバーのセキュリティグループの設定に
誤りがあったためです。

なお、今回は下記のブログを参照しました。
http://qiita.com/pcnikki/items/404329f9ad9cb6e235d4

それでは下記、詳細です。
*参照元とは違うところを説明します。

0.AWSセキュリティグループ

 0.1インバウンド設定
 今回は、sshとhttpとICMPのポートを開けておく。

1、プロキシサーバーについて
 Amazon Linuxでプロキシサーバーを立てる。
  
 1.1 squid設定編集
 インストール後、下記ファイル設定を編集します。
  ----------------
  /etc/squid/squid.conf
  ----------------

 1.2 設定内容
  ----------------
  # ********は任意のものを使います。
  visible_hostname ************

  # ポート8080は一般的すぎるので使いません。
  http_port 60088

  # xxx.xxx.xxx.xxxはあなたのIPを記述する。
  # わからなければ
  # http://www.ugtop.com/spill.shtml
  # ここの「現在接続している場所(IPv4)」のIPを書きます。
  acl myacl src xxx.xxx.xxx.xxx/255.255.255.255
  http_access allow myacl
  http_access deny all

  # プロキシサーバーを使用している端末のローカルIPアドレスを隠蔽化
  forwarded_for off

  # プロキシ経由でアクセスしていることをアクセス先に知られないようにする
  # しかし下記はについては、よくわからないため、今回はコメントアウトで対応

  #request_header_access X-Forwarded-For deny all
  #request_header_access Via deny all
  request_header_access Cache-Control deny all
  ----------------

 1.3 ファイアフォールの設定について
  今回は、AWSのセキュリティグループで対応するため、
  停止をしております。

2、Webブラウザ設定
IEの設定もOK!

IPの部分は、プライベートIPを設定。
ポート番号も上記で指定したものを使用。

下記参照
https://www.st.ryukoku.ac.jp/connect/setup/ie-proxy.html

上記で疎通を確認したところ、
"the proxy server isn't responding"
が表示されました。

3、解決方法
 プロキシサーバのセキュリティグループのインバウンドの設定で
 httpのポート番号を指定していなかったため、60088へ設定し、解決。


最後にアクセスログについては、"/var/log/squid/access.log"へ
保存されているため、今回は確認で終わりです。

まだまだ、駆け出しではありますが、
現状をお伝えいたします。

こちらからは以上です。