地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

2020-03-01から1ヶ月間の記事一覧

go keyの存在有無チェック

MapのKeyを参照すると、2つめの返り値でそのKeyが存在しているかどうかのbool値を返す。 その値をみれば存在有無を確認することができる if v, ok := m["a"]; ok { fmt.Println(v) }

【Linux】iptablesでのコネクション確立要求を破棄

iptablesでのコネクション確立要求を破棄 iptablesを起動させておいて下記コマンドを実行 $ iptables -A INPUT -p tcp -d 127.0.0.1 --dport 12345 -j DROP # firewalldを使うなら以下のような感じ(未検証) $ firewall-cmd --direct --add-rule ipv4 filter …

pid名前空間を別コンテナで共有する

すでに実行中のコンテナがあるとしてそのコンテナにデバッグコマンドが一つも入ってないケースを想定。 この場合はコンテナに入ってパッケージマネージャを使用してデバッグツールを入れる方法もあるがそれすらもかなわない状況だったとする。 そんな時に使…

【Apache】mod_proxy_http2を試す

クライアント <-> のhttp/2にする方法は問題なさそう。 じゃあ今度はhttp/2をapache <-> バックエンドサーバで使用するにはのお話。 結論としてはmod_proxy_http2を使うだけで問題ない。 こんな感じで今まで使ってるmod_proxyの設定でproxyする際のプロトコ…

【その他】インフラエンジニアのスキルチェックリストをやってみた

hatebu.me 暇つぶしにやってみた。 エンジニア歴 -> 丸3年(インフラエンジニアって肩書きだったことはないはず) 実務じゃなく趣味だけ触ったは基本× DB設計 (0/4) [×] 要件からDB定義を作成できる [×] ER図を作成できる [×] 第3正規化まで正規化できる [×] …

【TCP】TCPの話 SOCK_DGRAM/SOCK_STREAM

netstat -neとかで見れるsocket-typeのDGRAMとかSTREAMってなんだろうって話 Proto RefCnt Flags Type State I-Node Path unix 2 [ ] DGRAM 12689 /run/systemd/shutdownd unix 3 [ ] STREAM CONNECTED 33511 STREAM (SOCK_STREAM) TCP を使用したプロセスの…

ネットワークIOで刺さったプロセスの接続先を探す

nfsなりdbへ接続するプロセスがあったとして接続先が原因でプロセスが刺さることは多々ある。 刺さったプロセスがどこに対するIOでその状態になったかを特定する方法 # 刺さったプロセスのPIDを取得 $ ps aux | grep "プロセス名" # pidから開いているソケッ…

【Linux】ループバックアドレスに設定した仮想IPアドレスでARPリクエストに応答しないように設定する

タイトルの通り。L4ロードバランサ をLVSで実装するときに必要な設定 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 仮想IPアドレスはLoに割り当てる。 いろいろなサイトを見ていて思うのだがallに設定する必要はあるのだろうか? n…

nginx tls1.3を使う

yumでは無理っぽいのでソースからビルドインストール。 オプションはググってると無限に出てくるのでひとまず遊ぶだけなので使いそうなものをひたすら追加。 OpenSSL 1.1.1以上が必要なので事前に上げるかdockerでそれようにimageを用意しても良いかも 手順 …

container_ofマクロ

container_ofマクロは、Linux Kernelで用いられ、「構造体メンバポインタ」から「そのメンバを含む構造体の先頭ポインタ」を得られるマクロ。 linuxカーネルで頻出の連結リストの実装はこんな感じ。 struct list_head { struct list_head *next, *prev; }; …

【k8s】configMapGeneratorをconf書き換え時にdeploymentを再作成させる

k8s

kustomize.io 背景/概要 Configmapは通常書き換えただけだとその内容は既存のpodには反映されない。この仕組み自体は役立つケースもあるがミドルウェアの修正時に即座に反映させたいケースで人の手を介してkubectl の rollout restartを打つ必要が出てきてし…

go シグナルハンドリング

golangでcliツールを書く際にsigintをプログラムでハンドリングする際の方法 os/signalを使用することで容易にシグナルのハンドリングを行うことができるとのこと。 qiita.com 上記の記事内ではSIGINTについてのハンドリング方法が記載されている。 上記のパ…

playbookのhostsがallでもグループ分けしたい

playbookが下記のようになっていて特定のinventoryにあるグループのみ実行したいケースがあるとする - name: example hosts: all gather_facts: yes : hoststはこんな感じ [group1] hoge001 hoge002 [group2] fuga001 fuga002 この場合はansible-playbooにl…

LVSとDSRの話

LVSの環境構築手順を見てると当たり前のようにVIPをループバックインターフェースへ割り当てているのを見て不思議に思ったので調べた。 ループバックインターフェースとは ループバックアドレスとは、その機器自身を表す IP アドレスであるのに対して、ルー…

多段ssh

client -> host1(踏み台サーバ) -> host2(目的のサーバ) とログインしたいケースでsshコマンドを一回で済ませる方法 ~/.ssh/configへ下記のように記載することで行うことができる。 Host host1 HostName host1.hoge.fuga User user IdentityFile ~/.ssh/id_r…

メジャーバージョンーマイナーバージョンリリースバージョンの比較

x.y.zのコマンドのバージョン比較を行うtips [root@choco01 ~]# gcc -dumpversion 4.8.5 こんな感じのバージョン表示でバージョン次第で動作を分ける処理を書きたいときがあるとしてそのまま数値比較はできない ので、printを使ってフォーマットしてしまう […

カーネルスレッドの生成順

カーネルスレッド生成 kernel_thread() カーネルスレッドを生成する入口。引数にスレッドの用の値を渡している?なのでプロセスというよりスレッドを生成する。 kernel_thread()で何している do_fork() task_strcutのコピーを作り実行可能プロセスのリストに…

nc コマンドで始めるワンライナーHTTPサーバ

httpサーバワンライナー httpサーバを簡易的に生成する方法はたくさんあってpythonなりperlなりでphpなりでワンライナーで書けたりします。 今回はそれらのLL言語を使わずにコマンドラインからhttpサーバを起動してみる 必要パッケージはnetcatコマンドを使…

たまーに使うdockerコマンドオプション

たまーに使う系のオプションシリーズ 環境 Docker version 19.03.5, build 633a0ea build --secret Dockerfileの中でプライベートリポジトリなどにssh鍵が必要なケースで使用可能。 単純にADD/COPYでも解決することができるがDockerfileの書き方次第では(仮…

【Linux】自宅サーバからgmailへメールを送信する

メール送信 LPIC取得時にさらっと構築したメールサーバ。 送信テストはローカルでしかやってなく特に困ることもなかったけど外部に送信する場合はどうやるんだろうって思って色々調べた。 環境 送信 OS : CentOS 7.7 メールサーバ : Postfix 手順 ① 何はとも…

chrome driver アップデート

アップデート return webdriver.Chrome(executable_path=driver_path, chrome_options=options) Initialization of the driver failed. Message: session not created: This version of ChromeDriver only supports Chrome version 75 久々にseleniumで遊ぼ…

GitHub Actionsでもslack通知

slack通知 curlでエンドポイント目掛けてやってたけど便利なActionが公開されてることに気づいたので試し。 GitHub Marketplace上にslack-actionが存在した。 github.com jobs: notify: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: …

カーネルスレッドの仕事

Linuxカーネルスレッド Linuxでのカーネルスレッドのお仕事は以下のような感じ keventd(ワークキュ) kswapd(メモリー回収) ksoftoirqd(ソフト割り込み カーネルスレッドという名前はついているがLinuxからみたカーネルスレッドの一つ一つはスケージュー…