2024Sep_TODO

9/28,29でやりたいこと isuconの申し込みをやる。これは明日白木さんに確認を取って確実にやらないといけないこと。 JCで変更履歴を保持するようにしたいんだよね。これ結構データ食うと思うんだけど、実現したいです。 nginxでsanを持った証明書を登録する方法を学ぶ。これね、証明書の発行方法とssl関係を学ぶって話なんだけど、結構難しいぜこれ。 ssl入門みたいな本を読む nginxの監視を完璧にする。mtailを使ってlogも監視するし、その他業務の監視項目全部。そして、通知もやる。ちな、urlは、https://blog.ingenboy.com:8080/。仕事の監視を完全にコピーするって話だ。これできたらもうだいぶ昇給していいレベルだと思うけどね。 echoサーバを建てたいよね。まずはね。クラスタ上にね。ってことでgoで書いたエコー鯖を立てる。k8sにね。これはreal world httpを読めばいいと思うよ。vimを使ってあえてmっけ出していくのもあり。ここでは壊して学ぶk8sを読むのがいいですね。 外からvegetaで負荷をかけ続けられるようにする。 k8sも監視したい。よろピクミンだね。 gslbで二つ作った入口で振り分けられるといいよね。って感じで。 時間が余ったら宅建のお勉強もした方がいいですね。 2024/09/1時点でのタスクリスト 開発関係 会計ソフトを導入する。この辺が良さそう https://ledger-cli.org/ 自宅のK8S上にecho-serverを立てて、proxyを複数立てて、さらにvipを立てて、vegetaで負荷試験ができるようにしたい。そして、様々なメトリクスが取れるようにしたい。どうやるんだろうか。この辺は、壊して学ぶk8s的な本を買ったので、それで勉強しよう。 I and shiraki-san decided to develop GSLB using go lang. It is going to be funny Learn DNS (こっちはかなりいい感じで進んでいる。) –> Done Learn How to write packer parser using Go on TCP Layer. It is also going to be funny. 例の競馬システムを動かす時が来た。自宅のk8sで動かせるようにmanifestファイルを書いてください。よろぴくお願いしますです。 Go言語でdistributed file systemを作ってくれ!このyoutubeを見てでもいいし、goで分散システムを作ろうって入ってきたあの本でもいい。どっちでもいい。ただ、後者だとk8s上に作った分散システムを展開するので、上のやつとも親和性が高い気がしています。はい。 ISUCONの過去問を解きましょう。今年のISUCONにおそらく白木さんと出ることになります。足を引っ張りたくないので頑張ります。 ーー>isucon14の申し込みが始まったという話です。頑張りましょう。 redmineを入れてタスク管理したらおもしろう。いいかもしれない! 宅建の勉強をしよう その他 毎日筋トレしてくれ。ジムに行ってくれ。朝がいい。 毎朝早く起きてくれ。23時に寝て0630に起きる生活ができると最高だ。 早く業務委託で何かしらの案件を取ってきて売れ。 早くyoutubeチャンネル開設して、経費生活を始めてくれ! 長期目線 簿記2級とってくれ! 土地をどこに買うかかんがえてくれ!!そして貯金しろ!!マジな話、生活費8万と、共通貯金口座5万以外は全部あっちに回してくれ。 つまり、月のクレカ支払いに使えるお金は17万ということになる。保険で10マン落とされるので、残り7万か。まあそんなものやろう。

September 4, 2024 · 1 min · 74 words · Me

Booking_scheduling_system

August 27, 2024 · 0 min · 0 words · Me

Vegeta

vegeta使いになろう

August 27, 2024 · 1 min · word · Me

Shell_master

背景 インフラエンジニアは、プロセスのメモリ上で何が起こっているかは実はあまりわからないくていい。それよりも、どうやってプロセスをうまく連携させるか、そういう大局的な視点がどうしても必要になる。 結局プログラムは何かを実現するための道具でしかない。道具を作るのはいいけど、インフラエンジニア版 何がいいたいかというと、道具と道具を組み合わせて何かをするという技を学ぶためには、shellを使えるようにならないとダメだという話だ。 shell芸人になれ。 なんか、すごい人はshellでワンライナーで全部解決していく。マジですごい。 参考文献 1日1問、半年以内に習得シェルワンライナー160本ノック 問題データリポジトリ jqコマンド jqこマンdのについて だいぶ使えるのではないか? $ echo '{"items":[{"item_id":1,"name":"すてきな雑貨","price":2500},{"item_id":2,"name":"格好いい置物","price":4500}]}' \ | jq . echo '{"items":[{"item_id":1,"name":"すてきな雑貨","price":2500},{"item_id":2,"name":"格好いい置物","price":4500}]}' \ | jq .items こちらの結果はこうなります。 [ { "item_id": 1, "name": "すてきな雑貨", "price": 2500 }, { "item_id": 2, "name": "格好いい置物", "price": 4500 } ] 次の例 echo '{"items":[{"item_id":1,"name":"すてきな雑貨","price":2500},{"item_id":2,"name":"格好いい置物","price":4500}]}' \ | jq '.items[].name' こんな感じで出力されます "すてきな雑貨" "格好いい置物" という感じで、ほうほう、jqなかなか便利ではないか??ということですね。頭に入れておきましょう。 sedコマンド selectコマンド trコマンド 文字を置換したり、削除したりできるコマンド こちらをみてみよう 使用例 echo lion | tr lion bear 結果 bear 重複しているとダメらしい、、クソか。 しかしこういう使い方はするって話だ。 hostname | tr -d "\n" date関数のすごい使い方 $ date "+%F" #年月日を出力 2022-02-28 $ date "+%T" #時分秒を出力 22:37:49 $ date '+%Y/%m/%d %H:%M:%S' #年月日と時分秒を出力 2022/02/28 22:40:13 今回はこうやって使われていた。 ...

August 22, 2024 · 1 min · 100 words · Me

Comments_on_tcp_ip_network_commands

TCP/IP & ネットワークコマンド入門の大事なところをメモっていく ncコマンドについて 個人的に、最近ncコマンド使う機会が増えてきて、この本でも結構語られているので、使い方くらいはメモっておきたい ncコマンドはTCPもしくはUDPのコネクションを貼ってくれるコマンド。送信するビット列は完全に自分で選ぶことができる。 以下のコマンドでサーバをTCPで起動できる。 -l はlistenの略で、リッスンしている、つまりサーバです nc -l 55555 以下のコマンドで、ncサーバとコネクションを貼ることができる nc <ip addr> <port> よくあるncコマンドの使用例 使用例としては、あるサービスのクライアントがどんな感じでbit列を送ってくるのかをサーバ側から可視化するときに使うイメージが強いな。 例えばUDP通信の代表例であるDNS resolutionね。こんな感じです。 ローカルホストで以下のncサーバを立てる # nc -u -l 1053 > query_packet.txt こいつは、1053万ポートでUDP通信を待ち受けている。で、受け取ったパケットをquery_packet.txtにリダイレクトしている。 このサーバに対して、以下のdigコマンドを送ることで、DNSクライアントがどのようなパケットを送信しているかがわかる。 dig +retry=0 -p 1053 @127.0.0.1 +noedns google.com ここからは、追加での遊びですが、こんな感じで、ncサーバで受け取ったパケットを今度はncクライアントに流し込んで読み込ませることもできると。おもろいっすね。 nc -u 8.8.8.8 53 < query_packet.txt > response_packet.txt ちなみに、以下のコマンドでhexでパケットの中身が見られるようになります。 hexdump -C query_packet.txt sshクライアントの動きをncサーバをたててみてみる nc -l 10022 > clien_packet.txt ssh localhost -p 10022 ray@delta:~$ hexdump -C clien_packet.txt 00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_| 00000010 38 2e 39 70 31 20 55 62 75 6e 74 75 2d 33 75 62 |8.9p1 Ubuntu-3ub| 00000020 75 6e 74 75 30 2e 31 30 0d 0a |untu0.10..| 0000002a みたいな感じで見られてりして、マジで面白いわけですね。はい。ってことで、ncコマンドはガチで便利だし、知っておいた方がいいって話です。 ...

August 18, 2024 · 1 min · 200 words · Me

Learn_k8s_4

大人気K8Sシリーズ。 今回でなんと第4回目 まずは、過去の振り返りをやっていきましょう。 振り返り 過去の奮闘記録。 構築日記その1 構築日記その2 構築日記その3 第1回目と第二回目はインフラ構築を頑張っていた感じです。引っ越しとかあって、K8Sの勉強は飛び飛びになっている感じでね。 そして、第3回にして、やっと色々とインフラ構築をスムーズにできて、さまざまな概念についても理解できてきた、という感じです。 はい、サービスね。これが大事な概念だった。POD間で通信をするためには、Serviceが必要だったのではないか?とね。ServiceでPODをcoreDNSに登録することができる。 そして、基本的に一つのサービス内での通信はしない。サービス間の通信はあるが。なので、docker composeのようにはいかないという話だな。 そして、今回の第4回目では、K8Sの使い方をもっと詳しく理解していきましょう、という回になっています。 具体的には、「つくって、こわして、直して学ぶkubernetes入門」という本に従って色々と進めていきたいと思っています。はい。 そして、第5回目に、私が開発した競馬システムをついにデプロイする、という感じに持っていきたいと思っています。よろしくお願いします。 まずは、harborにログインしておく の前にロボットアカウントを作らないといけない感じ? docker login 100.64.1.61:20080 -u username -p password server nerdctlを使っているので、buildを使うためにbuildkitをインストールする必要がある。 しかも、buildkitdというのを走らせておく必要がある。 テストでgoで簡易サーバを作って走らせる package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/",func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w,"Hellow, wordl!") }) log.Println("starting server on port 8880") err := http.ListenAndServe(":8880", nil) if err != nil { log.Fatal(err) } } dockerfile FROM golang:1.23 AS builder WORKDIR /app COPY . . ENV CGO_ENABLED=0 RUN go mod tidy RUN go build -o hello . FROM scratch COPY --from=builder /app/hello /hello ENTRYPOINT ["/hello"] go.modを入れるのを忘れずに。 go mod init github.com/hogehoge とかで問題ない。 ...

August 18, 2024 · 11 min · 2284 words · Me

House_keeping

家事 8/13 R 風呂掃除 皿洗い T 昼ごはん 洗濯 コンロ掃除 8/14 R T 朝ごはん 昼ごはん

August 13, 2024 · 1 min · 14 words · Me

Wordpressを導入し、独自テーマを作り、docker化する

最終目標 dockerコマンドで一発でワードプレスを展開可能 独自テーマを導入している。 可能であれば、フォーム送信などもしたい。つまり、独自のapiとのやり取りを可能にしたい。 まず知りたいのが、独自テーマを使うと、フロントエンドも自分の好きなように改変できるのか?という話。これは気になる。 dockerでワードプレスを使えるようにする。 まずは、公式docker hubこちらになります。 ふむふむ。簡単だな。こちらののdocker composeコマンドで一発で行けるか?? version: '3.1' services: wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRESS_DB_NAME: exampledb volumes: - wordpress:/var/www/html db: image: mysql:8.0 restart: always environment: MYSQL_DATABASE: exampledb MYSQL_USER: exampleuser MYSQL_PASSWORD: examplepass MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - db:/var/lib/mysql volumes: wordpress: db: docker composeが使えないdockerもあるのよね。これが一番だるい。dockerの公式サイトからインストールするのが一番いい。 for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin で、あとは、適当に、 ...

August 8, 2024 · 3 min · 576 words · Me

サイトの切り替え

背景 10年前に作ったサイトをまだ使っているということで、かなりPVが落ちてきているんだよね。 そこで、ワードプレスなどで作った新しいサイトに移行をしたいと思っている。 端的にいうと、名前解決先を新しいIPと紐づければ良さそうに感じるが、本当にそれでいいのだろうか? ここではサイトの引越しの際に気をつけるべきポイントを徹底的に考察する サイト引越しの際に気をつけるべきポイント 引っ越す方法 とりあえず、ワードプレスで同じサイトを作る 301でリダイレクトってなんだ? Lets ecryptで暗号化する場合、cronで自動的に更新できるようにしないとな。

August 8, 2024 · 1 min · 11 words · Me

Master_ansible

背景 業務で必要なansibleをマスターしたい。 ansibleとは ansibleとは、Infrastructure as Codeを実現するための構成管理ツールである。 例えば、middlewareをデプロイする際に、ある程度の複雑さでのデプロイを可能にするツールである。 ansibleの特徴 可読性を意識した設定ファイル 柔軟性がないとも言える 豊富なモジュール群 これは柔軟性の高い(=可読性が低い)ことの裏返しだと思う 冪等性の担保 何度ファイルを実行しても、対象の結果は変わらない agentlessなツール ローカルホストで実行し、sshで各サーバにログインして設定をする。構成管理をしたいサーバに別途ソフトを導入する必要などはない。 用途が似たツールにterraformがある。それとの違いに関してはまた今度としよう。 ansibleのアーキテクチャ ansiblでは、コマンドを実行する「コントロールノード」と処理の対象となる「ターゲットノード」に分かれる。設定ファイルに書かれたモジュールをコントロールノード側でPythonのコードに変換し、sftpでターゲットノードに転送し、そこでPythonコードを実行する流れになっている。そのため、コントロールノード、ターゲットノードのどちらにもPythonがインストールされている必要がある。 ansibleの用語 インベントリ:ターゲットノードの一覧が書かれた設定ファイルである。ターゲットノードをグループ化することも可能である。 プレイブック:実行するモジュールが書かれた設定ファイルである。 モジュール:「ファイルの転送」や「サービスの起動、停止」などの処理の単位。Ansible側で用意されたモジュールを使って構成管理をする。(では、逆にansibleのモジュールにない設定を反映させたい場合にはどうするのか?ーー>自分でモジュールを開発することもできる) プラグイン:Ansibleの基本機能を拡張してくれる。モジュールはタスクとして実行されるが、プラグインは、Ansible コアを拡張してくれる感じです。 コレクション: ansibleのインストール方法 apt install ansible-core インストールを確認 ray@delta:~$ ansible-playbook --version ansible-playbook [core 2.12.0] config file = None configured module search path = ['/home/ray/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible ansible collection location = /home/ray/.ansible/collections:/usr/share/ansible/collections executable location = /usr/bin/ansible-playbook python version = 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0] jinja version = 3.0.3 libyaml = True 設定ファイル ~/.ansible/ansible.cfg配下におくといいです。このファイルに以下の設定を書き込みましょう ...

August 4, 2024 · 1 min · 194 words · Me