2019-01-01から1年間の記事一覧

systemd のテンプレートユニットで同じプロセスを複数立ち上げる

systemd で同じプロセスを複数立ち上げる方法。Supervisord なら numprocs を指定するだけですけど systemd には相当する設定項目がありません。 ので、テンプレートユニットを使って、1つのユニットファイルを元に複数のプロセスを立ち上げます。 worker@.s…

systemd で Requires/Wants/BindsTo/PartOf を設定したサービスの開始や停止時の伝播のマトリクス

改めて man を読んでもよくわからなかったので表に整理したメモ。 ユニット A のファイルで Requires B のように指定したときの動作。 操作 Requires Wants BindsTo PartOf start A start B start B start B - stop A - - - - restart A - - - - exit A - - …

RabbitMQ を用いた開発のためのメモ

RabbitMQ についてどちらかといえば開発側寄りの視点で下記あたりのドキュメントを読んだメモ。 https://www.rabbitmq.com/documentation.html メッセージの ack と reject コンシューマーがメッセージを受信するとき、最終的に basic_ack や basic_reject …

RabbitMQ のクラスタリングのメモ

RabbitMQ のクラスタリングについて下記あたりのドキュメントを読んだメモ。 https://www.rabbitmq.com/admin-guide.html なおクラスタリングとは別にインターネット経由のような遅い回線を用いたメッセージの複製にフェデレーションというのもあるけれども…

RabbitMQ メモ

だいぶ前に書いていたメモを発掘。 RabbitMQ を用いた開発のためのメモ - ngyukiの日記 RabbitMQ のクラスタリングのメモ - ngyukiの日記 これらの書いていたものなので投稿日を改ざんしてます。 設定ファイル https://www.rabbitmq.com/configure.html Rabb…

jmeter を master(Windows)で slave(Docker)で実行する

Windows 側は Ctrl-R で次のように jmeter を開始します。 -Jremote_hosts にはスレーブである Docker のホストをカンマ区切りで指定します。 jmeter -Jserver.rmi.ssl.disable=true -Jremote_hosts=192.0.2.123 Docker で次のように jmeter を実行します。…

KVM の 1 台の仮想化ホストの中の複数のゲスト間でネットワーク分断を発生させる

KVM

とあるシステムの検証用の環境で 1 台のホストの中で複数のゲストでクラスタリングしており、そのノード間でネットワーク分断を発生させたかったときのメモ。 LANケーブルを抜こうにも抜くべきケーブルがありません。 ebtables ぱっと思いついたのがこの方法…

KVM ホストの NetworkManager 管理の DNS の設定を変える

KVM

とある KVM ホストの NetworkManager 管理の DNS の設定を変えようとしたときのこと。 cat /etc/resolv.conf | grep nameserver # 古い dns サーバになってるぜ nmcli con modify br0 ipv4.dns 192.0.2.100 # 変更するぜ nmcli con up br0 # 変更を反映する…

Gitlab Runner で分散キャッシュや --docker-volumes を使ってジョブ間のキャッシュを共有する

Gitlab Runner で concurrent が 1 より大きい場合、パイプラインを 1 つの Runner で実行するよう構成したとしてもジョブ間でキャッシュが共有されないことがあります。 例えば concurrent = 4 な Runner で次のパイプラインを実行します。 image: alpine s…

NAT の内側からリモートのサーバを使って PhpStorm+Xdebug+Docker で開発するメモ

例えば AWS の EC2 インスタンスに Docker Engine を入れて、その Docker を用いて PhpStorm+Xdebug で開発するメモ。 なお、PC 側は Windows 10 で WSL です。 Docker Remote API EC2 インスタンス上の Docker で Remote API を有効にします。以下のいずれ…

Nagios で Pacemaker のクラスタの状態を監視する

とある Pacemaker で HA クラスタにしてるシステムで Pacemaker のクラスタの状態を監視したときのメモ。 Pacemaker から次のような方法でパッシブに Nagios に通知すれば良さそうですけど・・・ pacemaker-pygui CentOS 7 の Pacemaker/Corosync で snmptra…

簡易的にフェイルオーバーの発生を nagios で通知する

とある Keepalived や Pacemaker で仮想IP(VIP)を用いたフェイルオーバーによる冗長化を行っているシステムで、フェイルオーバーが発生したことを nagios で簡易的に監視したときのメモ。 Keepalived の notify スクリプトや、Pacemaker の crm_mon --exte…

Terraform でネストしたループを flatten する

これを、 variable "hoge" { default = [ { name = "aaa" items = [ 111, 222, ] }, { name = "bbb" items = [ 333, 444, ] }, ] } こうしたかった [ { "item" = 111 "name" = "aaa" }, { "item" = 222 "name" = "aaa" }, { "item" = 333 "name" = "bbb" }, …

Bootstrap の Modal を promisify して async/await で直列に書けるようにする

js から Bootstrap の Modal を表示してそのモーダル上での操作に応じてなにかしたいとき(典型的には確認ダイアログとか)、Modal を Promise として扱えるようにしておくと async/await で直列に書けて便利です。 const promisifyModal = (modal, param) =…

MySQL の行ベースレプリケーションで multi delete するとレプリケーションが止まる件

MySQL で行ベースレプリケーションしていて、特定の操作を行ったときにレプリケーションがエラーで止まる事象が発生しました。 そのときの調査のログや対応の方法のメモ。 原因調査 まず、レプリケーションのスレーブでレプリケーションの状態を見ました。 m…

Alpine Linux の php で CP932 な CSV をストリームフィルタを使って読む

tinc で Window 10 -> CentOS 7 な VPN を作る

tinc は Windows 10 でも使えるので、Window 10 -> CentOS 7 な VPN を試してみました。Window 側の作業は基本的に管理者として実行された cmd.exe で行っています。 サーバの設定 前回作業した CentOS 7 -> CentOS 7 な VPN のサーバ設定は基本的にそのまま…

tinc で CentOS 7 -> CentOS 7 な VPN を作る

tinc というものを使えば簡単に VPN ができるようなので試してみました。 クライアント/サーバ型で VPN 作ります。クライアント・サーバともに CentOS 7 です。VPN の端点は次の通り IP アドレスにします。 Server: 192.169.255.1 Client: 192.169.255.2 tin…

Cloudflare DNS + Docker + Let's Encrypt + Nginx で TLS->TLS なプロキシを作る

要するに次のことを行います。 Nginx で TLS->TLS なプロキシを作る TLS は Nginx でいったん切る 証明書は Let's Encrypt で取得する Nginx は http はリッスンさせないので DNS 認証を使う ドメインは Cloudflare で管理している ゾーンの委任やレコードの…

curl で相手が突然死すると無限に待ってシグナルでも死なない件

PHP

なんで今さら ZF1 やねんという話ですが、Zend_Http_Client_Adapter_Curl の timeout は接続のタイムアウトなので、Read/Write も含めたタイムアウトである request_timeout が未指定だと接続後に相手が突然死すると無限に待ちます。 ネットワーク経路のステ…

FLIP で要素の移動のアニメーション

Vue.js のチュートリアルを読んでいて FLIP という要素の移動のためのアニメーションの手法を知りました。 https://jp.vuejs.org/v2/guide/transitions.html https://aerotwist.com/blog/flip-your-animations/ 要するに・・ First. 要素の最初の状態を取得 …

CSS の attr がトグルボタンの ON/OFF でテキストを変えたいときに便利だった

CSS

HTML/CSS でチェックボックスを用いたトグルボタンをで実装しているとき、トグルの ON/OFF でテキストの文言も変えたいときは css だけでは難しいので js でやってましたが、css でも attr を使えば js 無しでできることを最近知りました。 次のように HTML …

certbot で更新した letsencrypt の証明書を nginx に反映する

nginx の Web サーバで letsencrypt の証明書を使うために cron で日次で下記が実行されるようにしていました。 certbot renew -t -n --agree-tos --keep これだけだと証明書は更新されるものの nginx がリロードされないため nginx が使用している証明書が…

Docker Desktop が重いのでリモートサーバの Docker で開発できるようにしてみた

Docker Desktop が重くて仕方ないのでリモートサーバの Docker へ unison で同期して開発できるようにしてみた。 Docker Remote API のセットアップ どこかのリモートサーバに普通に Docker をセットアップした後、Docker Remote API を有効にします。 まず…

AWS Certificate Manager Private Certificate Authority 素振り

AWS

AWS のマネージドなプライベート CA の AWS Certificate Manager Private Certificate Authority を素振りしたメモ。 費用 https://aws.amazon.com/jp/certificate-manager/pricing/ プライベート CA ごとに 400 USD の月額と、プライベート証明書を発行する…

Gitlab CI のアーティファクトをブランチやタグとジョブ名を指定して特定のファイルを取得

以下のような URL で、ブランチやタグとジョブ名を指定して最新のアーティファクトから特定のファイルを取得できます。 https://example.com/projects/:id/jobs/artifacts/:ref_name/raw/*artifact_path?job=name https://example.com/<namespace>/<project>/-/jobs/artifacts/<ref>/r</ref></project></namespace>…

WSL のコマンドラインから Windows 10 の通知を送るメモ

WSL

トースト通知というの? いくつかツールを試してみたメモ。 Growl For Windows Windows 10 の通知ではなく独自の通知が実装されています。 Chocolatey でサクッとインストールできるかと思いきや、インストールに失敗します。 https://chocolatey.org/packag…

docker-compose で MySQL レプリケーション環境をサクッと用意する

本番環境は MySQL のマスターとリードレプリカのスレーブで構成されているものの、ローカル環境はシングル構成なこと、よくあります。 そういうとき、レプリケーション遅延が原因による不自然な表示・・不具合が生じることがあったりするので、docker-compos…

Gitlab Runner のジョブに Amazon ECR のイメージを使う

思うとことあって Qiita に移しました → https://qiita.com/ngyuki/items/719e877c52415e398148

PHP 製のデータベースのスキーマ定義を差分で適用するツール「dbdatool」

データベースのスキーマ定義の変更、いわゆるデータベースのマイグレーションついて、スキーマ定義の差分を SQL とかそれ用の DSL とかで作成し、リポジトリ管理してマイグレーションツールで実環境に適応するのが多いと思います。 この方法はわかりやすくて…