想ひ出のへっぽこBlogⅡ from35

~ 自身の備忘録および学習促進のためにブログります。~

想ひ出15: GCP/VPCネットワークピアリングしてみる

f:id:moqrin3:20181201105123p:plain
GCP VPC

おはようございます、moqrinです。

ドキュメントを読んでいるついでに、ふと思い立ってVPCピアリングをしました。
ドキュメント通りにやるだけなんで、特記することはありませぬー。
非常に簡単でした。
下記にある通りなのですが、片方から接続、もう片方から接続、わぁ相思相愛だあ!というだけです。

やること

1. プロジェクト1のnetwork1 と プロジェクト2のnetwork2 でピアリング
2. プロジェクト2のnetwork2 と プロジェクト1のnetwork1 でピアリング
3. プロジェクト1のredisクライアントから、プロジェクト2のredisサーバーに対して接続して確認する

1. プロジェクト1のnetworkA と プロジェクト2のnetworkB でピアリング

今回の例は、それぞれ下記のように設定されています。

Project Network
1 funky-moqrin default
2 sexy-moqrin moqrin3-network1

なお、それぞれ設定することになる相手側のプロジェクトIDとVPCネットワーク名は、
手動で入力することになりますので、前もってコピーしておくと良いかと思います。

① [VPC ネットワーク ピアリング] ページで[接続の作成] をクリック

f:id:moqrin3:20181201155123p:plain

② 接続の自分側の [名前] にピアリング名を入力します。
③ [VPC ネットワーク] で、ピアリングするネットワークを選択
④ 同じプロジェクト内でピアリングする場合を除き、 [VPC ネットワーク ピアリング] ラジオボタンを [別のプロジェクト] に設定
⑤ 他のプロジェクトのプロジェクト ID を手動で指定
⑥ 他のネットワークの VPC ネットワーク名を手動で指定
⑦ [作成] をクリック

f:id:moqrin3:20181201155158p:plain

2. プロジェクト2のnetworkB と プロジェクト1のnetworkA でピアリング

1と同様の作業を行います。

f:id:moqrin3:20181201155237p:plain

[VPC ネットワーク ピアリング] ページに移動して確認すると、
ステータスに [Connected] と表示されています。

f:id:moqrin3:20181201155331p:plain

もう一つのプロジェクトで [VPC ネットワーク ピアリング] ページに移動し、
ステータスに [Connected] と表示されていることも確認します。

f:id:moqrin3:20181201155350p:plain

3. redisクライアントからredisサーバーに対して接続して確認する

プロジェクト1のnetworkAのインスタンスにredis-cliをインストール

プロジェクト2のnetworkBのインスタンスにredisをインストール 当然ですが、redisサーバー側は外部接続できるようにしておきましょう!

クライアントから内部IPにてサーバーに接続

redis-cli -h 10.XXX.X.X SET 1 moqrin

サーバー側で確認

redis-cli
127.0.0.1:6379> get 1
"moqrin"

わーい。

参考:

VPC ネットワーク ピアリングの使用

想ひ出14: Amazon Linux2でAnsibleがコケたじゃん?

f:id:moqrin3:20181201153425p:plain
Ansible

おはようございます、moqrinです。

数日前にAmazon Linux 2で、特に何も留意せずAnsibleを流したところ、コケまくって当初ビビったのだけど、実際は特に大したことでもなかったので自身の恥を晒しますー。 (誰かのためになればいいな、と)

とりあえず、公式に書かれている通り(CentOS、RHEL、または Amazon Linux が実行されている Amazon EC2 インスタンスに対して EPEL リポジトリを有効にする方法を教えてください)、RHEL 7 および Amazon Linux 2 で EPEL rpmパッケージをインストールして有効にします。

- name: install epel
  yum: name=https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state=present

こちらに、だいぶ昔に記載されているような理由で、インストールしたものが期待しているバージョンと異なっている、コケるなどありましたので、指定のリポジトリを参照できるように此奴等を変更しちゃいます。

- name: amzn2-core.repo priority down
  replace:
    path: /etc/yum.repos.d/amzn2-core.repo
    regexp: 'priority=10'
    replace: 'priority=99'
- name: amzn2-extras.repo priority down
  replace:
    path: /etc/yum.repos.d/amzn2-extras.repo
    regexp: 'priority = 10'
    replace: 'priority=99'

これで大体うまく進んでくれました。
ありがとうございました〜

参考:

RHEL 7 および Amazon Linux 2 で EPEL rpmパッケージをインストールして有効にする
Amazon LinuxでYUMを使う時に気をつけるポイント

想ひ出13 + 1/2 : GCP/StackDriverでAWSと連携 & Logging

f:id:moqrin3:20181201120144p:plain
StackDriver

おはようございます、moqrinです。

前回は、StackDriverからEC2インスタンスを監視して、アラートをSlackに投げるようにしました。
ついでといってはなんですが、ログ収集もやっておいたという補足内容になります。

サービスアカウントで下記のような設定をお忘れずに。

f:id:moqrin3:20181201122509p:plain

皆様はワタクシのようにマヌケではないはずなので、やっちまうことはないと思いますが、 ワタクシはログ書き込みにするところを「ログ設定書き込み」にしていたのに気付かず、ひたすらエラーログを見て何故にうまくいかん??と首をひねっていました・・・

エラーログは下記にございます。

/var/log/google-fluentd/google-fluentd.log

トラブルシューティング通り、テストログメッセージを送信して管理画面の確認します。

logger "Some test message"

f:id:moqrin3:20181201122555p:plain

OKでしたー。
いやはや。。

参考:

エージェントのトラブルシューティング

想ひ出13: GCP/StackDriverでAWSと連携 & Slackアラート

f:id:moqrin3:20181201120144p:plain
StackDriver

おはようございます、moqrinです。

今回は簡単なサーバー運用監視をしてみたく、Stackdriverをいじってみました。
Stackdriver、シンプルな画面で使いやすいですよね。

そんなStackdriverでAWSのリソースを監視してSlackアラートを投げたくなったので
やってみました。対象はEC2インスタンスです。

やったこと

1. Stackdriver でAWSと連携する
2. サービス アカウントを作成(エージェントを使用する場合)
3. 鍵をインスタンスに格納する(エージェントを使用する場合)
4. エージェントのインストール
5. Stackdriver でアラートを設定する
6. 確認
7. オマケのUptimeCheckアラート確認

1. Stackdriver でAWSと連携する

この辺は公式通りで、また参考となる記事がいくつもございますので、
そちらをご覧頂ければと思います。
基本的に画面で言われた通りに行えば大丈夫です。

Amazon EC2用のクイックスタート
Google Stackdriver でAWSと連携してみた

2. サービス アカウントを作成

IAMと管理からサービスアカウントを作成します。

今回はモニタリングとログ収集をしたいので、こんな感じで設定します。
(モニタリングはモニタリング指標の書き込みで問題ないと思います。)

サービス アカウント名: Agent service account
役割:
モニタリング > [モニタリング編集者]
ログ > [ログ書き込み]

f:id:moqrin3:20181201120335p:plain

3. 鍵をインスタンスに格納する

StackdriverにAWSのリソースが書き込みができるように対象インスタンス上で設定します。
まず、鍵をインスタンスに転送します。
ほんで、秘密鍵ファイル名を下記に変更して

application_default_credentials.json
/etc/google/auth

に格納します。
(ディレクトリがなければ作っちゃいます)

4. エージェントのインストール

Stackdriver Monitoring エージェントと Stackdriver Logging エージェントをインストールします。

curl -sSO https://dl.google.com/cloudagents/install-monitoring-agent.sh
sudo bash install-monitoring-agent.sh
curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh
sudo bash install-logging-agent.sh

f:id:moqrin3:20181201120515p:plain

ちなみに、サービスアカウントを入れていないとコケます。
(ワタクシは入れずに進めていて最初コケました・・・。マヌケですねー。。)

エージェントが動作していることを確認します。

ps ax | grep fluentd
ps ax | grep collectd

こんな感じでAGENTタブが増えて表示されますね。

f:id:moqrin3:20181201120427p:plain

5. Stackdriver でアラートを設定する

ここでドハマりしました。。
なんと、現在(2018/9/20)、AWSのはnew UIじゃないと設定できないという鬼仕様!
どうしても指標が表示されないゾ・・・

f:id:moqrin3:20181201120629p:plain

new UIにopt in して設定します。

f:id:moqrin3:20181201120654p:plain

Slackにアラートを投げるようにします。

f:id:moqrin3:20181201120731p:plain

画面で促される通りに設定すれば特に問題ないのですが、以下参考URLです。 Stackdriver Monitoring でメールや Slack による通知を設定しよう!

6. 確認

とりあえず、サーバーで負荷かけてやります。

yes >> /dev/null

アラートがきます。
負荷止めます。
すると連絡が来ます。

f:id:moqrin3:20181201120817p:plain

やったーー。

7. オマケのUptimeCheckアラート確認

UptimeCheckの設定をします。

f:id:moqrin3:20181201120904p:plain

アラートの設定をします。

ところで、これ最短が5分間なんです。
長くない??

f:id:moqrin3:20181201120923p:plain

nginxだかapacheだかを止めてやります。

systemctl stop httpd

アラートが来ます。
(復活もしています。)

f:id:moqrin3:20181201121036p:plain

やったーー。

参考:

Amazon EC2用のクイックスタート
Google Stackdriver でAWSと連携してみた
Monitoring エージェントのインストール
Stackdriver Monitoring でメールや Slack による通知を設定しよう!

想ひ出12: GCP/Cloud Storageを使ったDirect Hosting

f:id:moqrin3:20181201092259p:plain
GCP CloudStorage

おはようございます、moqrinです。

今回はよくあるWordpressの「Direct Hostingパターン」です。
静的なコンテンツをGoogle Cloud Storage(以下GCS)から提供します。
Googleさんが作者のGoogle Cloud Storage pluginを使ってバケットにUploadします。

やったこと

1. GCSのバケットを作成
2. GCSにCNAMEを設定
3. pluginを利用するための設定
4. Google Cloud Storage pluginを設定
5. 確認
6. オマケ

1. GCSのバケットを作成

使いたいドメイン名をバケット名にして作成します。
ドメインのオーナーである必要があるので、以前に取得したドメインを利用して、
cdn.moqrin3.tk」とします。

2. GCSにCNAMEを設定

DNSドメインをCNAMEでレコード登録します。

f:id:moqrin3:20181201114542p:plain

3. pluginを利用するための設定

公式のマニュアルに書かれている通りですが、

f:id:moqrin3:20181201115014p:plain

バケットの権限にallUsersを付与します。

f:id:moqrin3:20181201114659p:plain

インスタンスを一度停止してAPIの権限をフルにする

起動する時点で設定しておいてもいいですがw

f:id:moqrin3:20181201114730p:plain

4. Google Cloud Storage pluginを設定

Wordpressプラグインインストールで、Google Cloud Storage pluginを
インストールして有効化して設定します。

バケットのURL(=バケット名)を記入するだけです。

f:id:moqrin3:20181201114812p:plain

5. 確認

バッタの画像URLはStorageから!

f:id:moqrin3:20181201114856p:plain

Storageに入っているー

f:id:moqrin3:20181201114927p:plain

6. オマケ

IAMと管理でサービスアカウントのCredentialを設定して、
wp-config.phpに書き込む方法もあるね。

f:id:moqrin3:20181201114622p:plain

参考:

Google Cloud Storage plugin 公式

[WordPress] メディアのアップロード先をGoogle Cloud Storageにする