サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
kikai.hatenablog.jp
概要 S3+CloudFrontで認証付きURL発行して、認証なしのアクセスを弾きたい。 設定手順 S3バケットの作成 コンテンツ格納先のS3の作成をします マネージメントコンソールからS3をクリック バケットの作成をクリック 任意のバケット名を入力して作成をクリック 作成されたらプロパティをおして、アクセス許可の項目を確認 現在はなにも設定されていないので、 「バケットポリシーの追加」などしか表示されていない CloudFrontの設定 S3のファイルを配信するCloudFrontを設定します マネージメントコンソールからCouldFrontをクリック CreateDistributionをクリック デリバリーメソッドの選択 今回はWebコンテンツの配信なのでWebの項目から「Get Started」をクリック Origin Domain Nameの項目をクリックして、 先程作成したS3
静的コンテンツ配信の為だけのサーバでnginxを利用。 公開前のサーバだったのでLDAPの認証をかけて確認したところ、 cssとかjsとか画像ファイルとかの静的ファイルの応答時間が10秒かかって、 HTTPステータスコード000になるという状態になった。 /var/log/nginx/access.log 24**:****: - hoge_fuga [30/Jul/2014:13:53:48 +0900] "GET /pc/ HTTP/1.1" 200 2244 "http://[24**:****:]/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko Firefox/28.0" "-" 0.005 24**:****: - hoge_fuga [30/Jul/2014:13:53:50 +0900] "GET /img/head
毎回忘れる・・・。 show variables like '%max%'; my.cnf変更 vim /etc/my.cnf max_connections = 4000 オンラインで変更 set global max_connections = 6000; ついでに過去の最大使用コネクション show status like 'max%';
先日記事に書いたように、無停止のALTER文実行では Percona-ToolkitのOnline-schema-changeを利用しています。 無停止でALTERできるPercona-Toolkitのonline-schema-change オンラインでのカラム追加 私が担当しているサービスでは、ALTER文実行時にレプリケーションの遅延を出来るだけ発生させたくないので、 以下の様な手順でOnline-schema-changeを実行しています。 (1) スレーブ全台でOnline-schema-changeの実行 (2) マスターでOnline-schema-changeの実行(--set-vars="sql_log_bin=0"のオプション指定) "sql_log_bin=0"オプションをつけて実行すると、binlogを出さずに実行できるので、 マスターで実行してもそのクエリはスレー
MySQL5.5をまだまだ絶賛利用中な私です。 サービスを運用しているとINDEX追加やカラム追加を行いたい要望が多々発生します。 それも無停止で。 MySQL5.6からは無停止でINDEX追加やカラム追加ができるオンラインDDLが実装されました。 カラム追加はまだ色々制約があるみたいですが…。 http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html pt-online-schema-change MySQL5.5でも似たようなことをやりたいので、 有名な「Percona-Toolkit」に同梱されているpt-online-schema-changeを利用しています。 http://www.percona.com/software/percona-toolkit 通常はロックが掛かってしまうALTER
トランザクションとは 1つの作業単位として扱われるSQLクエリの集まりです。 複数のUPDATEやINSERTをひとつの集まりとして、 それらのクエリがすべて適用できた場合のみデータベースに反映します。 ひとつでも適用に失敗したクエリがあった場合は、そのまとまりすべてのクエリの結果は反映しません。 ACID特性 トランザクション処理に求められる4つの特性です。 原子性 (Atomicity) トランザクションに含まれる手順が「すべて実行されるか」「すべてされないか」のどちらかになる性質。 一貫性 (Consistency) どんな状況でもトランザクション前後でデータの整合性が矛盾なく保たれる性質。 分離性 (Isolation) トランザクション実行中は、処理途中のデータは外部から隠蔽されて他の処理に影響を与えない性質。 永続性 (Durability) トランザクションが完了したら、シス
ある日 ioDriveを積んでるMySQLスレーブサーバが突然の死。 というか、レプリケーションが止まっていました。 サービスから参照されていないDBではあったので、 特に死んでいても問題にはなりませんでした。 今回つかっていたのはioDrive Duoです。 /var/log/messages確認 とりあえずシステムのログを確認してみると、 Jan 27 05:39:36 hoge-dbs kernel: fioinf HP 640GB MLC PCIe ioDrive Duo for ProLiant Servers 0000:09:00.0: groomer read had error -1024 Jan 27 05:39:36 hoge-dbs kernel: fioerr HP 640GB MLC PCIe ioDrive Duo for ProLiant Servers 00
Cassandraとは オープンソースの分散データベース。 元々Facebook社が開発し、現在はApache Software Foundationが開発中で、2013年12月現在の最新版は2.0.3です。 ノードがP2P通信でクラスタを組む非中央管理型のシステムであり、 スケーラビリティ、高可用性、耐障害性に優れていると 言われています。 以下勉強メモ ■Cassandraのインストール ■用語集 Cassandraのインストール JDKインストール OracleJDKをダウンロードしてくる http://www.oracle.com/technetwork/java/javase/downloads/index.html rpm -ivh /tmp/jdk-7u45-linux-x64.rpmCassandraダウンロード wget http://ftp.tsukuba.wide.a
サービス運用している時にレプリケーション遅延が発生してアプリケーションがバグった。 という事態にならないように、開発環境のDBは遅延を発生させてを遅延を考慮したアプリケーションが開発できるようにします。 ※MySQL5.6の場合は↓をするだけです。 STOP SLAVE; CHANGE MASTER TO MASTER_DELAY=360; START SLAVE;Percona Toolkit 今回はPercona Toolkitのpt-slave-delayを利用します。 Percona Toolkitのインストール wget http://www.percona.com/redir/downloads/percona-toolkit/LATEST/RPM/percona-toolkit-2.2.5-2.noarch.rpm ※依存パッケージ yum install perl-DBI
Webサービスを運用していると、メンテナンス時にDBサーバの再起動が必要になるケースがいつか出てきます。 その際、再起動後そのままの状態でDBサーバをサービスインしてしまうと障害が起きてしまうことがあるので、 その対処法をメモしておきます。(InnoDB利用時編) ■InnoDB buffer pool MySQLのストレージエンジンであるInnoDBはinnodb buffer poolに書込/読込データを一時的に保管していて、 定期的にibdataに書き込みを行うことでI/O性能を向上させています。 my.cnfのinnodb_buffer_pool_sizeでバッファサイズの指定ができるので、搭載メモリの50%〜70%ぐらいを指定します。 ■ウォームアップ対象の洗い出し buffer poolのサイズは有限なので、できるだけ多い回数呼び出されてるテーブルやINDEXをバッファに乗せて
MySQL5.6GAが出てから大分経っちゃいましたが、 皆様プロダクト環境でガンガン使っておりますでしょうか。 今更ながら手順を整理したので記述しておきます。 ■GTIDとは Global Transaction Identifiers 今までのMySQLのレプリケーションで行なっていた、「Masterのbinlogファイル名 + ポジション番号」による情報ではなく、 トランザクションごとにGTIDを持たせる事で管理できるようになるという機能です。 mysqlfailoverを利用すると、マスター障害時に各スレーブで最も進んでいるGTIDを持つスレーブがマスターに自動昇格します。 ・メリット ・CHANGE MASTER文を打つ際にポジション番号を指定しなくてよくなる ・MySQL-MHAを利用しなくてもGTID+mysqlfailoverでSPOFをなくせる ・デメリット ・慣れるのが大
更新が激しいDB(MySQL)でInnoDBのロック競合が発生し、アプリケーションサーバが詰まる状況が発生してしまいました。 障害監視はmonというアプリケーションで行なっているのですが、 今回はこのmonを使ってMySQLデッドロックの検知とロギングを行いたいと思います。 monについては下記の資料をご参照ください。 Mon, Muninによる楽々監視生活 デッドロック解析は下記サイトのSQLを利用しています。 MySQL InnoDBにおけるロック競合の解析手順 前提 ・MONのサーバは既に構築済みであること ・DBサーバはMySQL5.5であること(MySQL5.1+InnoDB pluginでも可) 〜〜〜 以下、監視対象のDBサーバにて作業 〜〜〜 SNMPインストール yum install net-snmplockを検知するスクリプト作成 vim /usr/local/sbi
ioDriveは、Fusion-io社のNANDフラッシュメモリ搭載の次世代ストレージです。爆速です。 DellのR710とHPのDL380に導入する機会があったのでメモとして記録します。 使用機器 Dell R710 HP DL380 Fusion-io ioDrive Duo 640GB 使用OS CentOS6.2 ダウンロード Fusion-ioのサポートサイトでドライバとファームウェアをダウンロード https://support.fusionio.com/downloads (要ユーザ登録) 今回はCentOS6なので以下をダウンロード。 iomemory-vsl-2.3.10.110-1.0.el6.src.rpm fio-common-2.3.10.110-1.0.el6.x86_64.rpm fio-sysvinit-2.3.10.110-1.0.el6.x86_64.r
DBサーバでとある日を境にswapが発生していることに気がつきました。 サーバはメモリ32GB搭載していて、そのうちの24GBをinnodb_buffer_pool_sizeに割り当てています。 他のthread毎のメモリ設定値を見てもおかしそうな点はなかったのでググってみました。 MySQL と NUMA アーキテクチャと Swap Insanity MySQL InnoDBストレージエンジンのチューニング(後編) なるほど…。 それぞれのCPUがローカルでメモリを管理しているので、 2CPU積んでいるサーバだと、AというCPUで実行されているスレッドが、BというCPUが確保しているメモリ領域にアクセスするには、AのCPUを経由しないといけないわけですね。 このメモリアクセスが不均一になる方式をNUMAアーキテクチャというみたいです。 NUMAアーキテクチャのメモリ管理が、ノードという単
一部の通信の疎通がうまくできなかったので、iptablesでログを出力する必要があった時の作業メモ。 やること 1.iptablesでログ出力設定 2.syslog.confのログ出力先設定 3.ログファイル作成 4.syslogdの再起動 1.iptablesでログ出力設定 iptables -A INPUT -j LOG --log-prefix "IPTABLES_INPUT_LOG : " --log-level=info2.syslog.confのログ出力先設定 vim /etc/syslog.conf # iptables log *kern.debug /var/log/iptablesついでに/var/log/messageにiptablesのログ出さないようにしとく 同じくsyslog.conf内の *.info;mail.none;news.none;authpriv.
KyotoTycoonとは データベースライブラリであるKyoto Cabinetをネットワーク越しに利用出来るようにしたKVS。memcached違いファイルに書き込むことができるのでデータを永続化して利用できます。 DBのホットバックアップやレプリケーションも出来るため高可用DBとして利用できます。 kyoto cabinetインストール wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.74.tar.gz tar zxvf kyotocabinet-1.2.74.tar.gz ./configure make make installkyoto tycoonインストール tar zxvf kyototycoon-0.9.54.tar.gz wget http://fallabs.com/kyototycoon/pkg/
MongoDBのバックアップとリストアをメモメモ node.js製のレスポンスタイム測定ツール「uptime」をインストール ↑で紹介したuptimeでは計測データをMongoDBに格納しています。データがぶっ飛んだらいやなので日次でバックアップとりたいと思います。 まずはMongoDBのバックアップ mongodump --db uptime --out /tmp/uptime_bak_120502 dbでDB名の指定、--outで出力先のディレクトリ名を指定。日付を入れるようにしておくとたぶんいい。 このコマンドをcronで日次とかでまわしときます。 バックアップが完了したので、試しにuptimeが使ってるuptimeDBをdropしてみました。 mongo > db.dropDatabase()ブラウザからダッシュボード開いてみると、 Express 500 Error: faile
MySQLではテーブルを作成時にストレージエンジンを指定することができますが、利用途中でストレージエンジンを変更することも可能です。 今回は3つの方法を紹介します。 ALTER TABLEを利用する方法 最も簡単な方法はALTER TABLEを利用することです。 mysql> ALTER TABLE test_table ENGINE = InnoDB;この方法は全てのストレージエンジンで利用できますが、実行にかなり時間がかかる可能性があります。 MySQLは古いテーブルから新しいテーブルへ行単位のコピーを実行します。その間はサーバのディスクI/Oはすべて使用され、 変換中はテーブルに読み取りロックが発生します。アクセスの多いテーブルで利用する場合は注意が必要です。 mysqldumpを利用する方法 mysqldumpを利用してテーブルをダンプする方法です。ダンプしたファイルでは、既存のテ
最近個人的にいろいろ弄っているFluentdでまた記事をかきます。 これからやること。 (1) Fluentdで収集したApacheログをGrowthForecastでグラフ化 (2) fluent-plugin-datacounterを利用して、ログのHTTPステータスコードのチェックと集計を行い、結果をfluent-plugin-growthforecastでグラフ化 Fluentdの説明と導入記事は前回の記事で。 Apacheログをfluentd+MongoDBで収集しRubyで集計 GrowthForecastの導入も前回の記事から。 様々な値をWebAPI経由でグラフ化できる「GrowthForecast」をインストールしてみた まず (1)Fluentdで収集したApacheログをGrowthForecastでグラフ化 GrowthForecastのWebAPIを叩いてくれるf
GrowthForecastとは WebAPIからグラフを更新できる画期的なツールです。 curlとかで叩くだけで簡単に様々な数値をグラフ化することができます。 割と最近、1分間隔でグラフ更新ができるようになったり、 溜め込んだデータをJSON形式で出力できる機能が追加されたりしたので試してみました。 近いうちに、Fluentdで集めたログをこのGrowthForecastでグラフ化してみる予定です。 ひとまず今日はGrowthForecastのインストールから動作確認まで。 GrowthForecastインストール手順 cpanmのインストール cd /usr/bin/ curl -LOk http://xrl.us/cpanm chmod +x cpanmAlien::RRDToolのインストール wget http://ftp.yz.yamagata-u.ac.jp/pub/lang
ものすごく流行の波に乗り遅れた感がありますがfluentd入れてみました。 fluentdとは 作者の古橋さんのブログから引用 http://d.hatena.ne.jp/viver/20110929/p1 - fluent は syslogd のようなツールで、イベントログの転送や集約をするためのコンパクトなツールです。 ただ syslogd とは異なり、ログメッセージに テキストではなく JSON オブジェクト を使います。また プラグインアーキテクチャ を採用しており、ログの入力元や出力先を簡単に追加できます。 - ログを素敵な感じで別サーバに転送、集約することが可能です。 ログはJSON形式で構造化されているのでログデータが利用しやすいのも特徴です。 手順 ※前提としてapacheが稼働済みであるとします fluentdインストール yumでさくっと vim /etc/yum.re
こちらの記事で気になったのでインストールして、実際に使ってみました。 1,000のサーバでも監視できるnode.js製死活チェッカー「uptime」 uptimeはnode.jsで動き、測定データはMongoDBに突っ込んでいくという、 まさに流行に乗っている感じのするツールです。 インストールも設定もめちゃ簡単なのでとりあえず入れましょう。 MongoDBインストール yumでさくっと vi /etc/yum.repos.d/10gen.repo [10gen] name=10gen Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 gpgcheck=0yum install mongo-10gen* --enablerepo=10genMongoDB起動 /etc/init.d/mo
apache mod_redis データ永続化が可能なKVS「Redis」にRESTfulなインタフェースを提供してくれる激アツなapacheモジュールがでてきました。URLやメソッドごとにRedisへデータ追加・取得・削除ができるので、Javascript等からRedisのデータが非常に扱いやすくなると思います。 とりあえずインストール手順とデータの取得をやってみます。 Github https://github.com/sneakybeaky/mod_redis Redisのインストール wget http://redis.googlecode.com/files/redis-2.4.10.tar.gz tar zxvf redis-2.4.10.tar.gz cd redis-2.4.10; make; make install;Redis起動 redis-server mod_re
MySQLを運用していると様々なトラブルに遭遇する事があります。 トラブルシューティングをする上で大事なのは、現在のMySQLの状況を知ることです。 各種情報から原因を探っていくためのコマンドを紹介していきます。 今回はSHOWコマンドと変数についてです。 SHOW VARIABLES 現在のシステム変数の値を表示する。システム変数とは各種設定値のこと。 これらの変数はmy.cnfで指定するほかにも、動的に変更可能なものがある。 mysqld全体に影響を及ぼすグローバルレベルと、セッションごとに影響するセッションレベルが存在し、 それぞれSHOW GLOBAL VARIABLESおよびSHOW SESSION VARIABLESで確認することができる。 mysql> SHOW VARIABLES; +---------------------------------------------
JMeterとは Apache Jmeter。Jakarta Projectにおいて開発されているソフトウェア。 クライアントサーバシステムのパフォーマンス測定/負荷試験を行えるツールです。 オープンソースで開発されているので、無償で利用することができます。 WebアプリケーションとWebサーバの性能測定に利用されています。 Javaで書かれているのでWindowsやLinuxでも環境依存せずに利用できます。 負荷をかけるだけではなくレスポンスの確認もできるので、"ある一定の負荷をかけた場合に、応答を正確に返せるか"といった検証が可能です。 JMeterの動作 インストールから簡単なテストシナリオの作成、結果の見方までを紹介します。 私は手元にあるWindowsマシンのJMeterでテストシナリオを作成し、それをlinuxサーバで実行するという方法を行っています。 以下にLinuxでのイン
MySQL-MHA(MySQL Master High Availability)は、MySQLがダウンした時に自動的に他のMySQLサーバへ処理を引き継ぐことが可能になる、自動フェイルオーバー機能を実現したプロダクトです。 DeNAの松信嘉範氏が開発しており、オープンソースソフトウェアとして公開されています。 http://code.google.com/p/mysql-master-ha/ 今回は以下の図のような構成で作成してみたいと思います。 このMySQL-MHAを利用することで[サーバA]に障害が発生してしまった場合は、以下のように自動的にフェイルオーバーを行ってくれます。 構築作業 まずは4台のサーバにMySQLをインストールしてください。 上図の通り各サーバは[サーバA][サーバB][サーバC][サーバZ]とします。 参考: CentOS5.6にMySQL5.5.15をインス
CentOS5.7で全文検索エンジンApache Solr3.4.0のインストールからMySQLデータのインポートまで Apache Solr入門 ―オープンソース全文検索エンジン 作者: 関口宏司,三部靖夫,武田光平,中野猛,大谷純出版社/メーカー: 技術評論社発売日: 2010/02/20メディア: 大型本購入: 18人 クリック: 567回この商品を含むブログ (22件) を見る の記事の続きです。 マルチコア化作業を進めた時に嵌ったことをメモしました。 Solrのマルチコア機能 通常1つのSolrをサーブレットコンテナにデプロイすると、1つのインデックスとそれに対応するインタフェースが提供されます。 マルチコアを利用すると、1つのsolr上に複数のインデックスとそれに対応するインタフェースを利用することができます。 インストールされたSolrのexampleには、multicore
Apache Solr http://lucene.apache.org/solr/ Apache Solr(ソーラー)はApacheコミュニティによってオープンソースで開発されている全文検索エンジンです。 Apache LuceneのHTTPラッパーのようなものです。 Luceneでは全文検索を行う為にはそれなりにコードを書かなければいけないですが、Solrを使うとSolrに対してHTTPのリクエストを行うだけで指定したデータをHTTPレスポンスで返してきてくれます。 利用するにはTomcatなどのサーブレットコンテナを利用する必要があります。 MySQLのデータベースにあるデータをSolrにインポートしてデータを検索するといったことも可能です。 現時点(2011/09/16)で最新のSolrは3.4.0です。1.4.xの時は同梱されていたJettyのバージョンは6.13でしたが、Sol
公開から約1年が経ち、ついに本日Groonga Storage Enginev1.0.0でメジャーリリースとなったので早速試してみました。 groongaストレージエンジン(mroonga)とは、全文検索エンジンgroongaをベースにしたMySQLストレージエンジンです。Toritonnプロジェクトの後継として開発されており、Toritonnと比べ以下のような特徴があります。 動的な組み込みが可能 ToritonnはMySQLのソースコードを直接編集する必要があったため、自分でビルドするかToritonn配布バイナリを利用しなければいけませんでした。groongaはMySQL5.1から利用できるpluginタイプのストレージエンジンになっているので、動的にロードすることが可能です。 更新性能向上 ToritonnはMyISAMを利用していたため、更新が発生するとテーブルロックがかかる為更
次のページ
このページを最初にブックマークしてみませんか?
『FAT47の底辺インフラ議事録』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く