読者です 読者をやめる 読者になる 読者になる

s_tajima:TechBlog

渋谷で働くインフラエンジニアのTechブログです。

ブログを移転します

特に深い事情はないんですが、ブログを移転することにしました。 新しいブログはこちら。 https://blog.s-tajima.work/ 過去の記事は今でも有用そうな情報のものは折をみて新しいブログに移していく予定です。

GitHubのPull Requestへのレビュアーアサインを自動化するツール 「github-dice」の紹介

こんにちは、今回はGitHubのPull Requestへのアサインを自動化するツール 「github-dice」を作成したお話です。 背景 GitHubのPull Requestベースの開発をする際、コードレビューはとても大事な工程の一つです。 よくあるコードレビューは、 技術力の高い/シ…

AWS Reserved Instancesによる減額効果を計算するツールを作った

概要 AWSの料金を節約する手段の1つに Reserved Instances という仕組みがあります。 これは、予め将来的に利用するであろうインスタンスを予約し、一定額の前払金を支払う(支払わないケースも有る)ことで、 通常の利用(Ondemand Price)に比べて一定の割引を…

resticによるカジュアルなバックアップ環境の構築

前置き 僕がインフラを管理している環境では、その規模の大小は様々ですが14個のJenkinsが稼働しています。 それぞれのJenkinsでは、thinBackupによるバックアップが動いているので、障害時にも復旧ができる...はずでした。 現状の設定を確認してみると、 th…

mod_extract_forwarded, mod_rpafの脆弱性らしきものを見つけた話

はじめに 本記事で言及しているmod_rpafというモジュールは、forkによる派生などによって幾つかの実装があるようです。 きちんと区別できるように、今回は以下の実装をそれぞれ分けて表記することにします。 (ここに挙げた以外にもいくつかの実装をみつける…

AWS Certificate Managerの検証

AWS

本日、AWSがSSL/TLS証明書のマネージドサービスをリリースしたので早速使ってみました。 New – AWS Certificate Manager – Deploy SSL/TLS-Based Apps on AWS | AWS Official Blog リリース情報、ドキュメントより ACM takes care of the complexity surroun…

mod_remoteipのリモートアドレスの扱いに関する不具合の修正について

httpd2.4では、X-Forwarded-Forを取り扱うためにmod_remoteipというモジュールがあります。 httpd2.2系でいうところのmod_rpaf, mod_extract_forwardedの代わりとなるモジュールです。 今回は、このmod_remoteipの不具合が修正された話です。 前置き (mod_re…

fluent-plugin-bigqueryでログの書き込みが痕跡なく欠損するケースがある問題

fluent-plugin-bigqueryを使ってBigQueryにStreaming Insertでログを書き込む時に、 痕跡なくログが欠損するケースがあるのでは? という話です。 fluent-plugin-bigqueryでのログの書き込み処理/エラー処理はこのようになっています。 res.success? がtrueで…

OpenSCAPの検証/実用編

前回の記事でOpenSCAPの概要と、簡単な使い方については理解できたので、 今回は実用的な使い方について調査してみました。 SCAPを利用する上で最も重要なのが、どんなSCAP content(スキャンのポリシ)を利用するかだと思います。 SCAP contentは自分で構築す…

OpenSCAPの検証/導入編

SCAPとは SCAP(Security Content Automation Protocol)とはNISTによって管理されている規格。 エンタープライズシステムのセキュリティメンテナンスの標準化のためにつくられたもの。 パッチの存在確認の自動化 システムのセキュリティ設定の確認 不正アクセ…

OSCON 2015 参加レポート

7/20 ~ 7/24にPortlandのOregon Convention Centerで開催されたOSCON 2015に参加してきました。 (尚、僕が参加したのは7/21 ~ 7/24です。) OSCONはO'Reilly主催でオープンソースがテーマのカンファレンスです。 今年は今までで最大の参加者数だったそうです…

"お前もう新卒じゃねーだろ"とマサカリがとんできたのでタイトル変えました。 サバを読んでてごめんなさい。今3年目です。 これからもよろしくおねがいします。 新卒ではないですがいつまでも若手です。

アプリケーション内でhttpsによる外部APIを叩いているサーバのメモリ使用量が増加し続ける件について

問題 アプリケーション内でhttpsによる外部APIを叩いているサーバのメモリ使用量が増加し続ける件について調べた。 該当のサーバでは、以下のようにメモリの使用率が徐々に上昇していく。 また、アプリケーションのプロセス自体がメモリを消費しているわけで…

本番稼働環境におけるDRBDのDISKのresizeが遅い問題について

現在運用しているMySQLサーバはDRBDによってDISKの冗長構成をとっている。 また、DRBDのデバイスはLVMのLV上に構築しているので、 LVのサイズを拡張すればDRBDのリサイズ(drbdadm resize)で容量の拡張ができるようになっている。 今回の問題は本番稼働してい…

CentOS7の検証: Dockerを一般ユーザーで管理できるようにする。

※ 2016/08/18追記 0.9.0 (2014-03-10) にて -G オプションが追加されたので本記事の対応は不要になりました。 docker/CHANGELOG.md at master · docker/docker · GitHub Add a -G option to specify the group which unix sockets belong to. 追記終わり。 D…

CentOS7の検証: httpd2.4を起動しようとすると "Invalid command 'User', perhaps misspelled or defined by a module not included in the server configuration"

CentOS7環境でhttpd2.4をインストールし、起動しようとしたところ以下のエラーが。 Invalid command 'User', perhaps misspelled or defined by a module not included in the server configuration 詳しい環境は以下の通り。 CentOS Linux release 7.0.1406…

dockerの検証: docker registryが起動しない

docker registry(https://github.com/docker/docker-registry)の検証のため、 Quick startに書かれている通り docker runをしてみた。 # docker run -e SETTINGS_FLAVOR=s3 \ > -e AWS_REGION=ap-northeast-1 \ > -e AWS_BUCKET=<MY_BUCKET_NAME> \ > -e STORAGE_PATH=/regis</my_bucket_name>…

re:Invent 2014 参加レポート

ラスベガスで行われたre:invent 2014に参加してきました。 参加したSessionやイベントのまとめです。(Sessionはスライドと動画が順次公開されると思うので簡単に。) KeyNoteについてはすでに日本語でも英語でも情報が多く出回っているので割愛。 GameDay (11…

CentOS7の検証: nscdの起動がうまくいかない件

nscd-2.17-55.el7.x86_64での話。nscdのパッケージをインストールし、起動しようとしても そのままコマンドが止まってしまう。 # systemctl start nscd/var/log/messagesを見てみると、 Aug 6 17:44:26 c7-build01 systemd: PID file /run/nscd/nscd.pid not…

CentOS7の検証: CA証明書の管理方針が変更に

概要 CentOS7の検証をしていると、ca-bundle.crtがシンボリックリンクになっていることに気がついた。 $ ll /etc/pki/tls/certs/ca-bundle.crt lrwxrwxrwx 1 root root 49 7月 16 17:04 /etc/pki/tls/certs/ca-bundle.crt -> /etc/pki/ca-trust/extracted/pe…

Puppet3.6環境でPackageを定義するとWarningが

Puppet3.6環境で、 package { "openssl": ensure => installed, }のように、packageの定義を記載すると、puppet適用時に Warning: The package type's allow_virtual parameter will be changing its default value from false to true in a future release.…

Puppet3.6環境のpuppet.confでmodulepathがdeprecatedとなっている件

puppet-masterのversion3.6.2をセットアップしていて、 Jul 29 14:47:20 localhost puppet-master[2042]: Setting modulepath is deprecated in puppet.conf. See http://links.puppetlabs.com/env-settings-deprecations と怒られたので http://links.puppe…

MySQLのリクエストをHAproxy経由にした時のパフォーマンスの計測

目的 現在運用している環境で、複数台のSlaveの参照をインフラレイヤで振り分けるためにHAproxyの導入を検討している。 HAproxyを経由した場合とそうでない場合に、パフォーマンス/負荷の点でどれほど差があるのかを検証してみた。尚、HAproxyは各Webサーバ…

RDSからのinnodb_file_per_tableについて

背景 一つ前の記事とも関連するが、 RDSでテーブル数のそれほど多くないインスタンスでも、 こちらの記事にかかれているような警告がでてしまうことがある模様。http://dev.classmethod.jp/server-side/db/rds-mysql-innodb_file_per_table/ DB Instance XXX…

MySQLのinnodb_file_per_tableについての検証

背景 innodb_file_per_tableを有効にしている場合に、 テーブル数が多くなるとMySQLの起動/停止や、innodbのクラッシュリカバリに時間がかかるようになるとの噂を聞いたので、 その辺りを含めた簡単な検証をしてみたメモ。 あまりしっかりとした調査はしてい…

MHA + HAproxyによるMySQLの冗長構成の検証 (フェイルオーバー編)

前回の記事で作成したMHA + HAproxyのMySQLクラスタで、フェイルオーバーの実験をしてみた。 MySQL Cluster of MHA + HAproxy (FAILOVER) from Satoshi Tajima 想定する状況 フェイルオーバー時のレプリケーションの状態は、上のスライドの図1のような状態を…

MHA + HAproxyによるMySQLの冗長構成の検証 (環境構築編)

現在運用中の、Heartbeat + DRBDによるMySQLクラスタ環境の改善を試みるために、 MHA + HAproxyによるMySQLクラスタ環境をテスト中。今回は環境を整えるところまで。 環境構築 AWS上に以下の図と文章で示すような環境を構築。 MySQL Cluster of MHA + HAprox…

fluentdの設定管理サーバーを構築

概要 fluentdによるログの回収の構成を広げていくと、 多くのインスタンスにfluentdがインストールされることになるため、 全体に影響するような設定変更が面倒になりそうである。そこで、fluentdの設定ファイルの中で include http://config-server/path/こ…

ElasticSearchのIndexをローテートするスクリプト作成

Kibana3でログを解析する環境を構築する際、 ElasticSearch上にいつまでもログを残しておけないので定期的にIndexを削除するスクリプトを作成。仕様としては以下のような感じ。 ElasitcSearch上にあるIndex名を最初に取得 [PREFIX]-[YYYY].[MM] もしくは [PR…

ElasticSearchのindexの圧縮設定に関するベンチマーク

ElasticSearchのmappingの設定で、 compressに関する設定がindexのサイズ、応答性能にどう影響するかのベンチマークを取った。 テスト環境 ベンチマークは以下のような構成で実施。上記のような構成で、①indexサイズ, ②応答性能(httpdの%Drequesttime_micros…

Fluentd forwardを先の名前解決結果によって切り替える

やりたいこと 以下のような図で表されるような構成をとっている場合に、 aggregator A -> aggregator Bへのforward先切り替えを、名前解決によって行いたい。 検証 以下の様な設定でテスト この設定をした上で名前解決されるIPを変更してみる。 結果は失敗。…

ElasticSearch + Kibana3のアクセスコントロールについて

Elasticsearch + Kibana3でログ解析環境を構築する際、アクセスコントロールの設定に困ったのでそれを解決したというメモ通常Kibana3は、以下の図のようにブラウザが直接ElasticSearchにリクエストをかけている。ただし、この状態ではKibana3の利用者が自由…

AWSでリージョン間の自動DR構成を構築してみた #vgadvent2013

こんにちは、 VOYAGE GROUP エンジニアブログ Advent Calendar 2013 の2日目担当の @s_tajima です。僕は今インフラエンジニアとして働いているのですが、 障害が発生すると携帯にアラートメールや電話がとんできて対応を迫られます。そして障害というのはた…

right_awsのデバッグログ出力を制御する方法

最近、AWSのRuby用コンソールツールの一つであるright_awsを使っているのですが、 スクリプトを実行した時に、 I, [2012-06-23T17:55:15.996727 #25742] INFO -- : New RightAws::AcwInterface using shared connections mode I, [2012-06-23T17:55:15.99722…

AWSのコンソールツールの実行負荷の比較

AWSのコンソールツール実行時の負荷について検証してみた。 対象のコマンド,コード EC2 API Tools(ドキュメント) AWS SDK for PHP(ドキュメント) 検証環境 さくらのVPS(1GB) それぞれのツールの導入方法などは割愛。 実行するコマンド, コードは以下の通り E…

PHPUnitのデータプロバイダの使い方

PHP

以下のような映画館の料金判定のメソッドに対して、テストを書くことを想定。 12歳以下と13歳以上で、子供料金と大人料金を区別する 子供料金:1000円、大人料金:1800円 男性と女性を区別する 毎週水曜日をレディースデーに設定し、女性であれば料金を半額…