19
事故らないための UNIX(Linux)オペレーション 2014年7月11日 エスキュービズム・テクノロジー社内勉強会

事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

  • Upload
    -

  • View
    438

  • Download
    1

Embed Size (px)

DESCRIPTION

7月11日エスキュービズム社内勉強会時に使用した資料になります。

Citation preview

Page 1: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

事故らないための UNIX(Linux)オペレーション

2014年7月11日 エスキュービズム・テクノロジー社内勉強会

Page 2: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

CAUTION

会社や現場によってルールがあるので ここに書いてあることが唯一解ではないです。

Page 3: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

たまに聞く話(弊社じゃないです)

本番環境と検証環境を間違えた

→Disk Fullでした

あの時自分が行ったオペレーション分からない

MySQLが起動しないのでMySQL周りばかり調べること1h…

Page 4: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

ログインしたら最初にすべきこと各種情報を見るクセをつける

uname -a date cat /etc/redhat-release !df -h fdisk -l ifconfig -a !netstat -lntp(lnup) ps -ef(-aux) top sysstatの各種コマンド

UNIXコマンドは沢山あるので「その場しのぎ」で覚えがちだが、この辺りが定番か

※今後ipコマンドに置き換わる

Page 5: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

基本情報見る系コマンド(1)# uname -a

ホスト名:  対象サーバを間違えていないか

kernelのバージョン:  たまにkernelのバージョンを選ぶミドルウェアがある

RedHat系OSの場合、OSのメジャーバージョン:  RHEL/CentOSの場合、6.xだとel6、5.xだとel5になる

64bit OSか32bit OSか:  32bitOSの場合、ミドルウェアが使用できるメモリが4GBに制限される

ホスト名だけならhostnameコマンドでも確認できるが、 ホスト名を書き換えてしまう可能性あるので使わないほうが良い

Linux websrv01 2.6.32-358.el6.x86_64 (以下略)

ユーザ:  $は一般ユーザ、#はroot

Page 6: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

基本情報見る系コマンド(2)

# cat /etc/redhat-release

RHEL互換OSの場合のOSバージョン:  5.xと6.xで必要なRPMが異なる  5.x →el5.x86_64  6.x →el6.x86_64  7.x ←el7.x86_64 ! Debianの場合は cat /etc/debian-release

CentOS release 6.4 (Final)

# date

日時:  日付がズレていないか。ズレてるとECサイトの場合クレカ決済通らなかったり、  複数サーバのログの突合が大変

2014年 7月 11日 金曜日 14:26:34 JST

タイムゾーン:  AWSの海外リージョン等海外のサーバの場合JSTになっておらず、  フロント側Webサイトの処理にも影響出る

Page 7: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

ディスク・NW・プロセス関連コマンド

# ifconfig -a

Network Interfaceの数とIPアドレスの把握:  MySQLがeth1のIPでListenしていないので繋がらない等のトラブル時に有用  IaaSだと2つ前後が多いと思うが、5つ6つNICがある場合もある

# df -hFilesystem Size Used Avail Use% Mounted on /dev/sda3 28G 8.4G 18G 33% / tmpfs 1004M 0 1004M 0% /dev/shm /dev/sda1 504M 105M 375M 22% /boot /dev/sdb1 197G 7.8G 180G 5% /var/lib/mysql

ディスク使用容量:  ディスクフルによるトラブルはこのコマンドですぐ分かる

外部ディスク有無:  システム構成が把握できる。例)MySQLのデータディレクトリは外部ディスク  mountされていないディスクはfdisk -lで分かる

Page 8: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

ディスク・NW・プロセス関連コマンド

# ps -efサーバ内で動作しているプロセスを把握:  Apache再起動したらソースコンパイルだったので違うプロセスだった

# netstat -lntp(-lnup)Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 24736/nginx tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2021/sshd tcp 0 0 10.100.79.29:3306 0.0.0.0:* LISTEN 2532/mysqld

ListenしているポートとIPアドレスの確認:  Apache再起動したら8080でListenしてたWebDAVも落ちた←防止  MySQLがPrivate IPでしかListenしておらず、死活監視できなかった←防止 ! TCPの場合は-lntp、UDPの場合は-lnup

Page 9: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

ディスク・NW・プロセス関連コマンド

sysstatの各種コマンドメモリ、CPU使用率を10分毎に1ヶ月分参照可能

# top「shift+m」でメモリの使用率が高い順にソート 「shift+o」で任意のフィールドでソート 「u」で任意のユーザのプロセスのみ表示 「1」でCPUコアとそのコアごとの利用率

sar CPU使用率の記録 sar -u メモリ使用率の記録 sar -f /var/log/sa/sa17 17日の記録を表示 sar -P ALL CPUコアとそのコア毎の使用率の記録

iostat、vmstat、mpstat統計情報参照

Page 10: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

非推奨になっているコマンドがある

非推奨 置き換え候補

arp ip n (ip neighbor)

ifconfig ip a (ip addr), ip link, ip -s (ip -stats)

netstat ss, ip route (for netstat-r), ip -s link (for netstat -i), ip maddr (for netstat-g)

route ip r (ip route)

http://understeer.hatenablog.com/entry/2012/03/24/184346

Page 11: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

ログはとりましょう例えばPoderosaだと意識しなくても全ログ取得可能 フォーマットも読みやすい

SSHの鍵型式がOpenSSH型式ではないので、サーバ台数増えるとちょっと辛い

Poderosa以外の各クライアントもロギングの機能ある あとはtypescriptコマンド使うとか

Page 12: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

サーバ間違い、誤操作防止・ログイン時にuname -aコマンド実行 !・コマンド実行時にプロンプトのホスト名表示を確認 !・検証と本番環境でSSHクライアントを分ける !・tmux(後述)やscreenでwindowに名前付けとく !・root作業しない !!・普段触らない環境でのミドルウェア再起動はリスクある !

Apache再起動時にSSL秘密鍵のパスフレーズ求められる MySQL再起動したら刺さった(IOが一気に上がった) よく知ってる人に聞くほうがよい

普段は一般作業で作業し、必要な場合はsudo、もしくはsu -でroot昇格

Page 13: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

サーバ間違い、誤操作防止(2)

キータッチ速い人は大体速そうに見えるだけで、 ミスタッチ連発で実はそんなに速くないし、急いだところで全体の時間に影響なし

急がない

Page 14: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

障害発生時の対応クライアントと連絡を密接に

復旧までに時間が掛かるなら中間報告出す !インフラ屋さんだと「発生報」「経過第n報」「復旧報」「報告」 みたいにガンガン連絡飛んできます

先輩だろうが上司だろうが「使える」ものは使う

普段からこの人に聞けば解決する、 この人に間に入ってクライアントと連絡取ってもらう などイメージしておく

Page 15: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

tmuxターミナルマルチプレクサ

手元のマシンに入れる場合 ・複数サーバに接続する場合に名前つけて間違えないように ・デスクトップのカオス化防止 ・複数台のリモートサーバに同一コマンド実行

作業対象サーバに入れる場合 ・nohupコマンドいらず ・他の人の作業状況共有

言うまでもなく本番環境に勝手にtmux入れたらダメです

手元のマシンに入れる場合と対象サーバに入れる2パターンある screen使ってる人もいます

Page 16: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

各種ディストリビューション

日経Linux 2014年5月号より

標準デスク トップ環境

パッケージ管理

カーネル

Ubuntu 13.10 Debian 7.4 Fedora 20 CentOS 6.5 OpenSUSE 13.1

Unity 7 GNOME 3 GNOME 2 KDE 4

APT YUM Zypper/ YaST

Linuxカーネル

入門 汎用 先進 安定 欧州

RedHat Enterprise Linux

SUSE Linux Enterprise

商用派生

先進機能の テスト

機能互換 成果を取り入れ

Page 17: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

各種ディストリビューション

Page 18: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

RedHat系OSの場合のミドルウェアインストールyum install(update|remove|search)

yum localinstall

rpm -ivh(-Uvh)

ソースコンパイル

・インターネットに接続可能 ・レポジトリが提供されている ・バージョンなどが特殊(例:dev版)でない ・必要に応じてサードパーティのレポジトリ使う(remi、epel等)

・インターネットに接続可能 ・レポジトリが提供されていない ・RPMファイルが手元にある ・依存関係が複雑なのでrpmコマンドでは辛い

・インターネットに接続不可 ・レポジトリが提供されていない ・RPMファイルが手元にある

・最新バージョンを使いたい ・アドオンなどがソースコンパイルでないと入らない

Page 19: 事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711

CentOS 7出ましたコマンドがいろいろ変更になっている…らしい

操作 SysV Init Systemd起動 /etc/init.d/sshd start systemctl start sshd終了 /etc/init.d/sshd stop systemctl stop sshd強制終了 PID探してkill -9 systemctl kill -s 9 sshd再起動 /etc/init.d/sshd restart systemctl restart sshd設定反映 /etc/init.d/sshd reload systemctl reload sshd状態取得 /etc/init.d/sshd status systemctl status sshd自動起動を有効 chkconfig sshd on systemctl enable sshd自動起動を無効 chkconfig sshd off systemctl disable sshd自動起動の状態確認 chkconfig --list sshd systemctl is-enabled sshd(status でも表示される)サービス一覧の表示 ls /etc/init.d systemctl --type service

http://blog.yuryu.jp/2014/07/systemd-quick-guide.html