タグ

ブックマーク / dev.classmethod.jp (204)

  • Amazon VPC環境にメンテナンス用の踏み台サーバを構築する | DevelopersIO

    よく訓練されたアップル信者、都元です。前回は「Amazon VPCを使ったミニマム構成のサーバ環境を構築する」と題して、Amazon VPCに小さなサーバ環境を構築しました。この環境は、アプリケーションサーバ(Webサーバ)がユーザからのHTTPを受け付けつつ、管理者によるメンテナンスのためのSSHの受け付けも兼ねている状態です。セキュリティの観点からは、あまり好ましい状態とは言えませんね。 そこで今回は、メンテナンスのための踏み台(bastion)サーバを構築し、よりセキュアな構成にしてみましょう。環境の構成図は右の通りです。まず、アプリケーションサーバはHTTPのみを受け付けるようにSecurity Groupを調整します。また、public subnetの中にもう一つサーバを起動し、踏み台として使います。こちらはSSHのみを受け付けるように調整します。踏み台サーバは常時起動しておく必

    Amazon VPC環境にメンテナンス用の踏み台サーバを構築する | DevelopersIO
  • Amazon Linuxでupstartを使ってmonitを止めない方法 | DevelopersIO

    止めたくないプロセス サーバを長時間運用していると何かの拍子にプロセスが落ちてしまうことがあります。そんなときのためにプロセスの死活監視をするわけですが、そのプロセス監視が落ちてしまっては困ります。そこで、今回はupstartを使ってアンデットなプロセスの設定を行いたいと思います。Amazon Linuxには最初からupstartの仕組みが入っています。 monitのセットアップ お手軽プロセス管理の仕組みを提供してくれるmonitを例に挙げます。まずはセットアップから $ sudo yum update -y $ sudo yum install monit -y プロセス監視の設定 プロセス監視の設定ファイルの作成です。今回はApacheの設定を書いてみます。ここではスマートに設定ファイルを作成してみたいと思います。ヒアドキュメントを使って設定ファイルの中身を記述します。1行毎にech

  • Amazon RDSの新機能:リードレプリカをマスターに昇格させる! | DevelopersIO

    Amazon RDSの新機能は、リードレプリカの昇格機能! RDBの面倒な管理をよろしくやってくれるAmazon RDSは、アプリケーションのインフラに関わる構築や運用に時間を使いたくない顧客やエンジニアにとって無くてはならないサービスです。そんなRDSに新機能が追加されました。リードレプリカの昇格機能です。この機能によって得られるメリットは以下の3つです。</p インデックスの作成・再作成等のDDL操作の高速化 大きなデータベースを複数のマスターに分けるシャーディング MultiAZとバックアップ時へのリカバリ以外の方法を提供 リードレプリカ リードレプリカは、その名の通り読み込み専用として利用するマスターの複製データベースです。特徴は、マスターのデータを非同期にレプリケーションします。非同期ですので常にマスターと完全に内容が一致しているわけではありませんから、マスターの負荷分散用として

  • CORS(Cross-Origin Resource Sharing)によるクロスドメイン通信の傾向と対策 | DevelopersIO

    CORS(Cross-Origin Resource Sharing)って何? CORS(Cross-Origin Resource Sharing)は、その名の通り、ブラウザがオリジン(HTMLを読み込んだサーバのこと)以外のサーバからデータを取得する仕組みです。各社のブラウザには、クロスドメイン通信を拒否する仕組みが実装されています。これは、クロスサイトスクリプティングを防止するためです。Aというサイトに訪問したのに、Bというサイトに向けて個人情報を送っていたというのは困りますよね。例えば、オリジンから読み込んだHTML内のJavaScriptでJSONデータを読み込むとしましょう。JSONデータが同じサーバにあれば普通に読み込めますが、別のサーバにある場合は読み込めません。まぁ実際のところはJSONPという仕組みを使ってできちゃったりしますが、抜け道的なやり方で使われていました。CO

  • VPC内のEC2インスタンスに複数IPアドレスを割り当てる | DevelopersIO

    EC2インスタンスに複数IPアドレスを割り当てる 先日、大きな注目の機能追加がありました。1つのインスタンスに複数のIPアドレスを割り当てられるようになったのです。パブリックIPとプライベートIPをセットにして割り当てることができます。これにより、IPベースのバーチャルホストなどを組むことができるようになります。 ENIって? ENI(Elastic Network Interface)は、EC2インスタンスに挿す仮想のNIC(ネットワークカード)です。1つのNIC毎に最大で30IPまで設定でき、1つのインスタンス毎に最大で8枚のNICの設定できますので、240のIPアドレスを設定することができます。インスタンスタイプを大きく設定しなければいけませんが、何台もインスタンスを用意することなくたくさんのIPアドレスを使うことができます。 ENIを作成する ENIを使って仮想NICを作成してみま

  • Amazon EC2からVPCへの移行をどうするか | DevelopersIO

    EC2とVPCの違い とりあえずお試しでEC2を使っている人が、業務的な都合によりVPCに移行したいという場合、どうすればいいか調べることってあると思います。そこで、ここでは相違点や考慮点を挙げたいと思います。 EC2インスタンスを移行する 移行することができます。まずはじめにEC2内のインスタンスのスナップショットを作成します。次にこのスナップショットを基にVPCのインスタンスを作成します。この際に気をつける事は、内部IPアドレスが変わります。外部IPアドレスは付きません。EC2インスタンスは、起動時に外部IPアドレスDNS名、内部IPアドレス、内部DNS名が自動で付与されますが、VPCインスタンスは、起動時に内部IPアドレスのみ付与され、しかも、IPアドレスを自分で指定することができます。気をつける事は、今のところVPC内でt1.microインスタンスを起動することはできません。 E

  • Amazon VPC内で内部ロードバランサーを使う | DevelopersIO

    内部ロードバランサーとは 従来から提供されているELB(Elastic Load Balancer)は、インターネットからのアクセスに対して、AZ(Availability Zone)をまたがった負荷分散を行っていました。今回の発表により、VPC内において、インターネットに公開していないサブネット内部のサーバを負荷分散できるようになりました。これにより、例えば外部から接続されるWebサーバはインターネットELBを使い、内部から接続されるAPサーバは内部ELBを使うといった、多段階の負荷分散ができるようになります。今までの作法として、WebとApサーバを同じEC2インスタンスにまとめることで管理を楽にしていましたが、これからは、それぞれ別に負荷分散をすることができるようになります。 WebサーバとAPサーバそれぞれで負荷分散 以下のような形でテスト環境を作ってみます。 VPC内で2つのAZに

  • Amazon RDSによるレプリケーションについて理解する | DevelopersIO

    Amazon RDSとは Amazon RDSは、AWSが提供するデータベースサービスです。別にEC2上にMySQLとかインストールすれば使わないんじゃない?って思う方もいらっしゃると思いますが、実はスゴいサービスなんです。何故サービスと名付けているか、それは、高可用性や耐障害性を実現しているからです。世の中の多くのシステムは、データベースが壊れるとシステム全体が止まってしまいます。ですから、データベースが止まらないように設計・運用する必要があります。 フォールトトレランスとは フォールトトレランスとは障害発生時にサービス全体を止めずにシステムを動かし続けることです。障害が起きないようにすることも大事ですが、障害が起こったときの対応も重要ですよね。Amazon RDSは、MultiAZ・リードレプリカによって障害に強いサービスを実現しています。 MultiAZ構成 RDSには起動時にMul

  • AWS Account Billingを使って毎日の利用額の確認する | DevelopersIO

    AWSからの請求を確認する AWSは、1時間単位やリクエスト数等の使った分だけ請求される従量課金のサービスです。以前までは月末に請求額をお知らせするメールが来てインスタンス落とし忘れてビックリなんてことがありましたがw、今は請求額に関するアラート通知があり、より計画的な運用が可能となっています。そして、このたびAWS Account Billingがリリースされました。 請求確定のメールで確認する アカウント管理画面で確認する 課金アラートの通知で確認する AWS Account Billingを使って確認する AWS Account BillingのProgrammatic Accessとは AWS Account Billingは、AWSの利用状況についてプログラムからアクセスできる仕組みです。具体的にはS3にCSV形式で利用状況がアップされるので、プログラムからアクセスして加工するこ

  • Amazon EC2でプロセス監視ツールを導入する – monit – | DevelopersIO

    プロセス監視について 出社してサーバーを見たらプロセスが落ちてた!?こんな経験ありませんでしょうか。24時間365日の安定運用が当たり前に求められる現在、サーバー担当者が張り付きで監視をするにはコスト的にもリソース的にも限界があります。そこで、ある程度作業を自動化しようというのが今回の試みです。 monitとは monitは、プロセス/プログラム/ファイル/ディレクトリ/ファイルシステムを管理/監視するためのユーティリティです。monitは、エラーの状況に合わせて自動メンテナンスや修復を行い、意味あるアクションを実行することができます。例えば、実行されない場合、多くのリソースを使用している場合、プロセスが応答せずに停止しない場合等に、プロセスを再起動/開始することができます。他にも、ディレクトリ/ファイル/ファイルシステムにおける、タイムスタンプの変更、チェックサムの変更、サイズ変更等を監

    bojovs
    bojovs 2013/04/09
  • ELB配下のEC2アクセスログについてあれこれ | DevelopersIO

    ELB配下のEC2インスタンスは接続元がELBのアドレスになる ELB配下のEC2インスタンスが、接続元のIPアドレスなど情報を得ようとする場合、初期設定ではおそらくELBのIPアドレスが返されてしまいます。これは、ELBを経由しているので当たり前といえば当たり前ですが、これではどこからアクセスされているのか把握できません。そこで、ELBの機能を利用して接続元のIPアドレス等を取得したいと思います。 X-Forwarded-ForとX-Forwarded-Proto ELBには市販されているロードバランサー製品と同じように、接続元のIPアドレスをヘッダー情報に付けてくれます。そこで、EC2インスタンス側でその情報を取得してログとして書き出してみます。また、ELBはSSLターミネーション機能がありますので、接続元がどのプロトコル(HTTPかHTTPSか)でEC2インスタンスにアクセスしたのか

  • Amazon VPCにおけるセキュリティグループの役割 | DevelopersIO

    セキュリティグループとは セキュリティグループは、同一グループ外のインスタンスと通信を行う際のトラフィックを制御するファイアウォールです。VPC内でインスタンスを立ち上げた場合、同時に最大5つまでのセキュリティグループを設定することができます。セキュリティグループは、サブネットレベルではなく、インスタンスレベルで設定します。ですから、ひとつのサブネットの中でインスタンス毎にセキュリティグループが設定できます。インスタンス起動時にセキュリティグループを指定しなければ、VPC用のデフォルトのセキュリティグループが設定されることになります。それぞれのセキュリティグループは、インバウンドとアウトバウンドのトラフィックに対して制御することができます。 VPCセキュリティグループの基的な特徴 以下は、VPCセキュリティグループの基的な特徴です。 許可リストを設定することができますが、拒否リストは設

  • Amazon VPCでNATを使ってPublic SubnetとPrivate Subnetを分ける | DevelopersIO

    Amazon VPCでPrivate Subnet Amazon VPCは、EIPやELBを使ってPublic Subnet内のインスタンスにインターネットからアクセスできる事が分かりました。今回は、Private Subnetを作り一切インターネットからアクセスできないようにします。また、例外としてEIPを持つNATインスタンスを通じてのみ外部のインターネットと通信できるようにします。インターネット上のサーバーログにはPrivate Subnetからのアクセスである痕跡は残りません。NATインスタンスのIPアドレスが用いられます。NATインスタンスは、セキュリティグループによってデフォルトで全てのポートが閉じていますので、どうしても公開したいポートを開けることでセキュリティを保ちます。 以下のような構成を作成します。 VPCの新規作成ウィザード VPCの新規作成ウィザードの指示に従って進

  • Amazon VPCでロードバランサーを使う | DevelopersIO

    Amazon VPCでELBの設定ができるようになった つい最近、VPC内でELB(ロードバランサー)の設定ができるようになりました。今回はこれを試してみたいと思います。 VPCとインターネットゲートウェイの設定 VPCはデフォルト設定で作成しました。 インターネットゲートウェイもデフォルト設定で作成しました。 サブネットの設定 ELBを使う上で最も重要なのがサブネットの設定です。東京リージョンには2つのアベイラビリティゾーンがありますので分散配置をします。今回は、10.0.0.1/24をAZのap-northeast-1bに配置、10.0.1.0/24をAZのap-northeast-1aに配置します。 ルートテーブルの設定 ルートテーブルについての設定はウィザード形式で特に出てきませんでしたので少々ハマりました。VPCとインターネットゲートウェイの間でのルーティングについて記述する必要

  • Amazon VPCでプライベートなクラウド環境を作成する | DevelopersIO

    Amazon VPCとは? Amazon VPCは、インターネットから隔離された仮想的なネットワークを作るサービスです。完全に隔離することも可能ですし、インターネットに接続するエントリポイントや企業ネットワークに接続するエントリポイントを作ることも可能です。今回は初回なので最も簡単な設定である、固定IPアドレスを用いたインターネット向けエントリポイントの作成をします。 VPCの新規作成 AWS Management Consoleには、ウィザード形式で新規作成ができます。今回は、最も上のメニューを選択します。 インターネットゲートウェイ、サブネット、占有ハードウェア可否の設定 インターネットゲートウェイのためにIP CIDRブロックを設定します。今回はデフォルト設定で10.0.0.0/16とします。サブネットは10.0.0.0/24とします。このサブネットはアベイラビリティゾーンを指定する

  • Amazon VPCのネットワークACLについて | DevelopersIO

    Amazon VPCのネットワークACLとは? Amazon VPCのネットワークACL(アクセスコントロールリスト)は、サブネット内外のトラフィックを制御するファイアウォールとして任意のセキュリティを提供します。セキュリティグループの設定と同じようにACLのルールを適応することによって、VPCに追加のセキュリティ層を提供します。EC2はサブネット指定ができませんのでネットワークACLを利用することはできません。 セキュリティグループとネットワークACLの違い VPCセキュリティグループとネットワークACLには違いがあります。比較表を見てください。

  • Amazon VPCでELBとNATを使ってよりセキュアな環境を作る【5日目】 | DevelopersIO

    公開するサーバはセキュリティを特に強化する ELBを介してEC2インスタンスのWebアプリにアクセスするとき、ELB以外からのアクセスを拒否したくなります。また、公開IPアドレス自体も持ちたくありません。公開IPを持たせたくないということでVPCを前提に考えます。そして、ELBをパブリックサブネットに置いて、EC2をプライベートサブネットにすることで実現できます。今回は、VPCを使ってELBとNATインスタンスを使ったセキュアな環境を構築したいと思います。 VPCとELB ELBとAutoScalingが連携できることは知られていますが、VPC内でも使うことができます。 VPC内のELBのテクニックとして、ELB自体をパブリックサブネットに置いてEC2をプライベートサブネットにおくことがあります。ELBがリバースプロキシとして働いて、EC2はELBからのHTTPインバウンドのみ受け付けるの

  • Backbone.jsでつくるMVPなUIパターン【タブ】 | DevelopersIO

    今回はBackbone.jsを使ってタブUIを作ってみたいと思います。デザインはTwitter Bootstrapをつかって以下のようにしました。 世界的に名高い企業の名前が並んでいますね。 デザインはhtmlを仮組みしてBootstrapで既にできていることにします。(題と離れてしまうので…すみません><) ボタンの部分に active というクラスをつけると選択中のデザインに変わり、 内容の部分におなじく active というクラスをつけると display: block; となり表示される仕組みです。 すべてactiveな状態 すべて非activeな状態 htmlはこちらです <div id='ui-tab'> <ul class='nav nav-tabs'> <li class="active"> <a href="#apple">Apple</a> </li> <li> <a

  • iptablesを設定して日本のIPだけを許可する | DevelopersIO

    shellを作ってみる Webサーバを立ち上げる機会が増えてきたので、事前にできる限りの対策はやっておこうと思い、国単位でのアクセス制御をやってみたので自分用のメモとして残します。 世界の国別IPv4アドレス割り当てリストが公開されていますのでその情報を活用させてもらうことにします。 動作させた環境はAWS Amazon Linuxです。 ※あくまでも以下はサンプルのシェルなので、適用する場合は自己責任でお願いします。自身すら入れなくなる可能性もあるのでご注意を。 #!/bin/sh IPLIST=cidr.txt # 初期化をする iptables -F # Flush iptables -X # Reset #iptables -P INPUT DROP # 受信はすべて破棄 iptables -P OUTPUT ACCEPT # 送信はすべて許可 iptables -P FORWAR

  • [Ruby on Rails] Sidekiq で非同期処理を実装する | DevelopersIO

    Sidekiq とは Sidekiq とは Rails アプリで非同期処理を行うためのライブラリです。複数のジョブを同時に実行することができ、メモリを節約することができます。 ということで今回は Sidekiq の基と使いかたをざっくりと学んでいきたいと思います。 Sidekiq を使ってみる インストール まず前提条件として Redis が必要なのでインストールしましょう。Redis はジョブの管理に使われています。 brew install redis インストールは Gemfile に追加して bundle install するだけです! vim Gemfile # gem 'sidekiq' を追加 bundle install Worker を実装する 非同期処理を行うクラスは Sidekiq::Worker を include してつくります。あとは perform メソッド

    [Ruby on Rails] Sidekiq で非同期処理を実装する | DevelopersIO