• 検索結果がありません。

DSASのやりくり

N/A
N/A
Protected

Academic year: 2021

シェア "DSASのやりくり"

Copied!
36
0
0

読み込み中.... (全文を見る)

全文

(1)

2008年3月28日

KLab 株式会社

Kラボラトリー

ひろせ まさあき

DSASのやりくり

MATRIXの秘密と

効率的なシステム管理の関係

4回 KLab 勉強会

http://dsas.blog.klab.org

(2)

自己紹介

z

ひろせ まさあき (

id:hirose31)

z

KLab株式会社 (くらぶ かぶしきがいしゃ)

z

Kラボラトリー所属 (研究開発部門)

z

DSAS – ネットワーク・サーバインフラ

z

スケーラブル

Webシステム工房

z

WEB+DB PRESS』 Vol.38∼43で連載

z

書籍執筆中 『サーバ

24時』(仮)

z

KLab+はてな

(3)

サーバ管理者の悩み

(4)
(5)

サーバ管理者の悩み (のひとつ)

z

サーバが増えると

...

z

運用管理がめんどうくさくなる

z

なにするにしても手間がかかる

z

オペレーションミスが起こりやすくなる

具体なお悩み例とその解決法

DSASでの実例を3つ+おまけ2

今日は

(6)

今日のアジェンダ

アジェンダ

z

運用管理のお悩み

z

【お悩み1】

z

【お悩み2】

z

【お悩み3】

z

解決法

- DSASでの事例

z

MATRIXについて

z

【1の解決】

z

【2の解決】

z

【3の解決】

z

【おまけ1】

z

【おまけ2】

(7)
(8)

【お悩み1】

XXXサーバってどれだっけ?

z

サーバの役割

z

Web、DB、Storage、Log、lvs、

lls...

z

サーバの状態

z

WARN、STOP...

core

sw1

core

sw2

lvs

lvs

Master

sw3

Web

sw4

DB

DB

Web

sw5

lls

sw6

Storage

Log

lls

上位ルータ

サーバ台数×役割×状態

=多過ぎて覚えられません><

お悩み

(9)

【お悩み2】

XXXに対してXXXしたい!

z

XXXに対して

z

すべてのサーバに対して

z

Webサーバに対して

z

DBサーバに対して

z

XXXしたい!

z

コマンドを実行したい!

z

ファイルをコピーしたい!

z

ファイルの同一性を確認したい!

for i in web1 web2 web3 we (ry...web99;do

echo $i; ssh $i ‘/usr/bin/ふがふが’; done

=コマンド打つのがめんどうです><

(10)

【お悩み3】設定ファイルが長すぎる ><

z

あいのりサイトが増えると

z

Apache – httpd.conf

z

VirtualHostがたくさん

z

サーバが増えると

z

keepalived – keepalived.conf (ロードバランサ)

z

リアルサーバの定義がたくさん

設定ファイルの肥大化

=ちょっと手では編集できません><

お悩み

(11)

今日のアジェンダ

z

運用管理のお悩み

z

【お悩み1】

XXXサーバってどれだっけ?

z

【お悩み2】

XXXに対してXXXしたい!

z

【お悩み3】設定ファイルが長すぎる ><

z

解決法

- DSASでの事例

z

MATRIXについて

z

【1の解決】

z

【2の解決】

z

【3の解決】

z

【おまけ1】

z

【おまけ2】

アジェンダ

やるおー

(12)

解決法

(13)

解決法

– DSASでの事例

z

一元管理

z

サーバの役割情報など

z

それを元に、

z

情報の取得

z

生成

(14)

MATRIXについて

z

MATRIXとは:

z

サーバの一覧表

z

サーバの役割定義

z

サーバの状態管理 (故障中、調子悪い)

z

形式:

z

テキスト

(15)

MATRIXについて

z

MATRIXとは:

z

サーバの一覧表

z

サーバの役割定義

z

サーバの状態管理 (故障中、調子悪い)

z

形式:

z

テキスト

w101: usagi

w102: usagi kame saru

w103: [NANDEMOYA]

w104: kame

w105: kame

w106: (lv1)

w107: (lv2)

w108: (ll1)

w109: (ll2)

w110: (db101) (db100)

w111: (db102)

w112: [FREE] usagi kame saru

w113: usagi saru [WARN]

w101: usagi

w102: usagi kame saru

w103: [NANDEMOYA]

w104: kame

w105: kame

w106: (lv1)

w107: (lv2)

w108: (ll1)

w109: (ll2)

w110: (db101) (db100)

w111: (db102)

w112: [FREE] usagi kame saru

w113: usagi saru [WARN]

(16)

MATRIXについて

z

MATRIXとは:

z

サーバの一覧表

z

サーバの役割定義

z

サーバの状態管理 (故障中、調子悪い)

z

形式:

z

テキスト

w101: usagi

w102: usagi kame saru

w103: [NANDEMOYA]

w104: kame

w105: kame

w106: (lv1)

w107: (lv2)

w108: (ll1)

w109: (ll2)

w110: (db101) (db100)

w111: (db102)

w112: [FREE] usagi kame saru

w113: usagi saru [WARN]

w101: usagi

w102: usagi kame saru

w103: [NANDEMOYA]

w104: kame

w105: kame

w106: (lv1)

w107: (lv2)

w108: (ll1)

w109: (ll2)

w110: (db101) (db100)

w111: (db102)

w112: [FREE] usagi kame saru

w113: usagi saru [WARN]

(17)

MATRIXについて

z

MATRIXとは:

z

サーバの一覧表

z

サーバの役割定義

z

サーバの状態管理 (故障中、調子悪い)

z

形式:

z

テキスト

w101: usagi

w102: usagi kame saru

w103: [NANDEMOYA]

w104: kame

w105: kame

w106: (lv1)

w107: (lv2)

w108: (ll1)

w109: (ll2)

w110: (db101) (db100)

w111: (db102)

w112: [FREE] usagi kame saru

w113: usagi saru [WARN]

w101: usagi

w102: usagi kame saru

w103: [NANDEMOYA]

w104: kame

w105: kame

w106: (lv1)

w107: (lv2)

w108: (ll1)

w109: (ll2)

w110: (db101) (db100)

w111: (db102)

w112: [FREE] usagi kame saru

w113: usagi saru [WARN]

サーバ名

(18)

MATRIXについて

z

MATRIXとは:

z

サーバの一覧表

z

サーバの役割定義

z

サーバの状態管理 (故障中、調子悪い)

z

形式:

z

テキスト

w101: usagi

w102: usagi kame saru

w103: [NANDEMOYA]

w104: kame

w105: kame

w106: (lv1)

w107: (lv2)

w108: (ll1)

w109: (ll2)

w110: (db101) (db100)

w111: (db102)

w112: [FREE] usagi kame saru

w113: usagi saru [WARN]

w101: usagi

w102: usagi kame saru

w103: [NANDEMOYA]

w104: kame

w105: kame

w106: (lv1)

w107: (lv2)

w108: (ll1)

w109: (ll2)

w110: (db101) (db100)

w111: (db102)

w112: [FREE] usagi kame saru

w113: usagi saru [WARN]

サーバ名

サイト名

[XXX]

役割定義

(19)

MATRIXについて

z

MATRIXとは:

z

サーバの一覧表

z

サーバの役割定義

z

サーバの状態管理 (故障中、調子悪い)

z

形式:

z

テキスト

w101: usagi

w102: usagi kame saru

w103: [NANDEMOYA]

w104: kame

w105: kame

w106: (lv1)

w107: (lv2)

w108: (ll1)

w109: (ll2)

w110: (db101) (db100)

w111: (db102)

w112: [FREE] usagi kame saru

w113: usagi saru [WARN]

w101: usagi

w102: usagi kame saru

w103: [NANDEMOYA]

w104: kame

w105: kame

w106: (lv1)

w107: (lv2)

w108: (ll1)

w109: (ll2)

w110: (db101) (db100)

w111: (db102)

w112: [FREE] usagi kame saru

w113: usagi saru [WARN]

サーバ名

サイト名

[XXX]

役割定義

(XXX)

特殊サーバ

(20)

今日のアジェンダ

アジェンダ

z

運用管理のお悩み

z

【お悩み1】

XXXサーバってどれだっけ?

z

【お悩み2】

XXXに対してXXXしたい!

z

【お悩み3】設定ファイルが長すぎる ><

z

解決法

- DSASでの事例

z

MATRIXについて

z

【1の解決】

z

【2の解決】

z

【3の解決】

z

【おまけ1】

z

【おまけ2】

(21)

【1の解決】

XXXサーバってどれだっけ?

z

source /etc/dsas.conf

z

MATRIXのshバインディング

z

シェル変数

XXX_SERVERS を定義

DB_SERVERS=(db100 db101 db102)

LL_SERVERS=(ll1 ll2)

LV_SERVERS=(lv1 lv2)

LB_SERVERS=(w101 w102 w104 w105 w112)

NR_SERVERS=(w103)

STOP_SERVERS=(w114)

WARN_SERVERS=(w113)

SYNC_SERVERS=(${NR_SERVERS[@]} ${LB_SERVERS[@]})

(22)

【2の解決】

XXXに対してXXXしたい!

z

XXXに対して

z

dsas.confのXXX_SERVERSを利用

z

XXXしたい!

z

sh関数

z

alias

z

スクリプト

(23)

【2の解決】

XXXに対してXXXしたい!

z

FORALL –

全サーバに対して

XXX

したい!

z

alias

z

汎用的な用途

z

すべてのサーバでコマンドを実行する

z

すべてのサーバにファイルをコピーする

alias FORALL=’

for i in ${ALL_SERVERS[@]};do

FORALL

echo $i; ssh $i /usr/bin/date; done

(24)

【2の解決】

XXXに対してXXXしたい!

z

SYNCALL –

全サーバに対してコピーしたい!

z

rsyncでファイルをコピー

z

もっとも頻度が高いオペレーション

z

ミスをなくすために

FORALL rsync –avR /foo/bar /baz/qux $i:/; done

(25)

【2の解決】

XXXに対してXXXしたい!

z

DIFFALL –

全サーバ

に対して

同一性を確認

したい!

z

サーバ間のファイルの同一性の確認

$

DIFFALL

/usr/klab/MATRIX

/usr/klab/MATRIX

LOCAL 2d4c0225065831595e433f692466a427

w101 2d4c0225065831595e433f692466a427

w102 5ba0e2e4bc0f305e2ff85d0fd8654b12

diff -u /usr/klab/MATRIX <(ssh w102 cat /usr/klab/MATRIX)

w103 2d4c0225065831595e433f692466a427

w103 2d4c0225065831595e433f692466a427

: : : : :

(26)

【3の解決】設定ファイルが長すぎる ><

z

matrix-reflection

z

MATRIXを変更したら実行するスクリプト

z

その中で、

httpd.confの生成もしている

z

lvs-config

z

lvs (keepalived)の設定ファイルを生成している

(27)

ServerRoot ... User ...

Group ...cat <<MSGEND # kame <VirtualHost *:80> ServerAdmin webmaster ServerName usagi.example.jp DocumentRoot $DSAS_HOME/contents/usagi/htdocs ErrorLog ... CustomLog ... JkMount /s/* local <LocationMatch "^/"> Order Deny,Allow Deny from all

Include conf/allow/dsas Include conf/allow/docomo Include conf/allow/au_ez Include conf/allow/vodafone </LocationMatch> </VirtualHost> MSGEND

matrix-reflection

matrix-reflection

w101: usagi w102: usagi kame w103: [NANDEMOYA] w104: kame w105: kame w106: (lv1) w107: (lv2) w108: (ll1) w109: (ll2) w110: (db101) (db100) w111: (db102)

w112: [FREE] usagi kame w101: usagi w102: usagi kame w103: [NANDEMOYA] w104: kame w105: kame w106: (lv1) w107: (lv2) w108: (ll1) w109: (ll2) w110: (db101) (db100) w111: (db102)

w112: [FREE] usagi kame

MATRIX

MATRIX

cat <<MSGEND # usagi <VirtualHost *:80> ServerAdmin webmaster ServerName usagi.example.jp DocumentRoot $DSAS_HOME/contents/usagi/htdocs ErrorLog ... CustomLog ... JkMount /s/* local <LocationMatch "^/"> Order Deny,Allow Deny from all

Include conf/allow/dsas Include conf/allow/docomo Include conf/allow/au_ez Include conf/allow/vodafone </LocationMatch> </VirtualHost> MSGEND

ファイル片

ファイル片

ServerRoot ... User ... Group ... MaxClient ... LoadModule ... # usagi <VirtualHost *:80> ServerAdmin webmaster ServerName usagi. DocumentRoot $DSAS_ ErrorLog ... CustomLog ... JkMount /s/* local <LocationMatch "^/"> Order Deny,Allow Deny from all Include conf/allow/ Include conf/allow/ Include conf/allow/ Include conf/allow/ </LocationMatch> </VirtualHost>

httpd.conf

httpd.conf

(28)

lvs-config

lvs-config

w101: usagi w102: usagi kame w103: [NANDEMOYA] w104: kame w105: kame w106: (lv1) w107: (lv2) w108: (ll1) w109: (ll2) w110: (db101) (db100) w111: (db102)

w112: [FREE] usagi kame w101: usagi w102: usagi kame w103: [NANDEMOYA] w104: kame w105: kame w106: (lv1) w107: (lv2) w108: (ll1) w109: (ll2) w110: (db101) (db100) w111: (db102)

w112: [FREE] usagi kame

MATRIX

MATRIX

[% FOREACH R=REAL -%] real_server [% R %] [% real_port %] { weight 1 inhibit_on_failure HTTP_GET { url { path [% HTTP_GET.path %] status_code [% ...status_code %] } connect_port [% ... %] connect_timeout [% ... %] nb_get_retry [% ... %] delay_before_retry [% ... %] } } [% END -%]

テンプレート

テンプレート

vrrp_instance VE { state BACKUP interface eth0 garp_master_delay 5 virtual_router_id 1 priority 100 nopreempt advert_int 1 authentication { auth_type PASS auth_pass himitsu } virtual_ipaddress { 10.10.31.10/24 192.168.31.10/24 } } virtual_server_group ... 10.0.0.100 80 } virtual_server group ... delay_loop 3 lvs_sched rr lvs_method NAT protocol TCP

keepalived.conf

keepalived.conf

(29)

今日のアジェンダ

アジェンダ

z

運用管理のお悩み

z

【お悩み1】

XXXサーバってどれだっけ?

z

【お悩み2】

XXXに対してXXXしたい!

z

【お悩み3】設定ファイルが長すぎる ><

z

解決法

- DSASでの事例

z

MATRIXについて

z

【1の解決】

XXXサーバってどれだっけ?

z

【2の解決】

XXXに対してXXXしたい!

z

【3の解決】設定ファイルが長すぎる ><

z

【おまけ1】

z

【おまけ2】

(30)

【おまけ1】

MATRIXの言語バインディング

z

sh

z

source /etc/dsas.conf

z

そのほか、便利

aliasや関数も定義している

z

Perl

z

KLab::DSAS::MATRIX

z

PHP

use

KLab::DSAS::MATRIX

;

my

$matrix

= KLab::DSAS::MATRIX->new();

my

$project

= $matrix->project('usagi');

for my

$svr

($project->assign_servers) {

# do something...

}

(31)

【おまけ2】

dmetad – メタデータサー

z

元データ(ファイル、形式)が異なるメタデータ

に、統一的なインターフェースでのアクセスを

提供するサービス

z

アクセス方法

z

HTTP

z

GETのみ (参照のみ)

z

レスポンス形式

z

sh

z

YAML

JSON

(32)

【おまけ2】

dmetad – メタデータサー

z

http://meta/

{role}

/

{property}

$ curl http://meta/

ps

/

node

ps400: node=(10.6.25.151 10.6.25.152)

ps500: node=(10.6.25.154 10.6.25.155)

$ curl http://meta/ps/

vip

ps400: vip=10.6.25.150

ps500: vip=10.6.25.153

$ curl http://meta/ps/vip?

format=yaml

---ps400:

vip: 10.6.25.150

ps500:

vip: 10.6.25.153

(33)

【おまけ2】

dmetad – メタデータサー

z

#!/usr/bin/perl

z

use Class::Component;

lv

ps

node

vid

vrid

DRBD

(34)

まとめ

z

一元管理

z

重複の排除

z

同じ情報なのに複数の場所で管理してはだめ

×

サーバ上のテキストファイルと社内サーバ上の

Excelファイル

z

適度に管理ファイルをまとめる

z

ばらしすぎると数が多くなりすぎて大変

z

まとめすぐると見づらくなったり複雑になって大変

z

機械にやらせる

z

メリット

z

手間を減らす

z

ミスを減らす

z

スクリプトを書く

z

MATRIXの言語バインディング

z

メタデータ取得の包括的方法の提供(

dmetad)

(35)

まとめ

z

サバカンもコード書きたい!

z

サーバ管理も楽しいけど

z

コード書くのも楽しい!

(36)

ご清聴

参照

関連したドキュメント

These allow us to con- struct, in this paper, a Randers, Kropina and Matsumoto space of second order and also to give the L-dual of these special Finsler spaces of order two,

If these are cartesian in a suitable sense, such distributive laws indeed allow the construction of new bicategories with the same objects as X and “ S-T -spans” as 1-cells, i.e.,

Section 4 will be devoted to approximation results which allow us to overcome the difficulties which arise on time derivatives while in Section 5, we look at, as an application of

It leads to simple purely geometric criteria of boundary maximality which bear hyperbolic nature and allow us to identify the Poisson boundary with natural topological boundaries

For ε &gt; 0 , given a realization of the random interlacement, we allow each vertex independently to switch from occupied to vacant and from vacant to occupied with probability ε ,

In this paper, we consider the possibility of building new rational extensions of two confining TSIP, namely the trigonometric Darboux–P¨ oschl–Teller (TDPT) and isotonic

◮ f (∂T ) is fixed (if we do not allow additional points) triangulations without interior faces of low dimension combinatorics of unbounded polyhedra (H... simplicial polytope

• Application Height (Ground) – Applications made at the lowest height consistent with pest control objectives, and that allow the applicator to keep the boom level with