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

うちではこんな感じです

N/A
N/A
Protected

Academic year: 2021

シェア "うちではこんな感じです"

Copied!
38
0
0

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

全文

(1)

2007年12月20日

KLab 株式会社

Kラボラトリー

ひろせ まさあき

うちではこんな感じです

WEB+DB PRESS Tech Meeting

(2)

Copyright © KLab Inc. All rights reserved.

今日のアジェンダ

z

自己紹介

z

インフラ成長日記

z

2001年から今日まで

z

もう少し詳しくロードバランサ

z

2つのロードバランサ

z

まとめ

アジェンダ

(3)

自己紹介

z

ひろせ まさあき (

id:hirose31)

z

KLab株式会社

z

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

z

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

z

repcached – memcachedでデータレプリケーション

z

WEB+DB PRESS

z

Vol.22:

MySQL現場指向のレプリケーション詳説

z

Vol.32~37: MySQL5 開拓団

z

Vol.37:

Linuxロードバランサ構築・運用ノウハウ

z

Vol.38~:

スケーラブル

Webシステム工房

(4)

Copyright © KLab Inc. All rights reserved.

今日、お話しすること

z

LVS (Linuxロードバランサ)

z

導入した動機、経緯

z

活用事例

z

使ってみての感想

z

よかった点、わるかった点

(5)

ロードバランサとは?

z

機能

z

複数のサーバにリクエストを分散

z

ダウンしたサーバを分散対象から外す

z

効果

z

大量アクセスをさばける

z

スケールアウト

z

サービスの無停止運用

リアルサーバ(1) リアルサーバ(2) リアルサーバ(3)

コワレタ

ロードバランサ

(6)

Copyright © KLab Inc. All rights reserved.

本題

(7)

Timeline

2001

2007

2002

2003

2004

2005

2006

はじまりはつなわたり

ロードバランサ現る

DSAS 1.0

LVSとの出会い

DSAS 2.0

←いまここ

(8)

Copyright © KLab Inc. All rights reserved.

はじまりは

つなわたり

(9)

ミニマムスタート

z

ロードバランサなし

z

サーバが落ちたら即、サービス停止

z

一応、コールドバックアップ機を用意していた

sw1

Web

Web

上位ルータ

2001/09

図はイメージです

(10)

Copyright © KLab Inc. All rights reserved.

(11)

ロードバランサ導入

z

ロードバランサ導入

z

商用のアプライアンス製品

z

最初は1台

z

2002/10にもう1台導入してアクティブ/スタンバイ

構成に

z

ドキュメントがしっかりしていて、

  サーバロードバランシングの勉強

  になった

z

チュートリアル、リファレンス

2001/12

(12)

Copyright © KLab Inc. All rights reserved.

(13)

DSAS 1.0期

z

サーバ増加

z

DBをMySQLに乗り換え

z

ネットワーク構成の変更

z

冗長化

- bonding

z

常に改良を続ける

z

=いじりほうだいw

z

便宜的に『

DSAS』と命名

2002/01~2004/06

(14)

Copyright © KLab Inc. All rights reserved.

(15)

開発用環境に

LVSを導入

z

動機

z

Linuxでロードバランサが作れるらしいよ

z

mjd!! いじってみたい!!!11

z

2004/07ごろからLVSの調査、検証をはじめた

z

2004/12に開発用の環境にLVSを導入

z

開発環境でも分散環境のテストができるようになっ

2004/07~2004/12

(16)

Copyright © KLab Inc. All rights reserved.

(17)

DSAS 2.0の構築開始

z

もちろん、ロードバランサは

LVSで

z

本番環境で使用開始

z

DSAS 1.0の特長を残しつつ新しい試みを

z

メタ情報の管理の一元化

z

サーバロール:

MATRIX

z

ネットワークブート

z

ストレージサーバ

z

DRBD+keepalived

z

ネットワークの冗長構成

z

bonding、RSTP

2005/02

(18)

Copyright © KLab Inc. All rights reserved.

(19)

現在の概略図

core

sw1

core

sw2

lvs

lvs

Master

sw3

sw4

Web

DB

DB

Web

sw5

sw6

lls

Storage

Log

lls

上位ルータ

(20)

Copyright © KLab Inc. All rights reserved.

もう少し詳しく

ロードバランサ

(21)

ロードバランサの図

MySQL

Master

MySQL

Slave

MySQL

Slave

Web

App

Web

App

MySQL

Slave

Web

App

LVS

(22)

Copyright © KLab Inc. All rights reserved.

やっていること

z

やっていること=ロードバランス

z

HTTP ←これがほとんど

z

SMTP

z

FTP

z

XMPP (Jabber)

z

など

ロードバランサ

(23)

基本構成

z

keepalivedを使用

z

http://www.keepalived.org

z

L4のロードバランス

z

IPVSの制御

z

サーバの死活監視

z

VRRPによる冗長化

z

2台でActive/Backup

リアルサーバ(1) リアルサーバ(2) リアルサーバ(3) ロードバランサ

keepalived

ロードバランサ

keepalived

VRRP

Active

ロードバランサ

(24)

Copyright © KLab Inc. All rights reserved.

keepalivedの設定ファイル

1/2)

z

keepalived.conf

z

2500行

virtual_server_group HTTP100 { 10.0.0.100 80 } virtual_server group HTTP100 { delay_loop 3 lvs_sched rr lvs_method NAT protocol TCP virtualhost example.org sorry_server 192.168.31.100 80 real_server 192.168.31.101 80 { weight 1 inhibit_on_failure HTTP_GET { url { path /health.html status_code 200 } connect_timeout 3 } } real_server 192.168.31.102 80 { weight 1 inhibit_on_failure HTTP_GET { url { path /health.html status_code 200 } connect_timeout 3 } } } 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 dev eth0 192.168.31.10/24 dev eth1 } }

1つ(か2つ)の

VRRPの設定

たくさんの

仮想サーバ

もっとたくさんの

リアルサーバ

ロードバランサ

(25)

keepalivedの設定ファイル

2/2)

z

構成情報を元に

keepalived.confを生成

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 virtualhost example... sorry_server 192.16... real_server 192.16...

keepalived.conf

keepalived.conf

ロードバランサ

(26)

Copyright © KLab Inc. All rights reserved.

LVSの負荷は?

z

CPU使用率

z

Sys

1.00%

z

User

0.15%

ロードバランサ

(27)

ロードバランサの図

(再掲)

MySQL

Master

MySQL

Slave

MySQL

Slave

Web

App

Web

App

MySQL

Slave

Web

App

LVS

(28)

Copyright © KLab Inc. All rights reserved.

MySQLスレーブへの分散アクセス

z

Webアプリでやらなければならないこと

z

スレーブ群のホスト名の一覧をもっている

z

分散先を決定するロジック

z

ラウンドロビン?

z

コネクションの少ない順?

z

スレーブの死活監視

z

ダウンしているスレーブには分散しないように

Î

アプリはスレーブの状況を意識している必要

がある

(29)

分散と

(30)

LVSがあ

るじゃな

い!!

(31)

ロードバランサ(内)

MySQL

Master

MySQL

Slave

MySQL

Slave

Web

App

Web

App

MySQL

Slave

LVS

LVS

Web

App

おっきいス

レーブが

1台

いるぉ

(32)

Copyright © KLab Inc. All rights reserved.

ロードバランサ(内)

z

そのほかの使い道

z

DNS

z

SMTP

z

Proxy (外部へのHTTPアクセスのため)

Î

内部にもロードバランサがあるとなにかと便

利!!

(33)

今日のお話は

(34)

Copyright © KLab Inc. All rights reserved.

まとめ

1/2)

z

LVSのいいところ

z

金銭的コストが低い

z

金銭的な導入障壁が低い

z

ロードバランサをいくつも導入できる

– 外部・内部、開発環境

z

中身までいじくれる

z

調査

– ソース読む、tcpdump

z

足りないものは実装

z

安定している

z

VRRPで冗長化

z

3年ぐらい運用した限りでは、へんな落ち方をしたことはない

z

LVSのいまいちなところ

z

設定インターフェースが貧弱

z

サポートがない

(35)

まとめ

2/2)

z

なぜそこまでやるのか?

z

ぐっすりねたいから!!

z

いじっててたのしいから!!!!

z

オープンソースでいろいろできます

z

ロードバランス

z

冗長構成

z

などなど

...

z

はじめは最小構成でおk

z

できるところから手をつけて育てればいい

(36)

Copyright © KLab Inc. All rights reserved.

LVS、keepalivedの設定方法は...

z

WEB+DB PRESS Vol.37

z

Linuxロードバランサ構築・運用ノウハウ

z

1章:サーバ負荷分散概論

z

2章:LVSで実現するロードバランサ

z

3章:ロードバランサの冗長化

(37)

ネットワーク・サーバまわり全般の話は

...

z

書籍(書名未定) 鋭意執筆中!

z

『サーバ

24時』 (仮)

z

『今夜できるサーバ』 (仮)

z

『スケーラブル

HP (笑)』 (仮)

z

執筆陣

z

KLab/DSASチーム

z

はてな

Now

Now

Printing

Printing

(38)

Copyright © KLab Inc. All rights reserved.

ご清聴

参照

関連したドキュメント

ROKU KYOTO Autumn Parfait ~ Shine muscat & Jasmine tea ~ ROKU KYOTO

(4) 現地参加者からの質問は、従来通り講演会場内設置のマイクを使用した音声による質問となり ます。WEB 参加者からの質問は、Zoom

けいさん たす ひく かける わる せいすう しょうすう ぶんすう ながさ めんせき たいせき

てい おん しょう う こう おん た う たい へい よう がん しき き こう. ほ にゅうるい は ちゅうるい りょうせい るい こんちゅうるい

すべての Web ページで HTTPS でのアクセスを提供することが必要である。サーバー証 明書を使った HTTPS

2) ‘disorder’が「ordinary ではない / 不調 」を意味するのに対して、‘disability’には「able ではない」すなわち

[r]

きも活発になってきております。そういう意味では、このカーボン・プライシングとい