ちょっと使いにくいっすね。[E:coldsweats01]
画像のThreatMapも面白いですね。常にどこからか不正な通信を受けているのが判りやすいです。
そういえば、AWSからFortigateのConfigを取るときに、CLIとGUIと2つ取れるんですが・・・ちゃんと5.0+ってやつなんですけどね・・・うーん(゜-゜)
これはAWS側のサブネット情報をぶち込む感じなんですが、こちらはroute-idが投入出来ました。
と・・・GW明け・・・久々にMerakiネタです。
うーん・・・AWS・・・ムズカシイネ。
今日も昨日の続きです。
最近Arduinoをいじれていないのですが、結局週末は機器には触っている日々です。
VPNは張れてたんですけどね・・・対象となるEC2にpingが届かないんですよ。
前回のSRX320の記事でBGPがどーちゃらと言っていたので、少しピンと来た人もいるかもしれませんが、実はAWSとのVPN接続を試したかったからです。
しかし・・・SRX320・・・シンドイ[E:sad]・・・AWS・・・シンドイ[E:wobbly]
結果的に出来たけどさ~・・・これ運用管理したくないよ?[E:coldsweats02]
まずSRX320ですが、冗長化構成(Active/Passive)は従来のSRXシリーズの方法で出来ますのであえて取り上げる事もない・・・かな?
ただ、GUIである程度リダンダント構成が組めるようになっていました。
問題はリダンダントインターフェースの組み方(作法)が私の知る限りでは2通りあるので、どちらを選択するかによると思いますが、rethインターフェースでの組み方でやる場合は結局はCLIが楽です。なんだかんだでrethによる冗長化設定をしておかないと言う事を聞いてくれないので、結果的には・・・GUIとCLIを駆使する事になります・・・。
あとfxp0の動きが中々シックリいかなかったですね・・・フェイルオーバーテストをした時も動きが・・・う”-む・・・なんだろう?!って感じでした。
さて、SRXの冗長化構成でAWSとのVPN接続にすると、AWSが気を利かせてくれる「設定のダウンロード」にある情報ですが・・・このまま投入してしまうと動きません。泣きます。
AWSでのVPN接続は「VPN接続の作成」からアプローチすると比較的やりやすいと思います。。。画像はもう基本的な投入が完了してしまっていますが、入力しているのは、RemoteのIP(受け側のVPN機器:今回はSRX320)のグローバルIPを入れて、Remote側のネットワークセグメントと、BGP動的の設定と、VPNの対象とするVPCです(もう文字だけで説明しても分かりづらいよね・・・)。BGPはデフォルトのASNでいきませう。
なので、AWSサイドについてはVPCがあらかた組み終わっていて、何を最初の手順で行えばよいかが分かっていれば・・・カンタン?
問題はSRX側かな・・・画像はVPNウィザードなんですが、これが分かりにくい。今までNetscreenもSRXもこれ使ったことないので余計に分かりづらい。そしてAWSから提供されるのはCLIでの設定情報なんで、ウィザードに当てはめては使えません。
てことでCLIで挑む訳なのですが、リダンダントSRX環境なので一部読み替えて投入しなければなりません。
#set security ike gateway gw-vpn-1a23b567-x external-interface ge-0/0/0.0
こんな感じの設定内容で投入・・・ではなくてここでUntrustにあたるインターフェースを指定しなければならないのと、冗長化時でrethインターフェースの場合はreth0.0とかに書き換えねばならんす(実際には冗長化時は0.0は機器により強制的にfxp0だったりするので注意)。
SRXは0だったり0.0だったり分かりにくいよね。
IPSecの設定ではこのインターフェースの部分を気を付ければOK。
BGP側の設定はzoneに注意。
#set security zones security-zone trust interfaces st0.1
#set security zones security-zone untrust host-inbound-traffic system-services ike
#set security zones security-zone trust host-inbound-traffic protocols bgp
Juniper社会での標準ではtrust/untrustが主流ですが、ここでzone名を変更している場合はそのzoneに合わせて変更しないと駄目です。
それと当たり前の事なのですが、最初のIPSecであればこの程度の読み替えで済みますが、2つ目、3つ目と増やしていくと・・・読み替え範囲が多くなります。
あっしはBGP初心者なんでもうちょっと動きを勉強せねば・・・。
VPNが張れてるかどうかはMonitor画面で確認出来ます。StateがUPになっていますね。AWSはIPSec2本掛けせねばならんので・・・ふぅ。
BGPもちゃんと動いていそうです。にわかインフラエンジニアな私でも出来ましたね[E:smile]
YAMAHA RTXでのBGPの事例は多いので私はやる予定はないのですが(ではなくて海外でも同じことをするのでJuniperを選んだまでで)、Configを見る限りではRTXの方が簡単に見えるんだよなぁ…。RTXって冗長化してBGP廻せるんだっけ?
てことで、AWS側もちゃんとステータスがUPになってBGPルートになりました。
うーん・・・。。。
これって2本分のIPSec通信が掛かるやん?
以前、Meraki MX100でも1本分だけ取りあえずVPN張ったんだけど殆ど無通信(IPSecのみ)で7000円位掛かるんだよね・・・。
倍[E:sign02]
勉強代高いなぁ・・・[E:coldsweats01]
とりあえず、SRXは15点台のファームになったけど・・・相変わらずツンツンしている感じでした[E:coldsweats01]
次はJuniper SRXのSD-WANな部分をやれればと思うんだけど・・・とりあえず遠隔指示書を書かねば・・・。
でも火曜日に納品されて今日にはもうVPN張れてるんだから早いっしょ?(笑)
届いてから構成を考えて・・・金曜日に冗長構成を仮組しておいて、今日環境に投入してAWSの接続まで。ちょこっと試験もしているのでだいたい1日仕事ですね。
これが委託している環境だと、まぁ~メンドクサイっ。これもSIしてもらおうとするとそれもまたメンドクサイ。結局自分でやるのが手っ取り早いのか・・・orz。
誰か安く面倒みてくれないかなぁ・・・。[E:coldsweats01]
今、ホテルのチェックアウト1時間前ぐらいです。
これから長い帰国の旅です。
今回は不可抗力?な延長戦もあり、ちょっとしんどかったです。
チラ見だけってことで・・・
だいぶ構成が違うぞ・・・みたいな。[E:coldsweats01]
10年前と今回・・・なのですが。
今回、過去にないぐらいカテゴリーの適用をしたのですが、これら全て関連していて、一部即興でやっている感じです。
昔はですね・・・遠隔地という事もあって、あえて冗長化というのを採用せずにコールドスタンバイの手段をとりました。
現地の人間がシンプルにトラブルに対応できると思ったのと、冗長構成による予期しない挙動の経験値がイマイチ足りなかったんですね・・・。
今回は、Meraki MXはActive/Passiveにして、コアスイッチは、2台追加して、3台のバーチャルシャシー構成に。
スイッチが1台壊れてもよいように、3台のうち1台は殆どスペアとして動いています。
これ以外にESXi構築してPOSTFIX構築してAD建てて、既存ADの修繕して、DNS作り直して、結構盛りだくさんにやりました。
取り組んでいる最中に断念したのはLACP(LAG)の設定ぐらいです。
一応、LAGの割り当てはしてあるのですが、使うのは辞めました。
とにかく可用性を上げる為に沢山のポートを消費し、判りやすくするために無駄にポートを消費させている部分もあり、メンテナンス性との兼ね合いで悩みました。
現地のIT管理者と話していて面白かったのは、中途半端に動いている事の方が調子が悪いという話でした。
例えば3台のVC構成でも、2台目が壊れたとすると、1台目と3台目は通信してしまっているので、何が原因なのかを判断するのに難しくなる・・・というものでした。
ナルホド成程なるほど。確かに一理あります。
なるべく、その負担も減るようにドキュメントにはどのポートが何に繋がっているかも記しているのですが、そうではなく、IT管理者が不在時にトラブルがあると、誰かしらに支援してもらわなければならない状況で、対応が難しくなる・・・というものでした。
私としては少しでもオンラインでいられるような構成や配慮を考えていたのですが、そうではないということです。(゜-゜)うーん。難しいですね。
まぁ、今回はサーバ関係の可用性は出来ていないので、ちょっとアンバランスなんですけどね…。
で、今回も例の監視で見ています。
GMTの対応が出来るんで、こちらの時間でグラフが見られるよと言ったら喜ばれました。
ただ、VPN経由での監視なので、アラートはOFFにしておきました。これがちょっと課題なんだよねぇ・・・。そういえば夏時間対応されているのかな?!
とりあえず、ネットワーク機器だけ先行登録しときました。あとは帰国後で・・・[E:coldsweats01]
あと、現地の管理者に、私はGLOBALを含めて全部のインフラを見ているのか?と聞かれたので、YESと答えたら、「ビッグ・ブラザー」だなぁと言われました。
偉大な力で見守っているという意味らしいのですが・・・調べたらありました。。。たぶんこの架空の人物の事を指しているのだと思う。
英語って難しいですね・・・。
さて、これから長いフライトにはいるのでここらへんで・・・。
ふぅ。やっと出来ました。
AWSで連結アカウントで管理している場合で、アカウント別で情報を取りたい場合とかあると思うのですが、ようやっと取り出せるところまで来ました。
と、いっても前回既に全体合計金額は取得出来る様にしていたので、スクリプトでdimensionの部分の構文を少し工夫しただけです。
対象としている課金情報を基に
パラメータを入れて・・・あ、今回はグラフはスタックでやってみました。
SystemAnswerG2のカスタムグラフでスタックが出来るんですが、これが後から追加が出来ません。取得したい項目数が事前に決まっている必要があります。
こんな感じで。まだ取得できたばっかりなんで取り急ぎですがぁ・・・。色のセンスがイマイチですかね[E:coldsweats01]
と、言う訳で今週はスクリプトを書いてばっかりだったような・・・?
他の監視ツールのカスタムスクリプトとソース共有は出来る様にしていませんが、かるーく見た所では、MuninさんとかCactiさんとかZABBIXさんとは少し改修すれば行ける様な気はします。ただそれぞれ誰かしら情報公開をしていますね。
で、次回(?!)は、SystemAnswerG2にしかない機能でどうやって活用するのかをご紹介します?次回が何時になるかはわからない[E:coldsweats01]
くはーっ[E:bearing] ハマったハマった。
でも取りあえず原因もわかって何とかなった。1時間掛からないだろうと思ったのにほぼ1日ついやしてしまった[E:crying]
はい。えーと、AWSの話なのですが、AWSを利用していると、課金が気になるじゃないですか。AWSのコンソールから請求画面に行けば取りあえずは色々判りますが、いちいち見に行くのもカッタルイ。それに色々とサービスの利用が増えたり減ったりしている過程も良くわからない。パッと見て、止めておかなくちゃと思ったものも忘れてしまいますよね。
と、考えていた先人の方々が色々と情報を残してくれていたので、私もチャレンジしてみました。
とりあえずプロトタイプなので、これから細かい修正をしていきますが、先人の方々の資料は手段が色々あるもんで多岐にわたっており、Rubyだったりawslightだったりaws-sdkやら、あれこれと色々と使われています。監視ツールはZABBIXとMuninぐらいが参考例がありました。
で、私はPerlで書こうとしています。Rubyでやるやつも一応作りましたが、最後の最後でボツにしました[E:coldsweats01] そもそもRubyを書いたのも初めてだったんで色々とめんどくなった。
ただねぇ・・・おもったよりもちょっとモッサリしているんでどうしようかな。
やってて全然わからないのがPeriodという値。AWSの課金情報の更新がどうも4時間毎ぽいんですよねぇ・・・。SystemAnswerG2は取得インターバルの最大は15分です。せめて1時間毎に出来ればなぁなんて思ったんですが、そこは空廻しするしかないかな。
まだグラフを書き始めたばかりなのですが、取得出来たぞってことで…
グラフの見え方が違う2種を出してみました。どっちがいいかは好み?
それと、この取得した値が正しいかを確認しときましょ。
大丈夫そうですね。使い物になりそうです。
で、実際の準備としては・・・「aws-cli」です。Pythonの流れなんじゃないかなってことで、awscliにしてみたんですが、おかげで苦労しました・・・[E:weep] jqをそのまま使った・・・というかインストールの手間を省いたのが敗因だった・・・。
てことで、AWSCLIをインストールです。監視エンジンサーバにインストールします。
#yum install python-pip
#python-pip awscli
#aws configure (AWS Access Key IDとAWS Secret Access Keyの設定のみ)
一部の書き方だけ(といいながらこれが中枢の全てでもあるw)。
###AWS-Billing-GET
my $start_time = strftime "%Y-%m-%dT%H:%M:%S", gmtime(time-(4*60*60));
my $end_time = strftime "%Y-%m-%dT%H:%M:%S", gmtime;
open (AWS, "aws cloudwatch --region us-east-1 get-metric-statistics --namespace \'AWS\/Billing\' --dimensions \"Name\=Currency\,Value\=USD\" --metric-name EstimatedCharges --start-time $start_time --end-time $end_time --period 900 --statistics \'Average\' |") || die "Value=$!";
while (<AWS>) {
/"Average": (.+),/ && ($awsget = $1);
};
close (AWS);
chomp($awsget);
print "value=".$awsget.";";
###
こんな感じで書きたくりました。
ポイントとしては・・・なるべく直近のデータを引っ張る様にしたかったので、AWSはUTCだったかとおもうので、gmtimeでGMT(UTC)にしています。で、スタート時間を現時間から4時間マイナスしています。1日でデータを引っ張ってみたのですが、4時間毎にしかデータを吐いていなかったので。もしかしたら、取得するパラメータによっては違うかもしれない。まだそこまで頑張れてない[E:coldsweats01]
periodは、何分間隔のグラフにするのかみたいなパラメータかと思うんだけど、そもそも4時間毎だから4時間を超えて見たいときに値を変更する必要があるのかな。まだ研究中でございます。ここはググってもみんなパラメータが違うのでちょっと困りました。
まぁこれはまだプロトタイプなんで、まだまだ改造していきますが、取り敢えず取得できたんでホッとしました。[E:confident]
これで見せたい方々に見せやすくなるっすよ[E:wink]
もう2月・・・。月日はあっという間ですね。
さて今回は、ろくにマニュアルを見ずにAWSのVPN接続に挑戦っす。
というかマニュアルを読んでもピンとこない表現が多いんで実践で体で覚える方式です[E:happy02]
最近AWSを触って、調べものをググって思う事は・・・古い記事がイマイチ参考にならない[E:coldsweats02]
AWSの新機能やら改善が著しいようで、1年前のドキュメントでも画面と一致しないとか。クラウドサービスは厄介ですな。ググって生きてきた人にはツライ世の中になりましたw
動きを理解してしまえばどうってことないんですが中々ね・・・。
んで、VPNの接続自体はウィザードがあります。というかやり方とかが色々な場所からできてしまうので、取り敢えずザックリというと、VPCをカスタムで作る時にまとめてウィザードでやっちゃいます。
このパターンね。色々な設計に対応出来る様にしている為か、vCloud Airよりも大変[E:coldsweats01]
この例では、Public SubnetとPrivate SubnetとVPNをやっちゃうウィザード。
まぁ、言いなりでやれば全て勝手に終わります。
ハードウェアVPNというのは自分のとこのVPNルーターね。今回はテストということで、Meraki MX100でやりました。AWSのVPN接続時の推奨機器リストにはありません。何故かというと・・・Meraki MXはBGPに対応していない[E:weep]
でも繋がるには繋がります。問題はMeraki MXだとトンネル2への接続方法がない。[E:crying]
今度RTX1210で冗長構成でやるっすよ・・・。なので、今回はBGPではなくStaticでやってます。
んで、ここまでは良かったんです。。。
この後EC2インスタンスを立ち上げて・・・pingしたんですが・・・応答なし。
『pingが通らへんやん![E:pout]』
半日考えました。
アレコレとルーティングやらフィルターやらみていたんですが、セキュリティグループの送信元でデフォルトで入っている「sg-xxxxxx」ってのがなんじゃらほいと。
pingを打つ社内アドレスにしてみるか・・・とエントリーを足してみた所・・・。
キタ━(゚∀゚)━!
いやぁトラップ多すぎっす。[E:wobbly] デフォルトのなんちゃらってのが紛らわしい。親切な部分もあるけどさぁ・・・あと初心者がウィザード使うと、構造を理解せずに使えちゃうから危ないね。
もうねVPC廻りも何回も作り直したってのぉ~[E:weep]
仮想ネットワークって結構考え方が違うのねぇ。AWSで育ったインフラエンジニアはハードが逆に分からないって言うかもね。[E:coldsweats01]
とりあえず暫くはVPCと戦います[E:shock]
うーん[E:despair] 怖い時代になりましたね。
ちょっとRedmineの検証をしてみたいと思って、何か無いかな~AWSのAMIにあるかな~と思ったらありまして。
「Redmine 3.0のAMIをAWS東京リージョンで公開」
Redmineと言うのは古くからある?OSSなプロジェクト管理ツールです。私はビギナーですので、詳しくは本家のRedmine.JPを見てください。
取り急ぎ、機能と動作を見てみたいだけだったんで、簡単に構築出来ないかなと思っただけなんですが。
んでAWS。
Redmineのバージョンが現在は3.2らしいのですが、ちゃんとAWSにもありました。
まだ、AWSの世界はかるーく本を読んだ程度なんですが、Redmineが動くまでに20分掛からなかったです。
昔ならですね、空いてるハード(サーバー)がないかな?から始まり、最近では、仮想サーバーが主流なんで、リソースはだいじぶかな?ぐらいで、OSインストールして、必要なパッケージをインストールして、各種設定をゴリゴリしてとかコンパイルエラーやらモジュールがたりないやらを苦労して・・・(*´Д`)ハァハァ。。。が、
20分で終わる世界。徹夜してインストール作業していた日々よグッバイ[E:happy02]
いやいや、おっかない世界です。求められている能力が変わってきてるっす。
自宅に頑張ってサーバーを組む時代じゃないってことね?
ネットワークもストレージもあれもこれも全て仮想でサービスモジュールも仮想。
自己投資の意識も変えなければならないですね。
ただ、物理(オンプレ)屋からみたAWSは、共通知識としては必要なのと、AWSの構造やら色々な癖は理解しないといけんですね。
今日のブログの内容も、「立ち上げる」というタイトルなもんで、本題は既に動いているんで終わっちまってますよ[E:coldsweats02]
まぁこのままだと、チョー簡単なんだ!で終わるんですが、結局ちゃんとAWSを理解して使わないと痛い目は金額となってみる事になります。これだけは注意ですね。あとは用意しなければならないものは自分で考えられなければならないと。バックアップどうする?という話だってAWS環境やOSなど色々な知識がなければすぐに痛い目みます。
まぁ今回は私も演習なので、今後は色々とAWSやアプリのネタも増えてくると思います。
今までAWSにあまり縁がなかったんですが、今年からガッツリ入っていきますよん~[E:wobbly]
なかなか着手する暇がなかったのと、利用後のコストの読みにくさと、私が興味を持ち始めた時はローカライズが英語のみだったので少し敬遠気味だったのと、周りにAWSを活用している人があまりいなかった・・・ナドナド色々な理由があって中々手を出す事が出来ておりませんでしたが、やはり、新しい思考の世界は傍目では理解出来ぬということで、今までのポリシー通りに「さわって理解」を実践するべく、登録をしました。クレジットカードでの登録の問題もとりあえず、個人のカードで登録して、最悪勉強料になっても良いやと思えるようになってきました。
実は、AWS環境に興味をもって環境攻めをし始めたのは昨年のはじめ頃になります・・・。つまり1年以上もほったらかし。1年分を取り返さねばなりませんだ。ただ来年の私の立場でいうと、あまり突っ込んで弄ることが出来るかどうか。。。と嘆いていても仕方ない。理解を深めるには触ってナンボじゃいと、Amazon宣教師に背中を押されたこともあり、おっぱじめますよ!
まずはアカウントの登録からですな。
AmazonさんもビビりなITエンジニアの為に、無料で使えるサイズと12ヶ月の期間をもうけてます。あとは、時期によってはクーポンやらキャンペーンもある模様。私は25$分のキャンペーンに登録しましたよん。
ここから「まずは無料で始める」でステップを進めると良いかと思います。
とりあえず、無料と言っても人質として「クレジットカード教えろや!」って言われますんで、クレジットカードは必須です。
登録が終わって「AWSマネージメントコンソール」を開くと、たくさんたくさんのメニューに襲われます。ここでだいぶゲンナリして戦闘意欲を失いますが(笑)、クラウドの環境でこれだけのメニューを持っているのはAmazonさんだけです。色々なサービスを時間貸ししているサービスといえばいいんですかね。
とりあえず、最初にやっておきたいこと。
赤枠で囲いましたが、IAMからMFAの登録をしときましょう。。。
もう意味の分からない略語が出てきましたね。ざっくり言うと、アカウントに2要素認証(ワンタイムパスワード)を付けましょうという話です。
AWS上にサーバーを建てるというのはいいんです。それぞれにlinuxだったらrootとかあると思うんですが、今回作成したAWSのアカウントは全ての基盤を利用するためのSuperuserなアカウントです。このアカウントがヤラれてしまうと、いくらサーバーのセキュリティをしっかりしていても、根っこからヤラれます。
なので、日頃ワンタイムパスワードの仕組みが嫌いな私でも、こればっかしはちゃんとやっときます。ただ、専用のハードデバイスを用意するのは大変なんで、iPhoneでやっちゃいます。
利用するのは「Google Authenticator」です。さくさくっと登録出来ます。
「ルートアカウントのMFAを有効化」から「MFAの管理」をクリックしてステップ通りに勧めましょう。iPhoneなどでやる場合は「仮想MFAデバイス」となります。
するとQRコードを読み取る画面になるので、Google Authenticatorから読み取ると6桁の数字が表示されるので、認証コード1と認証コード2に表示された数字を入力します。2つ目の認証コードは、待てば勝手に番号が変わりますので、それを入力するですよ。
さて、先ほどrootアカウントの話をしましたが、こちらもセキュリティの関係上、利用出来ません。IAMアカウントというのを使うことになっています。
誰ですか~AWSは簡単なんていう人は~。慣れれば簡単かも知れませんが、慣れるまでが大変そうですね・・・(汗)。
ただ、慣れてしまえば物理的な話が出てこないので、例えばですが、とあるプロジェクトで、サーバーとストレージとネットワークと回線と・・・OSとSQLと等色々な条件によるスケーラブルなお話になったとします。そういった時に、将来を見越した構成を組むのが大変な時や、構築に物理環境の設計・調整・設置・構築・稼働と・・・土台を作るだけでも内容によりけりですが、そう簡単に短時間では出来ないですよね。細かい話だと配線どうする~から保守内容からと色々と気を使います。そういった総合的な内容が、WEB画面で全て実施出来て、全容が判っていれば1日と掛からずに作れてしまうでしょう。
おそろしい[E:shock]
今まではサーバー屋・ストレージ屋・ネットワーク屋なんてのがあって、その中でもFW屋がいたり、DNS屋がいたり、SQL屋やらなんやらといて、アプリ屋も色々な言語屋がいました。
でも、AWSクラウドの世界では、アプリ屋でも、全貌を理解出来てしまえば、インフラ屋は要らないんですね。私の商売上がったりですよ[E:wobbly]
でも安心してください。AWSもそんな優しい子ではありません。インフラ屋がAWSの全貌を理解してあげることが、アプリ屋へとの短時間の架け橋になると思います(たぶん)。
またインフラ屋もハードとアプライアンスやRFC・規約・規制にしがみついては生きていけない時代になりました。色々な連携要素を理解してオンプレとクラウドとDC環境・コスト・時間を考えてベストを提供しなければ、存在価値は危ぶまれる時代になっていくかと思います。
今はまだまだ有給すら消化できない忙しさだけど、いずれは鼻歌歌いながら構築出来るようになりたいですね[E:smile]