2016年 7月 の投稿一覧

AWSで再起動後、SSHが繋がらなくなった場合の対処法。SELinuxが原因でした。


開発サーバーの再起動テストを行ったところ、SSHが繋がらなくなった。

原因はSSHのポートを変えて、SELinuxのせいでsshdが起動せずというわけで単純なものだったが、切り分けには数時間を要した。

 

まず、こういう場合にはボリュームは生きているはずなので、別のサーバーへボリュームをアタッチすることを考え、別の適当なサーバを立ち上げアタッチしてみた。

すると、そもそもどのボリュームをマウントしていいかわからない問題が発生した。

AWSだとボリュームあとアタッチすると/dev/xvdk・/dev/xvdk1・/dev/xvdk2みたいに3個増え、どれをマウントすればいいの?っていう。

で、ここでAWSサポートに連絡して、一応lsblkっていうコマンドで確認すればいいですよーっていう連絡をもらった。

AWSサポート、マジ神。

 

で、マウントしたはいいが、どう問題をきりわけたらいいのかと悩み藁をもすがる気持ちで/var/log/messagesを見る。

すると、

 

Jul 19 23:00:31 localhost systemd: Stopping OpenSSH server daemon…

Jul 19 23:00:31 localhost systemd: Started OpenSSH Server Key Generation.

Jul 19 23:00:31 localhost systemd: Started OpenSSH server daemon.

Jul 19 23:00:31 localhost systemd: Starting OpenSSH server daemon…

Jul 19 23:00:31 localhost systemd: sshd.service: main process exited, code=exited, status=255/n/a

Jul 19 23:00:31 localhost systemd: Unit sshd.service entered failed state.

Jul 19 23:00:31 localhost systemd: sshd.service failed.

 

sshが繋がらないのはネットワーク系ではなく、特に問題なのは太字の箇所。

なんでsshdが繋がらないのか・・・・と思ってググったところ、selinuxという文字が。

sshのポート番号をデフォルトにするとselinux発動、みたいな。

こちらも藁をもすがる気持ちでselinuxの設定を見てみた。

 

コマンドは、sudo vi /etc/selinux/config。

そしたらenforcingになっていたので、disbaledに変更。

AWSのコンソールに戻ってボリュームのデタッチ&元のサーバにアタッチして再起動。

 

そしたら、、、、

 

 

無事SSHつながった。

ビール飲んだ。

300円くらいするやつ。

 

この記事を見て誰かもビール飲める状況になれば幸い。

AWSにベンダロックインされてしまっているのが心配


DynamoDBなんか使うともう他のサービスに移行できない、ベンダーロックイン状態になる。

何が悪いかというと、他のサーバーに移したりすることが困難になること。

他に魅力的なサービスができたとしても移行できない心配とかは無視してもいい。MongoDB/MySQLを利用しても移行のコストは同じだけかかるし。

 

あとはAWSがなくなったらどうすんだ?っていうリスクも。

後者は自社の方が無くなる可能性が高いのでほぼ心配はない。

 

唯一あり得るのは、不当な値上げ。

ただ、これはリザーブドキャパシティをあらかじめ買っておけばある程度は防げる。

 

一応、心配はしたものの大丈夫なような気がしてきた。

何か他に心配すべきことがあれば知りたい。

Amazon API Gateway / DynamoDB / Lambdaで数百万imp / 日さばいてみた

サービスの耐久性能を1日数百万impから1日数千万impに上げたいと考え、AWSのLambda / API Gateway / DynamoDBの構成を擬似的にテストしてみた。

たしかに、小学生でもスケールアウトができるDynamoDBとLambdaは最高で、価格も超安かった。

でも、1日数百万impだとAPIGatewayの金額がちょっと面倒臭い値段になる。

Dynamo / Lambdaは数千円 / 月で済みそうだったが、API Gatewayは数万円 / 月。

うーん、数万円はちょっともったいないので実装の時間ができるまで一時停止。

でも、導入は確実にしなければならないので、次再開したらリリースの予定。

こういう実験は常日頃からしておくと、値段感もわかるし新しい技術の勉強にもなっていい感じだと思う。