よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

Route53にNaked Domainを設定する方法〜ELBを利用しない場合〜

以前のブログでは『Route53にNaked Domainを設定する方法〜ELBを利用する場合〜』について書きましたが、今回はELBを利用しない場合の設定方法を記しておきます。

Route 53ではAレコードの設定でNaked Domainを表現する "@" が利用できません。そのため、AレコードのAliasの機能を利用して実現します。

 

ここでは interu.jp というNaked Domainでアクセスできるようにしてます。

まずは www.interu.jp のAレコードを定義します。

f:id:interu:20121218002423p:plain

上記の設定は、一般的なDNSのAレコードの設定で以下の設定となります。

a    www   75.100.100.100
 

続いて interu.jp でアクセスした時に www.interu.jp へのエイリアス設定を行います。


f:id:interu:20121218002428p:plain

AliasでYesを選択し、Alias Targetに上記で定義した www.interu.jp を挿入します。

※ www.interu.jp を定義していない場合はエラーとなります

 

これで interu.jp でアクセスすると www.interu.jp で定義しているところにエイリアス設定が行われNaked Domainでアクセス可能となります。

 

当たり前だけどElastic IPにもURLは割り振られるよ

EC2を起動した時にはそのサーバにアクセスするためのURLが割り振られます。

Elastic IP(固定IP)については、ManagementConsole上での表記がURLではなくIPアドレスのみとなっていますよね。

で、普通に考えるとElastic IPにもURLは割り振られるだろうというのは予想できますが、念の為に確認してみたところ、想像通りでした。

 

ちなみに何故調べようと思ったかというと、先日、HerokuのShared Postgresが以下のようなエラーを返すようになり、サービスダウンしたようで、その時にHerokuのDB接続情報に関する表記を見たのがきっかけでした。

 

Sql could not translate host name "ec2-123-45-67-89.compute-1.amazonaws.com" to address: Name or service not known
 
※Herokuの SQL DaaS からDB接続情報を確認すると以下のようになっています。

 

f:id:interu:20121207153521p:plain

 

これをみて、「Elastic IPを使っていないのかっ!?」と一瞬思いました。

で、もしこのインスタンスがハングって別インスタンスを起動してリカバリしないといけない状況だとしたら、Heroku側のオペレーターが情報を書き換えてくれるまでどうしようもないのか!?という考えが脳裏をよぎり・・・。

Herokuのことなのでそんな仕組みにはしないだろうとは思いましたが、念の為に確認したところやはりElastic IPにもURLは割り振られていました。URLというかDNSの設定と言ったほうが正しいですかね。

なので、記載がURLであってもElastic IPを利用しているかもしれないということです。これで一安心ですね。

 

上記の障害については、障害発生してから20分後にはShared Postgresが復旧しました。Shared Postgresが別インスタンスでリカバリしたのか、同一インスタンスでShared Postgresがリカバリしたのかは確認するすべがなかったので定かではありませんが。。。

 

最後に1点だけ疑問点が残りました。

それは、「何故HerokuはわざわざURLを利用しているのか」というものです。

DNSの正引きをしない直IPの方が、耐障害性も上がるし、正引きの時間も無視できるのに。

まぁ、かなり細かいことでほとんど無視してもいいレベルのことですが、気になってしまいました。詳細を知っているという人がいましたら、教えてくださーい。

「AWSを活用して少人数で複数のサービスを運用するコツ」〜JAWS-UG in Nagoya〜

10月6日に名古屋で開催された第4回JAWS-UGにて、「AWSを活用して少人数で複数のサービスを運用するコツ」というテーマで、SonicGardenの運用に関しての考え方や取り組みについてお話させていただきました。

 

当日の資料を以下から見えるようにしておきます。

 

 

また、資料のインプットとなっている記事については以下にリンクを用意しておきますので、時間があるときに読んでいただけましたら幸いです。

 

実践で使えるEBSスナップショット取得スクリプト - よかろうもん!

トータルフットボールなチームの成り立ち 〜エンジニア視点〜 - よかろうもん!

 

ご感想や疑問等ありましたら、画面右下に表示されているMessageLeafよりメッセージをください!

 

Fedora17でmonitをsystemdから安定起動する方法

Fedora17でmonitをsystemd経由で起動すると何故かdaemonが正常起動するときとしない時がありました。

正しくは起動処理は上手くいくが、daemonの状態がactiveからdeactivating (stop-sigterm)になり、最後には inactive (dead) になってしまうという状況でした。

 

# service monit status

Redirecting to /bin/systemctl status  monit.service
monit.service - Monit process and file monitoring utility
Loaded: loaded (/usr/lib/systemd/system/monit.service; enabled)
Active: inactive (dead) since Fri, 28 Sep 2012 00:36:01 +0900; 28s ago
Process: 10201 ExecStart=/usr/bin/monit -c /etc/monitrc (code=exited, status=0/SUCCESS)
Main PID: 10202 (code=exited, status=0/SUCCESS)
CGroup: name=systemd:/system/monit.service

 

上記のようなステータスになり、monitのdaemonがinactiveになります。

ですが、時折、正常起動できたりするため安定起動しないことに不安をおぼえます。

 

これを解消するにはmonitの起動ファイルに手を加えます。 

# vi /usr/lib/systemd/system/monit.service

[Unit]
Description=Monit process and file monitoring utility
After=network.target

[Service]
#Type=forking
Type=simple
ExecStart=/usr/bin/monit -I
ExecReload=/usr/bin/monit reload

[Install]
WantedBy=multi-user.target

 ※SystemdのServiceの詳細はこちらを見るとわかります。

 

ここではTypeをsimpleにして、さらにmonit起動オプションを付けてbackgroundで動かないようにしてます。

これでmonitも安定稼働するようになるはずです。 

Route53にNaked Domainを設定する方法〜ELBを利用する場合〜

だいぶ昔にRoute53がネイキッド・ドメインに対応しましたが、まだ試したことが無かったので実際に設定していみました。 

設定方法はシンプルで、AレコードのAliasの機能を利用し、サービスをホスティングしているフロントのElastic Load BalancerのURLを設定するだけです。

 

f:id:interu:20120907163442p:plain

 

Alias TargetにELBのURLを入力するとELBのHosted Zone IDが自動補完されるようになっています。

これだけでネイキッド・ドメインを割り当てることができます。

 
今回はManagementConsoleから設定しましたが、ruby_route_53 のようなgemを利用してAPIをコールし設定することも簡単にできるようです。
#Creating a record that corresponds to an Amazon ELB (zone apex support) route53 --zone example.com. -c --name example. --zone-apex-id Z3DZXE0XXXXXXX --type A --values my-load-balancer-XXXXXXX.us-east-1.elb.amazonaws.com

 

ニフティクラウドC4SAでrailsアプリを動かしてみた vol.1

 先日正式公開されたアプリケーションプラットフォーム「ニフティクラウド C4SA(シーフォーエスエー)をさっそく利用してみました。

 

Perl / Python / Ruby / CakePHP / Ruby on Railsなど様々なコンテキストが提供されていますが、今回はRuby on Railsを試してみます。

 

まずは1時間程度C4SAを利用してみての率直な感想。

C4SAの知識ゼロの状態から30分もあればサンプルアプリを動かすことができたので、仕組みとしては素晴らしいと思った。

また、実際に利用してみて、ローカルの開発環境を一切利用することなくブラウザ上でアプリ開発ができたので、この点もGood!

だが、現状でherokuの代わりになるかというと、まだまだそのレベルには達していないという印象。

scaffoldレベルのアプリなら簡単に動かすことができるが、ramagickのbundle installでコケたりするため、これからの成長に期待したいところです。

 

まずは動画を見て何となく雰囲気を掴んでみて下さい。

 

 

その他、雑記。メモレベルですが一応書いておきます。

 

■ ファイルについて

単なるviewerかと思ったら、ファイルのエディットもできるので意外と便利。

レスポンスが遅い?反応が悪い?ので、何度もクリックしないといけないのが難点。

 

■ CLI について

CLIはコンソールだと思えばすんなり理解できる。

デフォルトで作成される rails_app 配下でのみ動作する模様で、 home 以下に rails_app 以外の名前で配置しても認識しなかった。cd コマンドも利用できないのでどうすればいいのかわからなかった。ただ、niginxの設定でパスを変更できるようになっているので、何か裏ワザ的なやり方があるのかもしれない。知っている方、教えてください。

 

■ キャンバスについて 

デフォルトの名前以外を入力すると、キャンバスの作成に異常に時間を要したり、作成に失敗することが多々あった。

 

 

 

 

このあと、githubにあるredmineを動かしてみようとしたが、最終的にまだ動かすことはできていない。

(1) database.ymlの編集

(2) Gemfileの変更

をしてbundle installはまでは成功したが、

c4sa$ bundle exec rake db:migrate --trace RAILS_ENV=production

を実行すると、cannot load such file -- openid というエラーが発生してしまった。Gemfileの編集で必要なものまで消してしまったのかもしれない。。。 だが、bundle installまでは成功しているので後一息。

 

 

 

続きは明日以降にやります。