Amazon Elastic Load Balancingのセットアップ:メールの転送とリダイレクト

画像



私の週末プロジェクトのリリース時間は近づいていました。 モバイルアプリケーションがアプリストアにアップロードされ、Google Playでの検証が非常に迅速かつ簡単であるため、Appleからの回答を待っていました。 サーバーアプリケーションのコードはすべて既に作成されており、何もすることはなく、約1週間の空き時間がありました。 ロードバランサーを事前に取得しておくと、将来的にはセットアップに多くの時間を費やさず、また、リリース後にセットアップすると、確実にサーバーがしばらくユーザーにサービスを停止するようになると思います。 サーバーホスティングにはAmazon EC2を使用したため、ロードバランサーはAmazon-Amazon Elastic Load Balancer(ELB)を選択しました。



そうだった



ドメインはInternet.bsに登録され、ec2では、サーバーにElastic IPを介して永続的なIPアドレスが割り当てられました。 したがって、ドメインレジストラにはタイプAのレコード(Aレコード)があり、このIPを指していました。 また、優れたレジストラは、メール転送を設定する機会を提供しました。これは、feeback @ imyarek.comに送信されたメールをメールボックスに受信するために使用していました。 レジストラは、あるサブドメイン名から別のサブドメイン名にリダイレクトすることもできました。これは、すべてのユーザーをwww.namek.comからnamerek.comにリダイレクトするために使用していました。 移動するとき、追加のサーバーやアプリケーションをインストールせずにこれらすべてを保存したかったため、追加のコードを記述する必要はありませんでした。



再配置:ELB、Route53、およびNSレコード



私が最初にしたことはELBのセットアップでした。 すべてが非常に簡単です:EC2の[ロードバランサー]タブで、[ロードバランサーの作成]をクリックし、便利なダイアログでどのサーバーポートがどのELBポートに対応するかを選択し、ヘルスチェックを構成します(ELBサーバー上の一部のURLの可用性を定期的に確認して、どのサーバーが「生きている」かを判断します、リクエストが送信されないようにする必要があります(リクエストは応答しないため)。また、負荷を分散するサーバーを選択します。 これらのパラメータはすべて、すでに動作しているELBで変更できます。 ところで、WebアプリケーションがHTTPSを使用する場合、ELBでHTTPSを構成し、アプリケーションサーバーでhttpを使用することをお勧めします。これにより、サーバーの負荷が大幅に軽減されます。 私たちの場合、これにより1秒あたり数倍のリクエストを処理できました。



次に、ドメインをELBにバインドします。ELBは構成されていませんが、アプリケーションを備えたサーバーはまだ直接使用されていたためです。 ELBには動的なIPアドレスがあるため、単純にAレコードとバインドすることはできません。 これを行うには、別のAmazonサービスであるRoute 53を使用する必要があります。これを行うには、ドメイン名でホストゾーンを作成します。 これにより、NSとSOAの2つのレコードが作成されます。 ドメインをホストゾーンにバインドするには、ドメインレジストラーでNSレコードを作成するか、ホストゾーンのNSレコードの値で置き換える必要があります。 次に、ドメインの対応先を指定する必要があります。そのためには、エイリアスオプションを選択してホストゾーンにA(Aレコード)レコードを作成し、エイリアスターゲットドロップダウンリストでELBを選択する必要があります。



画像



その後、サーバーは再び古いアドレスで使用可能になりました。 しかし、彼はwwwのないアドレスへのリクエストにのみ応答し始め、wwwのアドレスはまったく応答しませんでした。



wwwのあるドメインからwwwのないドメインで301リダイレクトを構成する



設定することもできますし、その逆も可能です。設定はまったく同じです。 同じELBを指す別のAレコードではなく301リダイレクトが使用されるのはなぜですか? 検索エンジンの観点からは、この場合、完全に同一のコンテンツを持つ2つのサイトがあり、検索エンジンは控えめに言っても嫌いです。

リダイレクトの設定は、レジストラでできるほど簡単ではないことがわかりました。 フォーラムおよびStack Overflowのソリューションとして、Apacheまたはnginxでリダイレクトを設定しますが、アプリケーションサーバーはApache Tomcatであるため、これらのソリューションは私たちには適していませんでした。 私は彼の前に別のサーバーを置きたくありませんでした-応答時間は不快でした。 適切なロジックを使用してコードを記述することも提案されましたが、これをまったく行いたくありませんでした。

それでも、解決策は見つかりましたが、まったく明らかではありませんでした。 これを行うには、ユーザーをリダイレクトするドメインの名前でS3バケットを作成する必要があります。 ドメイン名で作成することが重要です。そうしないと、後でこのバケットをRoute 53のドメインにバインドできなくなります。作成されたバケットの[プロパティ]メニューで、[静的ウェブサイトホスティング]オプションと[すべてのリクエストを別のホスト名にリダイレクトする]オプションを選択します。 ユーザーがリダイレクトされるドメイン名を入力し、構成を保存します。



画像



次に、ドメインのホストゾーンのRoute 53で、エイリアスオプションを使用してドメイン名のAレコードをwww(またはなし)で作成し、作成したS3バケットをエイリアスターゲットとして指定します。



画像



すばらしいです。現在、wwwを使用してwwwなしでドメインにアクセスでき、選択したオプションにユーザーを正しくリダイレ​​クトすることさえできます。



メール転送



残念ながら、Amazonサービスを使用したメール転送の設定は機能しません。そのようなサービスがないためです。 しかし、すぐにメール転送を設定できる優れたサービスImprovMXが見つかりました。 セットアップの手順(アクションを1つしか実行しないために呼び出すことができる場合)は、サイト自体にあります。 必要なことは、ホストゾーンに次の内容のMXレコードを作成することだけです。



10 mx1.improvmx.com 20 mx2.improvmx.com
      
      





ドメイン名と、文字がリダイレクトされるサイトのメールボックスを入力するだけです。



おわりに



結果として得られたもの:必要な機能を維持しながら、アプリケーションサーバー間の負荷分散-wwwのあるドメインからwwwのないドメインへのリダイレクトとメール転送。 ボーナスは、生産性の向上と、複数のサーバーを追加するだけで生産性を迅速に向上させる機能です。 ご清聴ありがとうございました。



All Articles