ちゃんるいすのブログ

オタクエンジニアの雑記

覚書

GTID で errant transaction に悩んだら

TL;DR flush slow logs のタイミングでバイナリログに書き込まれる それによって GTID がズレる = errant transaction このスクリプトを mackerel-agent で定期実行することで解決 事象 あるタイミングでスレーブの GTID が進んで errant gtid が起きる。 f…

Orchestrator を Mackerel と組み合わせて幸せを掴むスクリプト

なにしてるの errant transaction の検知 errant transaction の修正 can-replicate-from-gtid を叩く Mackerel で使う なにしてるの errant transaction の検知 errant transaction の修正 can-replicate-from-gtid を叩く errant transaction の検知 funct…

CentOS 8 で mysql-community-server 8.0.19 を入れる

dnf め... mysql repo を入れる # dnf install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y mysql-community-server を探す # dnf list | grep mysql-community-server mysql-community-server-debug.x86_64 8.0.19-1.el8 mys…

snmp_exporter の generator で Edge Router のメトリクスを取る

これを使う grafana.com generator.yml ↑ の generator.yml は古い書き方で現在の generator では使えない。 こうする ↓ modules: edgemax: walk: - ifHCInOctets - ifHCOutOctets - ssCpuIdle - memTotalFree - memTotalReal - hrSystemUptime lookups: - s…

Terrfarom じゃなくても Ansible でもできるよ!S3編

今回は S3 簡単なやつ使うモジュール s3_bucket s3_lifecycle バケットの作成 - name: Create a bucket s3_bucket: name: "{{ project }}-dbbackup" state: present region: ap-northeast-1 ライフサイクルの追加 - name: Add a lifecycle s3_lifecycle: nam…

なんでみんな Cloudflare を使わないの?無料で使える Cloudflare の機能をご紹介!

よくあるアフィ記事のタイトル風 Cloudflare 無料で色んなことできるのに周りで使っている人が少ないから布教してみる。 Cloudflare Cloudflare の日本でのシェア Cloudflare の企業ミッション 無料で使える (無料)証明書の用意なんてしなくても HTTPS が…

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 静的配信をしよう 静的配信 なん…

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

お金あります?僕はありません。 良い感じのコンテナレジストリが欲しいですか?ありますよ。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…