【SRE/GCE】あっちはWordpressでー、こっちはNuxtにトラフィックを飛ばしたい
WordpressとNuxt
HTTPS ロードバランサ(L7)を通して、ディレクトリのパスによって、アクセス先を変えようとします。
Nuxtで構築したものだったり、wordpressで構築したものだったりを別々のドメインで管理していて、なんかのタイミングで「一緒にしたいんだけど」って時に実施したことを書いていきます。
流れ
- Wordpress構築
- Nuxt用のVM構築
- HTTPS ロードバランサの設定
- 動作確認
使用する環境
GCP
Wordpress構築
GCPでWordpressを構築するのなら、Marketplace から構築することをおすすめします。
GCPで爆速なWordPressを爆速で構築しSSL化する9手順 - SSL代行ラボ
dashboard から Marketplaceに遷移
Marketplaceの画面
構築後の画面
注意
今回、/media
でアクセスしたらwordpressにトラフィックが飛ぶように設定するので、wordpressのVMインスタンス内でapacheの設定やドキュメントルートを変更しています。
ですが、書いていないことを後から気づいて、面倒臭くなったので割愛します、、、スンマソン。
Nuxt用のVM構築
VMインスタンスを構築していきます。
VMインスタンス内でdockerを使用したいので、まず簡単なNuxtの実装をしてからdockerでビルドし、GCRにプッシュしていきます。
プロジェクト作成
npx create-nuxt-app helloworld
コマンドで、簡単なNuxtのプロジェクトを作成します。
【今日からはじめるNuxt.js】Nuxt.jsのはじめのいっぽ(プロジェクトの作成~簡単なページ遷移まで)
nuxt.configの実装修正
nuxt.config
に下記の実装を追加します。
server: {
port: 80,
host: '0.0.0.0'
},
Dockerfile作成
下記のDockerfile
を作成します。
FROM node:10.15.1-alpine as builder
WORKDIR /app
COPY . /app
RUN apk update && \
apk add git
RUN yarn install --production
RUN yarn build
FROM node:10.15.1-alpine
WORKDIR /app
COPY --from=builder /app /app
EXPOSE 80
CMD ["yarn", "start"]
ビルド、プッシュ
下記コマンドをそれぞれ実行します。
タグは任意で設定してください。
ビルド
docker build -t gcr.io/{プロジェクトID}/{ディレクトリ名}:{タグ名} .
プッシュ
docker push gcr.io/{プロジェクトID}/{ディレクトリ名}:{タグ名}
VMの構築
次にVMインスタンスを構築していきます。
ここで気をつけるのは、コンテナにプッシュするところにチェックをし、
先ほどプッシュしたGCRの情報を入力します。
またこの時注意が必要なのは、dockerを使用するにチェックをした際、使用されるOSが、「Container-Optimized OS from Google」というOSに変わります。
これはコンテナ専用にGoogleが用意してくれたOSのようです。
Container-Optimized OS from Google は、Docker コンテナの実行に対して最適化された Compute Engine VM 用のオペレーティング システム イメージです。Container
Container-Optimized OS の概要 | Google Cloudより引用
ファイアーウォールルールの設定
VPCのファイアウォール ルールを設定していきます。
※今回はdefaultのVPCを使用します。
ターゲットタグ、ソースIPの範囲、指定したプロトコルとポートを設定すればOKです。
「指定したプロトコルとポート」は、tcpで80を設定します。
HTTPS ロードバランサの設定
/media
にアクセスで、wordpressに
/
ルートでディレクトリで、Nuxtにアクセスを飛ばすことにします。
HTTPS ロードバランサの構築
バックエンドサービスの構築
受信トラフィック用のバックエンド サービスを作成します。
バックエンド サービスとは、アクセスをVMインスタンスに振り分けてくれる役割を持ちます。
バックエンドサービスを構築する際、インスタンスグループとヘルスチェックを適応する必要があります。
インスタンスグループは、GCEと検索し、左サイドバーから「インスタンスグループ」を作成します。
この時当たり前ですが、VMを構築したリージョンを指定しないと選択したいVMインスタンスは出てきませんw
ヘルスチェックはそのバックエンドサービスの構築画面で、作成できるので作成してしまいましょう。
パスのルールの設定
/media
にアクセス → wordpress
その他は、Nuxtにアクセスを飛ばすような設定にしていきます。
フロントエンドの設定
名前を入力して、作成しましょう。
https
の場合は、ここで証明書を設定します。
HTTPS ロードバランサの全体図
構築し終わってなんですが、構築したHTTPS ロードバランサについて見ていきます。
下記がHTTPS ロードバランサの全体図になっています。
アクセスの流れで行くと、下記の3つをへてVMインスタンスにトラフィックが流れていきます。
1. リクエストをターゲット HTTP プロキシで受け取る
2. URL マップによって、バックエンド サービスを決定
3. バックエンド サービスによって、インスタンスを決定
VMインスタンスは下記に基づいて選ばれます。
- バックエンドの処理能力
- ゾーン
- インスタンスの健全性
そしてインスタンスの健全性は、ヘルスチェックによって検証されます。
転送ルールの概要 | 負荷分散 | Google Cloud
最後に、動作確認
/media
で、wordpressの画面が、
/
ルートでディレクトリで、Nuxtの画面が見えているはずです。
Author And Source
この問題について(【SRE/GCE】あっちはWordpressでー、こっちはNuxtにトラフィックを飛ばしたい), 我々は、より多くの情報をここで見つけました https://qiita.com/wqwq/items/65287bbf1fb9f95c27a3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .