OSS Linux distribution
RedHat Enterprise Linux8のクローンとして開発されており、CentOS/AlmaLinuxと変更点はない
yumリポジトリが提供、コミュニティ中心の発展
Azureでの配布がない、セキュアブート対応もない
ミラーリポジトリはAlmaLinuxの方が多い
現場ではRockey Linuxの方が採用が多いみたい
ソフトウェアエンジニアの技術ブログ:Software engineer tech blog
随机应变 ABCD: Always Be Coding and … : хороший
OSS Linux distribution
RedHat Enterprise Linux8のクローンとして開発されており、CentOS/AlmaLinuxと変更点はない
yumリポジトリが提供、コミュニティ中心の発展
Azureでの配布がない、セキュアブート対応もない
ミラーリポジトリはAlmaLinuxの方が多い
現場ではRockey Linuxの方が採用が多いみたい
### Gentoo Linux
Gentoo Linuxは上級者向けLinux distribution
Portageと呼ばれるパッケージ管理システム
RPMやdebと異なりソースコードからソフトウェアのインストールを行う
ebuildというスクリプトがあり、これに従ってソースコードのコンパイル、インストールなどを行う
-> 自由度の高いシステム構築を行うことができる。コンパイル時にもに設定できる機能を切り替えができる
カスタマイズ性が高いが、それゆえに難易度が高い。パッケージの理解がないと使いこなすのが難しい
### AlmaLinux
CentOS8.0の後継
yumリポジトリでのアップデート情報が提供されている
RockeyLinuxよりもリリースが早く、クラウド対応なども進んでいる
乗り換えOSとしては有力、開発スピードが速い
.wgetrc にプロキシの設定を行う
{code}
export HTTP_PROXY=
export HTTPS_PROXY=
export FTP_PROXY=
export http_proxy=
export https_proxy=
export ftp_proxy=
{/code}
なるほど、しばらく触ってなくて馬鹿になってた…
負荷テストツールには、Apache Bench, Apache JMeter, Locust, Tsung, Gatling, Vegetaなどがある。
Apache BentchとVegetaはシナリオテストができない。
### 負荷テストのアプローチ
– 性能テスト: システムが想定している負荷に対し、どの程度のスループットやレイテンシかを確認
– 限界テスト: 処理限界に近い、または超過した負荷に対し、エラーが出るかなど挙動を確認
– 耐久テスト: 長時間負荷をかけた際の挙動を確認
計画書作成、スペックを変更、ダミーデータ作成、負荷テストと負荷テストツールの作成、単一エンドポイントに対するテスト、オートスケールを有効にした場合のテスト、シナリオテスト、耐久テスト
スループットの限界値を見つけるために、同時にアクセスするユーザ数を徐々に上げていく
なるほど、かなり奥が深い
vstat: システム全体の負荷
top: CPU, メモリを食っているプロセスの特定
sar: 過去の負荷の履歴
mpstat -P ALL 1: CPUコアごとの負荷
dstat -taf 標準でインストールされているコマンド
free -m メモリ
iostat -dmxt 1: IO状況
CPU使用率は $ vmstat で 100 – id の値
$ vmstat
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2193996 89188 931568 0 0 4835 383 460 846 9 10 80 1 0
free, buff, cacheが少ないと問題
us, syがカーネル、カーネル以外のCPU使用率
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
726 root 20 0 874552 38992 20220 S 12.5 1.0 0:01.93 snapd
1 root 20 0 105056 12924 8252 S 0.0 0.3 0:02.41 systemd
$ sudo apt install dstat
$ dstat -taf
Terminal width too small, trimming output.
—-system—- –total-cpu-usage– -net/enp0s3–net/enp0s8 —paging–>
time |usr sys idl wai stl| recv send: recv send| in out >
17-08 06:52:38| 2 1 96 0 0| 0 0 : 0 0 | 0 0 >
17-08 06:52:39| 0 0 100 0 0| 180B 534B: 0 0 | 0 0 >
17-08 06:52:40| 0 1 97 2 0| 120B 220B: 0 0 | 0 0 >
17-08 06:52:41| 0 0 100 0 0| 120B 204B: 0 0 | 0 0 >^
cpu負荷をコアごと、IO負荷をディスクごと、ネットワーク転送量をインターフェイスごとに表示
https://qiita.com/aosho235/items/c4d6995743dd1dac16e1
入力元として取ると乱数が返ってくるファイル
適当な値を取るときに使う
$ head -c 200m /dev/urandom > test.txt
$ cat test.txt
?x??y??Q%s}?Gz?¯???$?_?g7T!L??+\?*???f>?$????Q?7?????i%?M??X???? BY?P??”?gO?%??O??/??j?n??7??dnZ?
?
r????u??/???,O @ep?????>?;??’y?l?]?\e-).??Ѳ
なんかバグのようなファイルが生成される
RedHatLinuxのために開発されたパッケージ管理方法
標準のファイル拡張子は.rpm
複数のファイルやディレクトリをcpio形式のアーカイブファイルにまとめた形になっている
独自のspec形式ファイル、バイナリファイルやソースコードなどが格納されている
パッケージ名称、説明、種類、バージョン番号、ライセンス情報、開発元、公式サイトのURL、ツール、他のパッケージとの依存関係などの情報を記述した部分と、シェルスクリプトなどを記述したスクリプト部分が格納
apr rpmはapache
apr-util は依存関係
httpd rpm
libfontenc rpm
libXfont rpm
xorg-x11 rpm : x window system
うーむ、DMZのapache設定がわからん…
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:20080
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:20080
SELinuxとは? : 強制アクセス制御を実現するセキュリティ機構
Security-Enhanced-Linux
アクセス制御に使う
$ getenforce
Enforcing
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
### 一時的に無効化
$ sudo setenforce 0
$ getenforce
Permissive
### 恒久的に無効化
$ sudo cp -piv /etc/selinux/config /etc/selinux/config.`date “+%Y%m%d”`
$ sudo vi /etc/selinux/config
# SELINUX=enforcing SELINUX=disabled
$ sudo systemctl restart httpd
$ systemctl status httpd.service
なるほど
ディレクトリ: /etc/systemd/system/*.service
[Unit] Description=Load dump capture kernel After=local-fs.target [Service] Type=oneshot ExecStart=/opt/bin/run-kexect.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target
Unit, Service, Installのセクションから成り立ち、Unit, Installは共通的な設定内容、Serviceはサービスを実行するため
### Unitセクション
Description: ユニットの説明
After/Bifore: 指定したユニットの実行順番。Afiter=bar.serviceの場合、bar.serviceのstart-up処理が終わるまで実行しない
Requires/Wants: ユニットの依存関係の定義 Wants=bar.service など
その他: man 5 systemd.unit
### Serviceセクション
Type: Typeには以下の5つがあり、設定がなければsimpleがデフォルトで使用される
L simple, forking, oneshot, notify, dbus
ExecStart: 実行するコマンドラインを書く
RemainAfterExit: typeがoneshotの場合は、コマンド実行後もステータスをアクティブにする
### Installセクション
WantedBy/RequiredBy: systemctl enable xxxでユニットをenableした時に、.wants, .requiredにシンボリックリンクを作る
/etc/systemd/system/multi-user.target.wants/
なるほど
$ less /etc/passwd
vagrant:x:1000:1000::/home/vagrant:/bin/bash
ken:x:500:100::/home/ken:/bin/bash
ユーザ名: ken
パスワード: x
ユーザID: 500
グループID: 100
コメント:
ホームディレクトリ: /home/vagrant
ユーザが利用するシェル: /bin/bash
$ sudo useradd -u 2000 -g 2000 -m -s /bin/bash hpscript
-m は ユーザ名でホームディレクトリを作成
$ cat /etc/passwd
パスワード付与
$ sudo passwd hpscript
なるほどー 理解した