firewalld の target の default と REJECT の違い

firewalld でインタフェースやソースアドレスに基づいて特定のゾーンに入ったパケットが、そのゾーンに設定されているサービスやポートにマッチしなかったときのデフォルトの動作は、ゾーンの target で指定します。 指定します、と言っても定義済のゾーンで…

リージョン間の VPC ピアリング接続経由で SES SMTP の VPC endpoint を使う素振り

AWS

下記によると Amazon SES の SMTP エンドポイントに VPC エンドポイント(Private Link)経由でアクセスできるようになったので、インターネットアクセスの無いプライベートサブネットからでも VPC エンドポイント経由で SMTP でメールを送れるようになった…

TCP backlog が溢れたときに何が起こるか

何となくふんわりとしか理解していなくて、実際のところ TCP backlog が溢れたときに Client~Server 間で何が起こるかよく判っていなかったので、実際に backlog が 1 で accept しない簡易な TCP サーバを作り、tcpdump でどのようなパケットが飛び交うか…

Makefile で複数の Lambda 関数をデプロイするメモ

複数の Lambda 関数で構成される環境を、基本的な構成は Terraform で管理しつつ、Lambda 関数のコードは make で aws cli を呼び出してデプロイするメモ。 Lambda 関数のコードも含めてすべてを Terraform で管理することもできると思いますが・・・それだ…

tmux で複数コマンドを複数ペインでさっと実行する

だいぶ前に社内ブログで次のような方法で tmux でペイン分割して複数コマンドを同時に実行する方法を紹介していたのですが、 tmux new-session -d ping 1.1.1.1 &&\ tmux split-window ping 8.8.8.8 &&\ tmux split-window ping 8.8.4.4 &&\ tmux set-window…

CentOS 8 を virt-install でサクッと入れる

こんな感じに centos8.ks.cfg を作成して、 #version=RHEL8 cmdline url --url=http://ftp.riken.jp/Linux/centos/8.1.1911/BaseOS/x86_64/os/ lang en_US.UTF-8 keyboard --vckeymap=jp --xlayouts=jp timezone Asia/Tokyo --isUtc --ntpservers=192.168.2.…

Gitlab CI でマージリクエストのマージ結果でパイプラインを実行する

Gitlab は マージリクエストに対してそれがマージされた結果を元にパイプラインを実行できます。 Pipelines for Merged Results | GitLab 便利そうですけど、これは gitlab.com なら Silver 以上、セルフホスティングなら Premium 以上じゃないと使えないよ…

PHP版の Power Assert もどき「Phpower」

PHP

js には Power Assert という便利なパッケージがあります。私自身は js でテストをほとんど書いたことがないので使ったこと無いのですが、例えば次のようなアサーションが、 assert(ary.indexOf(zero) === two) 次のように assert の各部位の値が表示される…

docker-compose で PostgreSQL のストリーミングレプリケーションをサクッと試す

PostgreSQL のレプリケーションははるか昔に pgpool (pgpool-II ではなく) でレプリケーションさせて以来まったく触ってなかったので、組み込みのストリーミングレプリケーションをサクッと試してみました。 他にも色々パラメータを調整すべきものがあるらい…

「入力した項目だけで検索」に IS NOT FALSE を使うなら被検索列が NULL にならないか注意

わりとよくある、複数の項目に検索条件が入力できて、入力した項目だけを検索条件として使用し、未入力の項目は検索条件には使わない、というフォーム、クエリビルダのようなものを使わないなら IS NOT FALSE を使うと便利です。 SELECT * FROM t WHERE ( a …

Ansible AWX を素振りしたメモ

Ansible AWX を素振りしたメモ。WebUI から Ansible を実行して実行結果を記録・閲覧したり、役割ベースでアクセスコントロールしたり、スケジュールで自動で Ansible を実行したり、メールや Slack などで通知したり、などなど、いろいろできます。 Ansible…

Ansible の synchronize で不必要に changed になるのを防止+α

Ansible で大量のファイルをコピーしたいときは copy よりも synchronize の方が早いですが、 - hosts: all become: yes tasks: - name: synchronize many files synchronize: src: many-files/ dest: /tmp/many-files/ これだけだと rsync の -a が指定され…

パッシブチェックのアラートを freshness で自動で解除する

snmptrap などによる通知を Nagios のパッシブチェックで受けるとき、アラートになったあと手動で解除するまでずっとアラート状態のままになります。解除(OK)もパッシブで受けるようになっていれば別ですけど・・・ なんとなくずっとアラート状態のままなの…

Grafana Loki を素振りしたメモ

[Loki]Grafana Loki を素振りしたメモ Grafana Loki が ちょっと前に v1.0.0 がリリースされて GA になっていた ので素振りしました。 試したバージョンは v1.2.0 です。Kubernetes とかはよくわからないのでスルーしてます。 概要 Grafana Loki は Grafana …

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 なおクラスタリングとは別にインターネット経由のような遅い回線を用いたメッセージの複製にフェデレーションというのもあるけれども…

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 のサーバ設定は基本的にそのまま…