2020-12-20 00:20:51
概要この記事はMakuake Advent Calendar 2020の20日目の記事です。
TerraformとAnsibleを組み合わせてVPS上でサーバー構築をしてみたのでその手順をまとめておこうと思います。
動機趣味で開発しているアプリケーションのインフラ環境をIaCで整備したかったので、勉強を兼ねてTerraformを使ってみました。
環境
Terraform v0.14.0
Ansible 2.9.10
ConoHa VPS
macOS Catalina 10.15.5
ローカルでTerraformを実行してConoHa VPSにサーバーを建てたり、壊したりします。
OpenSt...
インフラストラクチャ
Ansible
VPS
OpenStack
Terraform
2020-11-14 14:20:07
概要docker-compose.ymlのserviceの1つにenv_fileを指定し、環境変数を設定したが、サービスがbuildするコンテナ内(Dockerfile側)では参照できなかった。vueのアプリケーションをコンテナ内でnpmを使ってビルドしており、アプリケーション側でprocess.env.VUE_APP_API_ENDPOINTという形でアプリケーションのビルド時に環境変数を参照させたかった。
解決策docker-compose.ymlで指定するenv_fileやenvironmentといったキーはコンテナのビルド後に参照できるようになるため、それらのキーを利用するだけではコン...
インフラストラクチャ
Docker
Docker Compose
2020-10-30 02:49:52
概要 ISUCON環境を利用してシステムメトリクスをちゃんと見れるようなろうという勉強会を定期的に行っているので、そのまとめを残す。
Webエンジニアが知っておきたいインフラの基本 インフラの設計から構成、監視、チューニングまでを参考図書とし、第5章以降の内容を実際に手を動かして確認するような形で行っている。
環境はConohaでISUCON8のイメージを利用してサーバーを立てている。
プラン:メモリ 512MB/CPU 1Core
[root@160-251-16-96 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (C...
インフラストラクチャ
ISUCON
2020-10-20 01:20:34
概要Kubernetesを本格的にキャッチアップしていくためにドキュメントを読んだので、オレオレメモを残す。全部は長いのでメモ書きはコンセプトの章だけにする。
kubernetes.io
Kubernetesとは何か?cf. Kubernetesとは何か?
Kubernetesとは何か?
宣言的な構成管理
自動化の促進
コンテナ化されたワークロードやサービスの管理のためのプラットフォーム
過去を振り返ってみると
仮想化ができる前の時代におけるデプロイ (Traditional deployment)
物理サーバー上でのアプリケーションのリソース制限がない
リソース割当問題がある
スケール...
インフラストラクチャ
Docker
コンテナ
Kubernetes
2019-09-27 09:21:33
概要Docker Composeを使ってgolangのtest実行していたら、Operation not permittedというエラーに遭遇した。
対応Docker Documentation - runtaime-privilege-and-linux-capabilities
Dockerコンテナの特権設定をいじると解決する。
gobel_test_db:
container_name: "gobel_test_db"
build: ./docker/mysql
ports:
- "3305:3306"
volumes:
- m...
インフラストラクチャ
Docker
Docker Compose
Linux
linux capabilities
seccomp
2019-09-17 23:39:28
概要Mackerelの監視対象から誤ったホストを退役させてしまったり、意図せず監視対象から外してしまったときなどに復帰させる方法についてメモっておく。
手順mackerel-agentを再起動しても自動で復帰しないのでホストに割り振られたhostIdを更新させる必要がある。
service mackerel-agent stop
cd /var/lib/mackerel-agent
mv id /tmp/
service mackerel-agent start
所感たまに焦るので気をつけたい...
インフラストラクチャ
Mackerel
2019-09-17 23:33:59
概要Dockerizeを使ってDocker Composeで起動するコンテナの順番を制御する方法についての覚え書き。
github.com - jwilder/dockerize
なぜDockerizeを使うのかDockerizeではなく、wait-for-it というピュアなbash scriptを使った方法も採用することもできる。
cf. Docker-docs-ja - Compose の起動順番を制御
Dockerizeを使う目的は複数コンテナを起動する際、コンテナの起動順を意図的に制御したいようなときである。
例えば、アプリケーション用のコンテナとテスト用のデータベースコンテナがあっ...
インフラストラクチャ
Docker
Docker Compose
Dockerize
2019-04-28 14:59:08
概要dockerでコンテナとイメージを削除してもvolumeが削除されていなくてちょいちょい忘れてハマるのでメモっておく。
普段は、docker-composeを使っている。
docker-compose builddocker-compose up -d
して、
docker rm **docker rmi **
という感じにお片付けしているのだが、どうやらマウントしているvolumeを削除するオプションがあったらしい。
対応ボリュームが残っているか確認。docker volume ls docker volume rm **
余談docker-composeでdocker-compose....
インフラストラクチャ
Docker
Docker Compose
2019-04-20 23:07:42
概要ちょいちょい忘れてるのでメモ。不足があれば随時追加。
環境
ConoHa
ubuntu 18.04.2 LTS (Bionic Beaver)
準備ubuntuインストール&rootログイン確認conohaでubuntuサーバーを用意し、rootログインできることを確認しておく。
ssh用の鍵をクライアント側で用意する秘密鍵と公開鍵を作成。
ssh-keygen -t rsassh root@<ip address>
セットアップサーバーアップデートアップデートしておく。
sudo apt update && sudo apt upgrade -y
ユ...
インフラストラクチャ
Ubuntu
2019-01-16 10:06:19
概要コンテナ技術についてのまとめ。Dockerを使わずにコンテナをつくって触ってみる。
コンテナとは
ホストOSからアプリケーションとランタイムをまとめて、分離した一連のプロセス。
コンテナの歴史1979年 UNIX OSにchrootが登場。
2000年 FreeBSD jailsがFreeBSD 4.0に登場。chrootの発展系。
2001年 VServer Projectを通じてLinuxにもLinuxコンテナのベースとなる技術が登場。
2004年、LXC1.0がリリース。Linux Containers
2008年、Dockerが登場
コンテナ技術は上記以外にもVirtuozzo、...
インフラストラクチャ
Docker
libcontainer
lxc
lxd
コンテナ
2018-10-22 20:10:07
概要ElasticSearchについての説明とDockerでの環境構築についてざっくりとまとめる。
ElasticSearchとは
分散型RESTful検索/分析エンジン
全文検索だけでなく、分析もできる
ほぼリアルタイムの検索プラットフォーム
クラスタ
データ全体をまとめて保持する1つ以上のノード(サーバー)のコレクションのこと
全てのノードに渡って統合されたインデキシング機能と検索機能が提供される
ノード
データを保存するクラスタに含まれる1台のサーバー
Dockerで環境構築ElasticsearchとKibanaが使える環境を構築する。
docker-compose.ym...
インフラストラクチャ
elasticsearch
kibana
2018-09-18 19:21:11
概要ssh接続のセットアップ方法についてメモ。
準備 サーバーに接続してwheelグループに所属するユーザーを作成しておく
手順ホスト側~/.ssh/にてssh-keygenで公開鍵・秘密鍵を作成。ここでは公開鍵をid_rsa.pub、秘密鍵をid_rsaとして作成する。
公開鍵の中身をコピーしておく。
~/.ssh/にてconfigファイルを作成しておく。
Ex.
Host bmf
HostName 123.45.679.012
User bmf
Port 22
IdentityFile ~/.ssh/id_rsa
サーバー側~/.ssh/が存在しない場合はディレクトリを作成する。パ...
インフラストラクチャ
ssh
sshd
2018-09-15 23:53:28
概要PrometheusとGrafanaでリソース監視の環境を構築したのでメモ。
環境
さくらVPS
CentOS7系
PrometheusをインストールPrometheus - Getting Startedに従ってprometheusをダウンロードする。
ダウンロードしたらprometheusを起動、ダッシュボードにアクセスできることを確認しておく。
ポートが開放されていない場合は開放しておく。
node_exporterをインストールPrometheus - node_exporter
からnode_exporterをダウンロード。
こちらも起動しておく。
ポートの確認も同様。
Pro...
インフラストラクチャ
prometheus
grafana
2018-08-19 20:01:33
概要Docker for Macのマウントが遅い。npmとかスロー過ぎて辛い。メモ書き。
原因Dockerのスタッフの方のコメントを参照。(リンク先中段)
Docker - File access in mounted volumes extremely slow, CPU bound
MacOSのファイルシステムのAPIが関連しているらしい。
解決策
WindowsやLinuxを使う
docker-sync
MacOSとは異なるOSで構築した仮想環境を用意する(Vagrantとか)
cached、delegated、consistentといったオプションを活用する(Docker - Perf...
インフラストラクチャ
Docker
2018-09-16 22:10:57
概要ISUcon出場に向けて準備したことを記す。
目標・目的を定めた
目標
ISUconの予選の時間を目一杯使い切ってチューニングをする
勝つことが目標ではあるが、初参戦なので現実的なラインの目標を立てた
目的
インフラ周りの知見を高める
パフォーマンスを考慮したアプリケーション構築のための知見を高める
社内のパフォーマンス・チューニングの業務に携われるようにする(頑張る)
メンバーを募集した会社の同僚を誘い、2人チームで参戦。
パフォーマンス・チューニングの手順までを確認した準備
レギュレーション確認
環境構築
sshの設定
バックアップ取得
自動デプロイ構築
簡易的なスクリ...
インフラストラクチャ
パフォーマンスチューニング
ISUCON
ISUCON8
2018-06-09 16:32:32
概要さくらVPS上にDocker環境を構築する。サーバーの初期設定等は割愛。
構築手順操作はすべてsudo権限を持った一般ユーザーで行うものとする。
Dockerには無償のCE版と商用版のEE版があるが、今回はCE版を使用する。
リポジトリをセットアップインストールsudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
stableリポジトリのセットアップsudo yum-config-manager \
--add-repo \ https://download.docker.com/linux/cent...
インフラストラクチャ
Docker
さくらのVPS
2018-04-01 11:00:31
Dockerとは
Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム
Linuxのコンテナ技術を使用
コンテナは、ホストマシンのカーネルを利用し、プロセスやユーザーなどを隔離する
軽量・高速
ミドルウェアや各種環境設定をコード化して管理できる(=Infrastructure as Code)
ローカル・本番環境問わず
誰でも同じ環境が作れる
環境の再配布・再利用が容易
Dockerの正体
Linux Container(LXC)
LXCにおけるコンテナのカスタマイズ(設定ファイル作成やシェルスクリプトによるファイルインストー...
インフラストラクチャ
Docker
仮想環境
2017-10-12 16:34:53
概要AnsibleでさくらVPSの初期セットアップを自動化します。
環境
さくらVPS
CentOS7.3
Ansible2.2.1.0
前提知識
さくらVPSをの初期設定の流れを理解していること。
さくらVPSの初期設定
さくらVPSにCentOS7をインストールさくらVPSのコンソール画面からOSインストール>カスタムOSインストールを選択してCentOS7をインストールしておきます。インストールが開始されると、CentOS7のインストール用コンソール画面(VNCコンソールのHTML5版かJava Applet版)を開くことができるので、環境に合わせて好きな方を選びます。
C...
インフラストラクチャ
Ansible
CentOS
さくらのVPS
Iaas
2017-10-01 16:34:12
LaravelでマイグレーションやSQLファイルのインポートを繰り返したり、中断したりと無茶をやっていたらMySQLがおかしくなりました。
対応MySQLの設定ファイルにログサイズを設定したら直りました。
innodb_log_file_size=5M
所感無茶はやめよう!
参考
"Plugin 'InnoDB' registration as a STORAGE ENGINE failed" というエラーで MySQL サービスを起動できません症状
innodb_log_file_sizeを気軽に変えると死ぬよ
インフラストラクチャ
MySQL
vagrant
2017-03-29 16:29:26
概要最近、Boxを再構築した際に、「Vagrant開発環境のワークフローをちゃんとまとめておきたい」と思ったのでまとめてみました。レポジトリにほぼ同じワークフローメモがあります。
github - bmf-san/vagrant-development-workflow
前提以下のアプリケーションがホストマシン(Mac)にインストールされていること
Vagrant
VirtualBox
環境ホストマシン(Mac)
macOS Sierra v10.12.2
仮想環境
CentOS6.7
構築手順
開発環境ディレクトリにて、Vagrantfileを作成する
vagrant init...
インフラストラクチャ
apache
CentOS
vagrant