ちゃんるいすのブログ

オタクエンジニアの雑記

AWS DMS を使ってプライベートクラウドの巨大な MySQL を Aurora MySQL へ移行してみた

今までプライベートクラウドで動いてたサービスが、データセンターの閉鎖に伴いどこかに移設しないといけない物語に AWS DMS を使ったので覚書として書いておく。 DB は 1.5TB の 45 億レコードとそれなりに大きいけどメンテ時間は動作確認を除いて 30 分ぐ…

俺的 MySQL Group Replication まとめ

既存のテーブルが Group Replication に準拠してるか エンジンが InnoDB かどうか テーブル構造が Group Replication 準拠か 既存のテーブルが Group Replication に準拠してるか エンジンが InnoDB であることが必要 Primary Key が必須だよ エンジンが Inn…

Cloudflare からプロキシされたアクセスを Nginx の real_ip_header でクライアントの IP アドレスを記録しつつ、Cloudflare からのアクセスのみを許可する

「お前のタイトル良く分かんねえんだけど?」 アクセスログに Cloudflare じゃなくてクライアント IP にしたい!&Cloudflare からのみアクセスしたい! 1. Cloudflare からプロキシされたアクセスを Nginx のアクセスログのクライント IP を正しいのにする …

俺的 MySQL 8 まとめ

俺的 MySQL 8 メモ 俺的 MySQL 8 メモ 1. MySQL 8 から SET PERSIST が使える 1. MySQL 8 から SET PERSIST が使える SET GLOBAL のグローバル変数の変更に加えて、再起動しても反映されるようになる。 mysql> SET PERSIST innodb_buffer_pool_size = 268435…

俺的 MySQL Router まとめ

1. MySQL Router はどこで動かすべきか 2. MySQL Router を挟むことでパフォーマンスに影響はあるか 2. bootstrap を実行したあとは気をつけろ 3. REST API で MySQL Router のメトリクスを取りたい REST API の有効化 1. MySQL Router はどこで動かすべきか…

Drone 1.x で特定のリポジトリに trusted フラグをつける

1. admin ユーザーを作成する DRONE_USER_CREATE=username:octocat,machine:false,admin:true,token:55f24eb3d61ef6ac5e83d550178638dc2. drone-cli インストール docs.drone.io3. drone-cli 設定 $ export DRONE_SERVER=http://192.168.20.21:8081 $ export…

k3OS で Kubernetes クラスタ環境を作る

Kubernetes 勉強したい 手順 1. k3OS iso download 2. ↑ の iso で VM を作る 3.1, server としてインストール 3.2. agent としてインストール 4. Reboot 後 3. 確認 Kubernetes 勉強したい ということで、自作サーバー3台(Proxmox)上に k3OS を3台用意…

俺的 Orchestrator まとめ

めっちゃ参考になるやつ。 yakst.comフェイルオーバーはしても Non-GTID だと CHANGE MASTER が実行されずに孤立した。 けど、↑ の yakst を見ると何も問題ないように書かれてる。 公式ドキュメントにも、GTID(Pseudo−GTID)じゃないと孤立するよとは書かれ…

Cloudflare WorkersKV を試す、ベンチマークもあるよ

Cloudflare WorkersKV 夢あって、個人サービスに導入してみたので感想 uploader.xzy.pw Cloudflare WorkersKV について 料金 始め方 公式 SDK で WorkersKV の操作 ベンチマーク 本番で Cloudflare WorkersKV を使うのはやめたほうが良いかもしれない たまに…

俺的 MySQL GTID レプリケーション

レプリケーション止まった時 1. どこで止まったか確認する 2. エラーになった GTID をどうにかする GTID なしのレプリケーションに戻す バックアップとリストア スレーブの追加 Got fatal error 1236 from master when reading data from binary log: 'The s…

Cloudflare を使って特定のサイトにアクセスする際に Google OAuth を要求する「Access」が便利

Cloudflare 使いこなしてますか?機能多すぎて全部試しきれてないです。 やりたいこと 特定のサイトにアクセスする際に、Google OAuthを要求して特定のメールアドレスのときだけ許可をしたい。 だけど、特定の IP からのときだけはバイパスしたい。 Cloudfla…

Ansible AWX で既存の Inventory を読み込む

背景 既存の inventory を Ansible AWX で使いたい。 (ちなみに、Ansible AWX は動的インベントリを推奨しているのをドキュメントから感じる) 前準備 先にインベントリを GUI 上から作成しておく。 dev stg prd 実行 tower-cli ではなく、コンテナに入って…

Ansible AWX のアップグレード方法

3.0.0 -> 4.0.0 へのアップグレードをしたので覚書 インストール方法は release ページからファイルを落としてきて local_docker流れとして 1. バックアップ 2. 現環境を壊す 3. 新しいバージョンの AWX で環境を作る 4. バックアップから復元このやり方が公…

Goでビルドしたものを超簡単にrpmとdebにパッケージしてLinux向けに配布する

Linux サーバーで動かすことを前提に書いたものを Linux 向けに簡単にインストールさせるためにいちいち Go を入れたりするのは面倒。 あと、GitHub Enterprise(GHE)とかを使っているとパブリックなリポジトリに対してもトークンが必要だったり超面倒。な…

Go で Elasticache の Auto Discovery に対応する

PHP や、.NET の memcached クライアントは、AWS 公式で Auto Discovery に対応したライブラリを出してるけど Go にはない。 ので Go で書いてみた。configuration endpoint を叩いて、ノードのエンドポイントを取得するまで。↑ のように configuration endp…

Lambda@EdgeをCircleCI(Apex+シェルスクリプト)でデプロイする

Lambda@Edge のデプロイについて serverless framework や Apex では Lambda@Edge のデプロイが可能です。 しかし、serverless framework では記述内容も機能も多すぎるため1ファンクションだけ Lambda@Edge を使いたい場合には少し重すぎるため Apex + シ…

EC2の自動停止・起動を超柔軟に超簡単に実現する「AWS Instance Scheduler」

AWS Instance Scheduler aws.amazon.comAWS の中の人が作っていて 元は EC2 Scheduler という名前だったのが、AWS Instance Scheduler に変わった。テンプレートが用意されているので、CloudFormation で実行すれば構築が終わるという素晴らしい仕組み。 ア…

Ansible AWX 「サーバーエラーが発生しました。」を解決する

根本原因は分かってないけど postgres 関連。 pg_data_dir を /var/tmp/pg_docker にしていたけどいつの間に死んでいた。 ※ 更新 /var/tmp は消えないもんだと思ってたら普通に消える [root@test cron.daily]# cat /usr/lib/tmpfiles.d/tmp.conf # This file…

データのバックアップに悩むくらいならクラウドストレージの「Backblaze」に保存するのが賢いぞ

胡散臭いタイトルになってしまった。皆さんは自宅のファイルサーバーのバックアップはどうやって取ってますか? RAID とかですか?バックアップ用の HDD に流してるとかですか?でも家燃えたらどうします?Backblaze 良いですよ。 Backblaze とは www.backbl…

Fargate + gRPC で B/G とカナリアリリースを実現する

構成 課題① こんな構成のとき、API のタスクだけを更新する際に Blue/Green とカナリアリリースを実現するときにどうするのが良いか迷ったのでまとめておきます。 gRPC なので、Front -> Internal ALB -> API では、Internal ALB API は HTTP/1.1 になるため…

Ansible AWX + tower-cli の --limit が動かない問題

--limit が動かない $ tower-cli job launch --job-template=1 --limit $(hostname -f)こうしても、--limitが効かずに全インベントリに対して実行される。 原因はテンプレートの設定 制限の起動プロンプトにチェックを入れる制限はいわゆる、--limitのことな…

Ansible AWX のバックアップ・リストアのやり方(Docker編)

TL;DR バックアップ・リストアはできた。 コンテナ(awx_task)に直で入れたもの以外は全て復元できた。 概要 Docker で構築した Ansible AWX のバックアップ・リストアのやり方 環境 pg_username=awx pg_password=awxpass pg_database=awx Backup 1. postgr…

Ansible AWX Exception: project_update xx (failed) encountered an error (rc=2), please see task stdout for details の対処法を見つける方法

Exception: project_update 71 (failed) encountered an error (rc=2), please see task stdout for details ジョブがエラーになるジョブを実行した結果、プロジェクトのアップデートの段階でエラーが出たからエラーログを見て というエラー。 しかし、 http…

AnsibleでOpenStackのserver groupを適用したインスタンスを作成する

Ansible で OpenStack を使う準備 openstacksdk openstack credentials interpreter openstacksdk Ansible は brew とかで入れるより、外部モジュールを使う際は Ansible も pip で入れたほうが幸せになれる。 $ pip install openstacksdk openstack credent…

Ansible AWX で .ssh/config を適用させたい

コンテナの中に入って root ユーザーの .ssh/config を設定すればOK [local]$ docker exec -it $( docker inspect --format="{{.Id}}" awx_task ) bash [root@awx awx]# mkdir ~/.ssh && vi ~/.ssh/config Host github.com User git Hostname ssh.github.com…

Cloudflare「Error 1000: DNS points to prohibited IP」の解決

概要 こんなシステムのとき、ユーザーから Cloudflare を通って最上段のリバプロのバックエンドが Cloudflare + proxy:on の環境のとき、「Error 1000: DNS points to prohibited IP」というエラーがでる。support.cloudflare.com 発生条件 以下のどれかに当…

個人サービスに定額課金を超手軽に導入する「Stripe」

概要 個人サービスで開発しているサービスに定額課金を試しに導入してみたくて、Stripe を使ってみたら最高に簡単に導入できたので紹介したいと思います。 uploader.xzy.pw Stripe 決済プラットフォームです。PayPal もそうです。 今回 PayPal を使わなかっ…

社会人になって半年経ったので適当に雑感を述べる

社会人半年だったので適当に感想を述べたいと思います。 適当なので信頼度とか質は期待しないでください。CyberAgent Developers Advent Calendar 2018 23日目の記事です。 adventar.org CyberAgent に入社した 大学時代はインターンにサイバーエージェント…

勉強のために作ったWebサービスをアプリに載せたらAppleと激闘した話

この記事は「個人開発Advent Calendar 2018」の6日目の記事です。 昨日は asmz さんの「IT勉強会検索iOSアプリをリリースした話」でした。普段はインフラエンジニアとして適当に仕事をしています。 今まで個人でいくつかリリースしてきたサービスの中で1つだ…

パニック障害的なメンヘラ病を3年かけて治した話

iPad Pro 2018 年モデルを買ったのでバスの中で記事を書いてみる。僕は3年前の大学2年生ぐらいのときから、パニック障害的な(そう診断されたわけじゃない)ものに悩まされて、ここ最近マシになってきたので悩める人たちへの助けになりたいと思ってこの記事…