はじめ
こにちは。
ClassMethodの説明会聞いてECSを多く使うと感じて一度作りたいと思って挑戦しました。
なぜAWSではないGCPを選択したのか?
GCPのCreditが残っていたから使ってみました。
アーキテクチャ
-
接近方法
VPCは接近ができなくて、publicVPCにpublic-nginxのサーバーを作って、このpublic-nginxのreverse proxyを通じて、frontendに接近できるようにしました。
frontendでbackendに要請を送る時はpublic-nginxを通じてprivate-nginxに接近できるようにしました。
private-nignxではbackendにreverse proxyで接近ができます。 -
Load Balancing構築
LoadBalancing作るには動的IPの割り当てる必要ですが、それを解決するためにconsulを使いました。
consulについて
consulをServer-based使ってconsul-agentでIPを登録と照会することでService Discoveryの技能を中心に使いました。
consulを通じて動的IPの割り当てることができます。
このIPとconsul-templateを使ってnignxで自動的にnginx.configを作るようにしてLoadBalancing構築しました。
consulと似たようなサービスで、NetflixのEurekaもいます。
【Link】
consul_main_page : https://www.consul.io/
consul_github : https://github.com/hashicorp/consul -
Auto Scailing構築
GCPのMIGというサービスを使ってサーバーのResourceの問題が発生した時にCEを作りshell scriptを使ってサーバーを構築して、consulにIPを登録します。
それでnginxからtrafficをもらうことでサーバーの問題を解決できるようにしました。
勉強になったこと
- backendではlocalhost:8080/api/v1/readみたいに作る理由について知ることができました。
理由はnginxで接近できる経路を食別ができるようにするためと
k8sでrollingとかのDeployの方法のためです。
- dockerのcontainerはすべてlatestではない
今回使った技術のconsulではlatestですればerrorが発生します。
必ずVersionを名称する場合もあると知りました。
- サーバーを構築する時使ったコマンドをAutoScailingとか作る時使うことができるのでメモするとかshellscriptで作る必要があると知りました。
- 私みたいにVimが難しく感じる人もあると思います。
それならnanoというものを使ってみてください。
Vimより便利です。