03 リージョン・AZ・負荷分散方式
~この記事の中身~
☆AWSのサービス内容について纏めてみるよ
前置き
勉強・作業をしていく上で、抑えておくべきAWSの基礎知識。
その初歩のリージョン・AZといったデータセンターの単位や、負荷分散のやり方について纏めてみます。
AWSにおけるAZ
AZ(アベイラビリティーゾーン)は複数のデータセンターをまとめたもの。
それぞれ、地理的にも電力的にも独立しているため、落雷や、大雨でAZの一つに避けようのない障害が起こったとしても、他のAZのサービス等に影響は及ばないようです。
リージョン
リージョンは先程のAZを更に国などの大きな括りで纏めたもの。
同じリージョン内にあるサーバ間は専用のラインが繋がれているので、とっても遅延が少ない状態で相互に通信できる状態になっています。
先程説明したAZの独立性や、専用のラインによる低遅延通信に併せて、サーバやデータを各リージョン内のAZ間で冗長的に(予備を追加して二重三重に)配置することで、利用者はほとんど障害の発生に関係なく、サービスを利用できるようになる感じです。
あるAmazon内のDNSサービスを使い、複数のリージョンに渡ってサーバやデータを配置すれば、更に安定して使えるシステムを使えるらしいですね。
AWSで提供されるサービスの種類
AWSではサーバ、負荷管理、セキュリティなどのサービスがありますが、これらのサービスはリージョンごとに、AZごとに、どこからでも自由に、利用できるものに分かれていますね。
それぞれ、リージョンごとに作成でき、管理も行うリージョンサービス、AZごとに作成・管理を行うことになるAZサービス、どこのリージョンからでも利用できるグローバルサービスとなっています。
リージョンサービスを利用する場合、プライベートIPアドレスではなくグローバルIPアドレスで接続しなければならなくなる、サービスによってサーバの可用性が上がる配置方法が異なるなど、組み合わせて使う場合には、注意が必要になるようです。
AWS内のサーバ負荷分散
AWSのサービスとして配置することのできるインスタンスのサーバですが、もしこれをまともに他の人にも利用できるサービスを提供する場として使うのであれば、当然アクセスの負荷に耐えられる状態を作る必要がありますよね。
そうした時に一番負荷になるのはトラフィック(要するにインターネットやLANといったネットワーク上に流れているデータの量)です。
それを解決できるサービスの例が、ELBです。
HTTP用のALB(以下Application Load Balancer)、
高パフォーマンスのNLB(以下Network Load Balancer)、
EC2用のCLB(以下Classic Load Balancer)の3種類があるのですが、
自分はEC2を使っているのでCLBを利用。
所謂、負荷分散サービス(ロードバランサー)ですね。
この負荷分散の手法にはいくつか種類があるのですが、今回は、そのうち静的なもの(いつどこでアクセスされても同じ条件で働くもの)を紹介します。
①ラウンドロビン方式
均等にアクセスを振り分けるやり方。
例えば奇数回目のアクセスなら、1つ目のサーバ(インスタンス)に、偶数回目のアクセスなら2つ目のサーバ(インスタンス)に振り分けるといった動きをするイメージです。
②スティッキーセッション
ユーザをIDなどで識別し、Cookieなどで記録。
以後、リクエストがある度に決まったサーバ(インスタンス)に振り分けるルーティンを使う手法です。Classic Load Balancer のスティッキーセッションの設定 - Elastic Load Balancingによれば、Cookieによる固定以外に予め定めた期間ユーザのリクエストを固定する方法もあるみたいですね。
ここまで情報を纏めたところで、次回はAWSのセキュリティ面(IAM)について、書いていこうと思います。
以上!
02 AWS→Python(1)
~この記事の中身~
前置き。
よくよく読み返すと、コマンドがざっくりしか書かれてなくて、備忘録としての役割果たせてねぇ……ってなってしまったので、しっかりコマンドのログ記録してこうと思った今日この頃。
正直、学んでる言語とか統一性がなくて、何したいか分からんって思った人結構多そうな気もしますが、正直手探りでやってるだけで特に大層なことは企んでません。
せいぜい、これを仕事とかで扱った範囲の備忘録にできる日を早く迎えられるようにしてぇ!ってくらいなもんです。(現在はあんまし関係ないことしか仕事にしてない。)
というわけで、仕事にも転用できるように、しっかり日々改善しつつ記録をつけていこうと思いやす。
前置き 完
本記事ではタイトルの通り、AWSからPython。Pythonからmariadbとかいう超迂遠な繋ぎ方で、mariadbに接続して、実際にテーブルの作成や値の変更を行っていきます。
雑環境
Win10/AWS(ec2のインスタンスを使用。無料で試せるものを組み合わせたやつ)
打ち込み→teratarm Python→2.7.18
AWSについては、これを書こうとした頃には導入しちゃってたので割愛。
qiitaとかに転がってるのとかaws公式マニュアル参考にしてやりました。
さて、まず前提として、ですがawsにはデフォルトで、python君、実は入ってます。
$ python --version
Python 2.7.18
ただし、バージョンは 2.7.18・・・いや、Python2やん!!!
というわけで、こやつのアップデートから、行っていきます。
あ、今更ですが、Awsで利用できるlinuxコマンド周りの動きは調べたところ、ほぼほぼcent-OS系列と同じっぽいです。なので、こっからのコマンド見る際もそういう認識で居てもらったら、支障ないと思います。
まずは、先程のコマンド、
$ python --version
を打ち込んで、現在のバージョンをチェック。
そして、
https://www.python.org/downloads/
パイソンの公式ダウンロードページから、最新版をチェックします。
もし、今のが最新版ならアップデートは要らないですよね。
ちなみに記事を書いたタイミングでは、最新Ver.は
Python 3.9.0!!!
なので、Python 3系列へのお引越しとなりますね。
頑張ってアップデートしていきます。
ファイル→コンパイルのやり方を試したかったので、DLの方法はそれで。
そして、どうも調べた所、linuxは他バージョンの同居が可能とのことなので、特に保存したいデータもない自分は最新版をDLしてから旧バージョンを排除する方向で、疑似アップデート的なものを図りたいと思います。
sudo curl https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz -o /usr/local/src/Python-3.9.0.tgz
最初から順に、管理者権限で、curlコマンドを使い、pythonの 3.9.0 のgzip をDL
続きを読む
初ど~
~この記事の中身~
☆JetBrainsのToolboxからPycharm・IntelliJ・DataGripを落として日本語化してみたよ。
☆UbuntuにMariadb突っ込んで自動起動するようにしてみたよ。
前置き。
CentOS でlinuxを動かしてた割に中身全然習得できてない状態が続いてた時に、実践的なこと覚えよ!と勧められたこときっかけにawsとかのサービスを使い始めました。
その時にEC2(awsの仮想マシン貸し出し機能)のインスタンス経由でteratarmから、コマンド打ち込むことでMariadb手に入れてテーブル弄ったりPython突っ込んでみたわけですが、普通に経験値は得てたはずなのにほぼほぼ記録に残すことをしていなかったがために数日空いた現在、半分以上忘れてしまいました。迂闊。
迂闊ってかバカじゃね?とか言ってはいけない。
その反省を活かすために、今回からは備忘録として作業を記録することに。
前置き 完
本記事ではJetBrainsよりJava・Pythonの開発環境と、DataGripを入手して、日本語化する流れと、Mariadbというデータベースの一種をUbuntuから操作できる状態を作る作業が記録されています。
内容が前後半でかなり異なり、纏まりがない上に、知識や操作等に「にわか」っぽさを感じるかもしれないですが、個人的に勉強を進める際に活用しているものとなるのでご容赦願いたい。
雑環境
Win10 / その時々で、UbuntuやCentOS7など
まずは、JetBrains公式(https://pleiades.io/#gsc.tab=0)から、ToolboxAppをDL。
Toolboxからは一通りの開発環境をDLできるのだが、当然全部使うわけではなく、Pycharm・IntelliJ・DataGrip(パイソン・JAVA・データベース)のみDL。
早速、Pycharmから開いて見る。
「不味い。英語だ……。全く分からん」
プログラミングやろうとしてるのにそれどうなの?と思われるかもしれないけれども、今現在自分は英語のスキルがほぼゼロに等しい程度しかないです。英検3級すら怪しいくらい。
ですが、現代はそういう人にもある程度は優しかった。
やってみせましょ、日本語化。
左上のfileからスパナのマークが付いてる設定を開いてみる。
開いたタブの左側にあるpluginをクリックして、右に表示されるプラグイン一覧の上にある検索窓に
🔍japanese
と入れたら、【Japanese Language Pack ENP】というpluginが表示されました。
見ての通りの日本語化の為にあるプラグイン。
迷わず、インストール。
そのままでは何も変わらないので、インストールが済んだらとっとと、Pycharmのタブを閉じて、再度開きます。これをすることで、日本語化の処理は完了。無事、日本語での操作が可能となりました。
ですがこのままだと、ちょっとだけ困ったことが。
日本語がターミナル(もしくはエディター。要するに下のコマンド打ち込む部分)で表示されず四角の中に×が描かれたいわゆるチェックボックスの特殊文字みたいな感じになって文字化けしてしまう。
「原因はなんぞや」
ってことで調べてみると、どうも文字コードの形式に問題があった様子。
file encodings等の文字コードの関わる部分を片っ端から、基本的なUTF-8に変更していってそれを適用。エンターを押さないと、相変わらず文字化けしてしまいますが、一応ターミナルから日本語を打ち込むことが可能になりました。
ついでに、遠隔で誰かに見てアドバイスを貰ったりしたい感じであれば、Code With Meというプラグインで、共有がスムーズになるので便利らしいとのことなので導入。
IntelliJ・DataGripもほぼ同じ流れで日本語化完了。
これにて、JetBrainsから落としたものの作業は一旦終了。
次に、結構忘れちゃってるサービスの導入と自動起動の有効化。
(☆UbuntuにMariadb突っ込んで自動起動するようにしてみたよ。の部分)
Ubuntuは、Microsoft公式(Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs)とか参考に導入。
「 WSL 1 を消してから2にしなきゃいかんよ」
との記述が途中に登場したものの、こちらのPCには無縁。説明も分かりやすかったので、【管理者権限で実行する】ことさえ忘れなければ、こちらのもの。手順通りに勧めていくとスムーズにMicrosoftストアから、UbuntuのDLまで漕ぎ着けることができました。
万一詰まっても、このページの最下層にトラブルシューティングがあるので、焦らずに対処するべし。
これでインストールが済んだものの、手順7のリンクLinux ディストリビューションのユーザー アカウントを作成および更新する | Microsoft Docsより、その後必要な設定がまだあることが伺える状態。
どれだけの作業があるのかと恐る恐るページを開いてみると、本当に文字通り、ユーザ名・パスワードを作成するだけ。
とはいっても、ただのユーザーではなく、このlinux系のディストリビューションにおける管理者となるアカウントを作成することになります。
やることは名前とパスワードをきちっとメモして、それを入れるだけなんですが、この2つを覚えておかないとまた再DLしたりパスワード変更する羽目になるので、注意が必要。(1敗)
これでUbuntuが使える状態になりました。
と、ここまで書いていたら、家族にこの記事を覗き込まれる事案が発生。
焦りました()
そんな間にも時間は進み、残すはUbuntuにMariadbを入れるのみ。
一度AWSのEC2サーバでやっていた作業なのですが、もう一度やってみることで手順を思い出すためということで、二度目の作業。
ほぼほぼ覚えていなかったもんだから、手順がしっかり説明されてるサイト(
https://qiita.com/cherubim1111/items/61cbc72673712431d06e)を引っ張ってきてにらめっこしながら、やりました。
正直、あまり縁はなかったcurl コマンドを使ってMariadbにアクセス。それをパイプ|して、bashに出力することで、3つくらいのファイルをげっつ。
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
バージョンは、軽く調べた所、変更しなくても良さげだったので、そのまま。
apt listを使った確認なんかも記載してくれてたので、ミスってないかという恐怖に怯えることなく、作業が進められてホクホクでした。(基本的なことっぽい?し、他のDLするときとか、メモして使ってみる予定)
そして、Mariadbと入力したものの事件。
「起動せぬ……」
結構慌てたのですが、頼れる助っ人登場。
普通に、Mariadbというサービス自体がインストールできていても、起動できていなかったことが判明。
$sudo systemctl enable
で自動起動することで、同じ問題は起こらなくなる。
以後はMariadbの入力だけでコマンドモードを切替可能となった。
こうして、てんやわんやながらもどうにか作業完了。
次回は、aws内のPythonからMariadbへアクセス(到達できなかった場合、DebianからMariadbもしくは、CentOS7からMariadb)、Ubuntu 内にあるMariadbより、テーブルの作成や値の変更に挑戦したい。