ちゃんるいすのブログ

オタクエンジニアの雑記

xtrabackup と xbcloud 使えばクラウドストレージに投げるのが楽だし速いし良いことばかり

xbcloud xbcloud を使う理由 50GB を超えれない xbcloud はインストールが手軽 フルバックアップ リストア デメリット xbcloud www.percona.comxtrabackup (innobackupex) と S3 (minio) とか GCS と組み合わせるときに、公式純正の CLI よりも速いしリソー…

Nomad に載った API サーバーのログ監視を考える

これの続き blog.luispc.comログ監視、ここではアプリケーションのエラーログについて Slack に通知をする fluentd.conf ネストされた JSON を展開する アプリのログ以外は無視したい Elasticsearch に送りながら Slack に送る 確認 Tips ロガー Gin を Grac…

Nomad で fluentd を使ってアプリログを Elasticsearch に投げる

新年1発目 アプリケーションのログを標準エラーに出力する zap がパフォーマンスが良いという意見だけで zap にした。結果、こんなのが標準エラーに出力されるようにした。 { "level":"error", "ts":1577969526.688373, "caller":"lib/logger.go:29", "msg"…

WordPress を運用している皆様は静的ファイル配信をしてますか?

TL;DR 静的配信 WordPres は重い セキュリティ対策 wp2static wp2static を使ったワークフロー デメリット WordPress 本体の話 WordPress からはてなに移動したのに 仕事で WordPress を扱うとは思ってもいなかった。 TL;DR 静的配信をしよう 静的配信 なん…

新卒1年目僕、初めての一人メンテ!

フロントはメンテ入れた。 後は API 本番環境でやらかしちゃった人 Advent Calendar 2019 - Qiita ※ 追記 2019/12/21 0時31分 ご指摘を貰ったのでこの Advent Calendar の必須項目があることを知らんかったので追記します。 惨劇はなぜおこってしまったのか …

お金が無い人のためのプライベートコンテナレジストリのご紹介

お金あります?僕はありません。 良い感じのコンテナレジストリが欲しいですか?ありますよ。Dockerhub は無料だとプライベートは1つしか持てないけど無制限に作れるやつがあるんです。GitLab の中にあるんですが。 https://docs.gitlab.com/ee/user/packag…

Nomad に Drone を展開する

drone のどっかのバージョンから server と runner が別イメージになった。 job "drone" { datacenters = ["luis"] type = "service" update { max_parallel = 1 min_healthy_time = "10s" healthy_deadline = "3m" progress_deadline = "10m" auto_revert =…

Nomad と Drone で贈る CI/CD 環境

今の所順調です。 blog.luispc.comあとは CI/CD を作るわけで、ワイの自宅には Drone が動いているので Drone を使って Nomad へデプロイをする。 github.com .drone.yml kind: pipeline name: default platform: arch: amd64 steps: - name: build docker i…

オンプレでやる Nomad + Consul + Traefik が本当に顧客が求めていたコンテナオーケストレーションでした

前回こんな記事を書いた後に、コンテナオーケストレーションを導入した。 blog.luispc.com 今までの構成はイケてなかった オンプレに k8s の環境はしんどかった マネージド k8s k8s に拘るのをやめた Nomad + Consul の構築は簡単だった Nomad + Consul 構築…

dnf install の --nobest オプション

CentOS 8 を最近触るようになった。 dnf install --nobest 例えば、依存関係でパッケージが入れることができなかった場合 [root@nomad01 ~]# dnf install docker-ce Last metadata expiration check: 0:03:38 ago on Thu Dec 5 21:34:46 2019. Error: Proble…

個人サービスを作る人は電気通信事業届けとか、特定商取引とか気にかけてる?

個人開発 Advent Calendar 2019 5日目です。 qiita.com個人開発をやる上でやらないといけないこととを紹介してみようと思います。 Easy Uploader easyuploader.app僕が作ってるサービスです。 普通のアップローダーです。他のアップローダーと差別しているの…

Go で作る Ansible モジュール

Ansible Advent Calendar 2019 2日目ーーー qiita.com1日目は sky_jokerxx さんのこちらの記事でした。 sky-joker.tech2018 の Ansible Advent Calendar ではこんな記事を書いていた。 blog.luispc.com モジュールを作った経緯 Go で Ansible モジュール作る…

Proxmox を他人に貸し出すときのユーザーマネジメント

Proxmox で特定のプールだけに対しての操作を許可する ユーザーを作る グループを作る ロールを作る プールを作る グループにユーザーを追加 グループとプールを紐付ける Proxmox で特定のプールだけに対しての操作を許可する ユーザーを作る # pveum userad…

InnoDB Cluster のフェイルオーバー時間を計測してみる

InnoDB Cluster クエリが少ないとき クエリが多いとき 最低5秒以上で MySQL Router は新プライマリへ切り替わる MySQL Router のメタデータが更新されるタイミング InnoDB Cluster 環境は MySQL 8.0.17 Single-Primaryパターンは下記2つ クエリが少ないと…

俺的便利コマンド

tar + pv journalctl -fu service tar + pv $ pv backup.gz | tar xf - --use-compress-prog=pigz -C /mnt/data $ tar cf - --use-compress-prog=pigz mysql -P | pv -s $( du -sb mysql | awk '{print $1}' ) > mysql.gz journalctl -fu service systemctl …

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 レプリケーション

GTID & 非GTID の混合レプリは無理 レプリケーション止まった時 1. どこで止まったか確認する 2. エラーになった GTID をどうにかする GTID なしのレプリケーションに戻す バックアップとリストア スレーブの追加 Got fatal error 1236 from master when rea…

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…