このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会

4,761 views

Published on

VPS「ConoHa」( http://www.conoha.jp/ )で、くふうしてVMイメージのコピー・テンプレート/構成管理・ロードバランサーを実現してみる勉強会の資料です(2013/11/27)。

このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会

  1. 1. 第2回 「できない子ほどかわいくしたい! ConoHa補完計画」勉強会
  2. 2. 前回の「このべん」にて… 「新しくこういう機能を追加して ほしい!」 という声がたくさん寄せられました。 声 ありがとうございます
  3. 3. でも、ご要望にお応えするには まだお時間が必要です まだお時間が必要です… 3
  4. 4. 待ってるあいだ、 待 てるあいだ ずっとConoHaは 「できない子」のまま? 4
  5. 5. ConoHaに足りない機能を 「できるようにする」 Tipsをご紹介します! 5
  6. 6. 今回のトピックス • 「VMイメージのコピー」 – 「Cl 「Clonezilla」で解決する ill 」 解決する • 「テンプレートの提供」「自動展開」 – 構築 構築ツール「Ansible」で解決する 「 解決す • 「ロードバランサー」 – ローカルネットワークによる複数台構成 +nginxで解決する – 予告していたLVS+keepalivedは想定より紙幅を取ってしまうため 予告していたLVS+keepalivedは想定より紙幅を取ってしまうため、 追ってサイトでご紹介します(ごめんなさい) 6
  7. 7. 注意点 • 今回のTipsは、あくまで参考情報としてご紹介する ものであり、公式なサポートはできません もの あり 公式なサポ トは きません • ご意⾒・追加情報がありましたら Twitter @MikumoConoHa にお寄せください 7
  8. 8. ピ 「VMイメージのコピー」 8
  9. 9. こんなことがしたい! • すでに設定済みのVPSのイメージを 他のVPSにコピーしたい 他のVPSに ピ した – 移⾏ – ひながたとしての利⽤ 手をかけて いろいろ 設定した VPS コピ する コピーする 9
  10. 10. 対処方法:「Clonezilla」を使う • Clonezillaの特徴 – パ ティションコピ ・リカバリツ ル パーティションコピー・リカバリツール – LiveCDでの起動が可能 – ssh経由で他のマシンにバックアップが可能 – フリー • ConoHaへの適応性 – ISOイメージ起動が可能 – 他VPSにssh経由でバックアップ 10
  11. 11. 手順 Clonezilla ISO イメージを入手 ISOイメージを SOイメ ジを SFTPでConoHa にアップロード アッ ド VPSイメージの コピー先を⽤意 C o e a起 Clonezilla起 動・ssh経由で コピー 11
  12. 12. Clonezilla LiveCD ISOイメージを入手 ISOイメ ジを入手 • http://clonezilla.org/ から取得 • stable releases - 2.2.0-31 を使ってみる 12
  13. 13. SFTPでConoHaにアップロ ド SFTPでConoHaにアップロード • • VPSコンソールの下部にある情報に従ってSFTPでアップロード FileZilla、WinSCPなどを使⽤する FileZilla WinSCPなどを使⽤する Filezilla 13
  14. 14. VPSイメ ジのコピ 先を用意 VPSイメージのコピー先を用意 • • • コピー先にSSHでログインできるアカウントを⽤意する アカウントのホームディレクトリに⼗分な空き容量があることを確認 アカウントのホ ムディレクトリに⼗分な空き容量があることを確認 アカウント作成例(root権限で) $ useradd partimag use add pa ag $ passwd partimag データは /home/partimag 配下に保管される コピー元 コピー先 14
  15. 15. ClonezillaのISOイメ ジをConoHaで起動 ClonezillaのISOイメージをConoHaで起動 • • • VPS上部のプルダウンメニューからISOイメージ名を選択 「挿入」をクリック VPSをリブート 15
  16. 16. Clonezillaを使う 1 起動したら「Clonezilla live」を選択 ⽇本語版を選び、キ マップは変更 ⽇本語版を選び、キーマップは変更 しない 16
  17. 17. Clonezillaを使う 2 そのまま「Clonezillaを開始」 「device-image」モードを選ぶ 17
  18. 18. Clonezillaを使う 3 「ssh_server」を選択 「dhcp」を選択 18
  19. 19. Clonezillaを使う 4 保存先のIPアドレス・ポート番号を 入⼒ sshログイン可能なアカウント名 (たとえばpartimag)を入⼒ 19
  20. 20. Clonezillaを使う 5 sshの警告に「yes」と答えたあと、パスワー ドを入⼒ 20
  21. 21. Clonezillaを使う 6 Beginnerモードを選択 「savedisk」を選択 21
  22. 22. Clonezillaを使う 7 「node-img」など適当なファイル名を入⼒ 保存するパーティションを選択 保存するパ テ シ ンを選択 22
  23. 23. Clonezillaを使う 8 fsckするかどうか。-fsck-src-part を選択 何度か警告が出るが、y 何度か警告が出るが y を押し て進⾏させると完了。 23
  24. 24. 保存されたデ タはどんな形式? 保存されたデータはどんな形式? • こんな感じ • 業界標準だったりしないのであきらめてください 業 標準だ くだ 24
  25. 25. Clonezillaを使う 9 : リカバリ リカバリ時は逆に「restoredisk」を選ぶだけ 25
  26. 26. Clonezillaを使うポイント • 使える!とき – VPSをア プグレ ドした とき VPSをアップグレードしたいとき • メモリ1GB→メモリ2GBに移⾏させるとき – ひながたとして保管しておき、 がた 保管 おき ⼤量のVPSを展開するとき • うまい使い方 – イメージをConoHaのVPSにいつも保管しておく • ひながたとして使いやすい • コピー/リカバリが速い • 他⽤途 他⽤途のVPSと兼⽤できる と兼⽤ きる 26
  27. 27. 「テンプレートの提供」 「テンプレ トの提供」 「自動展開」 27
  28. 28. こんなことがしたい! • いくつものVPSを⽴てる⼈向け – おなじ設定のVPSを、何度も構築する必要がある – 何種類かの設定のVPSをいちどにたくさん⽴てる 何種類か 設定 を ちどにたくさん⽴てる • 「自動化できないの?」 設定作業 28
  29. 29. 対処方法: 「Ansible」を使う • 「構成管理ツール」のひとつ • 記述した「手順書」(playbook)にしたがって、 リモートのサーバーの設定・管理をおこなう http://www.ansibleworks.com/ http://www ansibleworks com/ 29
  30. 30. Ansible のポイント • 必要条件 – 管理する側 • 基本的にはOSなど環境を問わない Python + UNIX系ツールが動けばよい…がUNIX互換OS推奨 – 管理される側 • SSHでログインできること 管理する側 管理される側 SSH 30
  31. 31. 実験環境 ConoHa 管理する側 • CentOS 6 4x64 6.4x64 • • 構成される側 • • CentOS 6 4x64 6.4x64 Webサーバーとし て構成する 共通ユーザーとして 共通ユ ザ として wheelに属するansible をもつこととする パスフレーズなしの公開鍵でログイン 31
  32. 32. Ansible導入 1 • 管理する側 – ansibleをインスト ルする ansibleをインストールする $ cd /tmp $ wget http://ftp- srv2 .kddilabs .jp /Linux /distributions/ fedora/ ge p // p s dd abs jp / u /d s bu o s/ edo a/ epel/6/x86_64/epel-release-6-8.noarch.rpm $ rpm -ivh epel-release-6-8.noarch.rpm $ yum -y i t ll ansible install ibl 32
  33. 33. Ansible導入 2 • 管理する側・される側共通 – パスワ ドなしでsudo可能な ansible ユ ザ を作成 パスワードなしでsudo可能な ユーザーを作成 $ useradd -G wheel ansible $ passwd ansible (適当なパスワード) p $ visudo (以下の⾏を追加) %wheel ALL=(ALL) NOPASSWD: ALL 33
  34. 34. Ansible導入 3 • 管理する側 – sshの鍵ペアを作成 $ su ansible $ ssh-keygen Generating public/private rsa key pair Enter file in which to save the key (/home/ansible/.ssh/id_rsa): (Enter) Created directory '/home/ansible/.ssh'. y Enter passphrase (empty for no passphrase): (Enter) Enter same passphrase again: (Enter) 34
  35. 35. Ansible導入 4 • 管理される側 – ssh公開鍵のコピ ssh公開鍵のコピー $ su ansible $ mkdir ~/.ssh d / ss $ chmod 0700 ~/.ssh 管理する側で作成した ~/.ssh/id_rsa.pub の中身を ~/.ssh/authorized_keys に追記 / h/ th i d k ※ 実際にはこのあたりも自動化できますが今回はやりません 35
  36. 36. Ansibleの Playbookを作成してみる 管理する側で ~/webservers.yml として作成 - hosts: webservers Webserversと命名したホストを対象に設定 sudo: yes tasks: Apacheをインストール h をイ ト - name: install apache action: yum pkg=httpd state=installed Apacheをサービス登録して起動 - name: apache staeted action: service name=httpd state=started enabled=yes - name: iptables 80-opened HTTPのポートを開放、iptablesを再起動 command: iptables -I INPUT -p tcp --dport http -j ACCEPT - name: iptables rule-saved command: service iptables save - name: iptables restarted service: name=iptables state=restarted PHPをインストール - name: install php action: yum pkg=php state=installed y g 36
  37. 37. Playbookを適用する • 適⽤対象のサーバーリストを設定 • $ vi /etc/ansible/hosts [webservers] 設定される側のサーバーのIPアドレス 実⾏ $ ansible-playbook webservers.yml 37
  38. 38. 実際の実⾏のようす PLAY [webservers] ************************************************************* GATHERING FACTS *************************************************************** ok: [157.7.X.X] TASK: [install apache] ******************************************************** ok: [157.7.X.X] TASK: [apache staeted] ******************************************************** changed: [157.7.X.X] TASK: [iptables 80-opened] **************************************************** TASK [i t bl 80 d] changed: [157.7.X.X] TASK: [iptables rule-saved] *************************************************** changed: [157 7 X X] [157.7.X.X] TASK: [iptables restarted] **************************************************** changed: [157.7.X.X] TASK: [install php] *********************************************************** ok: [157.7.X.X] PLAY RECAP ******************************************************************** 157.7.X.X 157 7 X X : ok=7 changed=4 unreachable=0 f il d 0 k 7 h d 4 h bl 0 failed=0 $ 38
  39. 39. Ansibleとそれ以外のツ ル Ansibleとそれ以外のツール • • 類似ツールがたくさん出ている – Chef – Chef-solo – Puppet uppe Ansibleの利点 – 導入が容易 • ほぼ単一のコマンドで動く ぼ • 管理される側に余計なツールの導入が要らない – VPSでつくるシステムには 規模感がちょうどよい VPSでつくるシステムには、規模感がちょうどよい 39
  40. 40. バ 「ロードバランサー」 40
  41. 41. こんなことがしたい! • Webサーバーに来る⼤量のアクセスを なんとか処理したい なんとか処理した – だいたい複数台のWebサーバーにアクセスを振り 分けて対処するが… ラウ ド じゃな 方法 • DNSラウンドロビンじゃない方法で ⼤量アクセス 41
  42. 42. 対処法: 複数台Webサーバとnginxを使う 複数台Webサ バとnginxを使う インターネット ロードバランサ nginxを搭載した VPS ローカル ネットワーク ネ トワ ク Webサーバー1 インターネット ローカル ネットワーク ネ トワ ク Webサーバー2 Webサーバー1 Webサーバー2 42
  43. 43. nginxのポイント • • • 読み方:「えんじんえっくす」(よく間違える) ロシア産の高性能Webサーバー ロシア産の高性能Webサ バ HTTP/HTTPSプロトコルについて、 柔軟なルールに基づいてバックエンドのWebサーバに分散転送できる – ラウンドロビン – 重みづけ – 応答時間 etc. t 43
  44. 44. 設計 すべてCentOS 6.4x64 nginx 10.0.0.11 ローカル ネットワーク 10.0.0.0/24 Webサーバー1 10.0.0.12 10 0 0 12 Webサーバー2 10.0.0.13 10 0 0 13 44
  45. 45. 手順 ロ カル ローカル ネット ネットワークの構築 ク 構築 nginxの導入 45
  46. 46. ロ カルネットワ クの構築 ローカルネットワークの構築 0 • • • 先にWebサーバー1・Webサーバー2で必要なApacheなどの導入は すませておくこと Webサーバー1・Webサーバー2のWebドキュメントルートに 以下のように違うコンテンツを置いておくと動作確認しやすい – Webサーバー1 $ echo 'httpd-1' > /var/www/html/index.html – Webサーバー2 Webサ バ 2 $ echo 'httpd-2' > /var/www/html/index.html 3台ともiptablesでHTTPの通過を許可しておくこと $ iptables -I INPUT -p tcp --dport http -j ACCEPT $ service iptables save $ service iptables restart 46
  47. 47. ロ カルネットワ クの構築 ローカルネットワークの構築 1 • • コントロールパネル「サービス」→「ローカルネットワーク」から 「ロ カルネットワ ク追加」をクリック 「ローカルネットワーク追加」をクリック 「10.0.0.0/24」セグメントのローカルネットワークを追加 – セグメントは好みに応じて選んでかまいません 47
  48. 48. ロ カルネットワ クの構築 ローカルネットワークの構築 2 • • • • • 3台のVPSをすべてシャットダウン 各VPSのメニューで「ネットワーク」を選択 各VPSのメニュ で「ネットワ ク」を選択 「接続ネットワーク」=「ローカル」の⾏の「設定」をクリック 先ほど追加したローカルネットワークセグメントを設定 3台すべてでローカルネットワークの設定が終わったら、VPSを起動 48
  49. 49. ロ カルネットワ クの構築 ローカルネットワークの構築 3 • nginxサーバーのローカルネットワーク設定 – 「ifconfig -a | grep eth」して新たに追加されたeth1の a MACアドレスを確認 $ ifconfig -a | grep eth eth0 Link encap:Ethernet HWaddr FA:16:3E:XX:XX:XX eth1 Link encap:Ethernet HWaddr FA:16:3E:XX:XX:XX – /etc/sysconfig/network-scripts/ifcfg-eth1 を以下のように作成 DEVICE="eth1“ DEVICE " th1“ BOOTPROTO="static“ HWADDR="FA:16:3E:XX:XX:XX“ NM_CONTROLLED="no“ NM CONTROLLED " “ ONBOOT="yes“ TYPE="Ethernet“ IPADDR= 10.0.0.11 IPADDR="10 0 0 11“ NETMASK="255.255.255.0" – ネットワーク再起動 $ service network restart i t k t t 49
  50. 50. ロ カルネットワ クの構築 ローカルネットワークの構築 4 • Webサーバー1のローカルネットワークの設定 – /etc/sysconfig/network-scripts/ifcfg-eth0 の ONBOOTを変更 /etc/sysconfig/network scripts/ifcfg eth0 ONBOOT="no“ – eth1のMACアドレスを前頁と同様に調べて /etc/sysconfig/network-scripts/ifcfg-eth1 を以下の内容で作成 DEVICE="eth1“ BOOTPROTO="static“ HWADDR= fa:16:3e:XX:XX:XX HWADDR="fa:16:3e:XX:XX:XX“ NM_CONTROLLED="no“ ONBOOT="yes“ TYPE Ethernet TYPE="Ethernet“ IPADDR="10.0.0.12“ NETMASK="255.255.255.0“ GATEWAY="10.0.0.11“ DEFROUTE="yes" – 再起動。 再起動後は外部インタ ネットと相互疎通できなくなるので注意 再起動後は外部インターネットと相互疎通できなくなるので注意 50
  51. 51. ロ カルネットワ クの構築 ローカルネットワークの構築 5 • Webサーバー2のローカルネットワークの設定 – /etc/sysconfig/network-scripts/ifcfg-eth0 の ONBOOTを変更 /etc/sysconfig/network scripts/ifcfg eth0 ONBOOT="no“ – eth1のMACアドレスを前頁と同様に調べて /etc/sysconfig/network-scripts/ifcfg-eth1 を以下の内容で作成 DEVICE="eth1“ BOOTPROTO="static“ HWADDR= fa:16:3e:XX:XX:XX HWADDR="fa:16:3e:XX:XX:XX“ NM_CONTROLLED="no“ ONBOOT="yes“ TYPE Ethernet TYPE="Ethernet“ IPADDR="10.0.0.13“ NETMASK="255.255.255.0“ GATEWAY="10.0.0.11“ DEFROUTE="yes" – 再起動。 再起動後は外部インタ ネットと相互疎通できなくなるので注意 再起動後は外部インターネットと相互疎通できなくなるので注意 51
  52. 52. nginxの設定 1 • 既存のhttpdを殺す • $ chkconfig httpd off $ service httpd stop y yumでnginxをインストール g • $ rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginxrelease-centos-6-0.el6.ngx.noarch.rpm $ yum i t ll nginx install i 設定ファイルの一部削除 • $ rm /etc/nginx/conf d/default conf /etc/nginx/conf.d/default.conf nginxの起動 $ chkconfig nginx on $ service nginx start 52
  53. 53. nginxの設定 2 • • • /etc/nginx/nginx.conf のhttpプロトコル内を修正 p http { : upstream web { server 10.0.0.12:80 weight=5 max_fails=5 fail_timeout=10m; g ; server 10.0.0.13:80 weight=5 max_fails=5 fail_timeout=10m; } se e server { listen 80; server_name _; location / { proxy_pass http://web; } } } service nginx restart nginxサ バ のグロ バルIPアドレスにブラウザでアクセスすると、Web nginxサーバーのグローバルIPアドレスにブラウザでアクセスすると、Web サーバー1・Webサーバー2の内容が適宜切り替わって表⽰されるのがわかる 53
  54. 54. ポイント • nginxを利⽤するメリット – 高次レイヤ 高次レイヤーでアクセスを分散制御できるなど アクセスを分散制御 きるなど 機能が豊富 • URL単位での分散 • セッションごとのサーバー固定 • SSL証明書の統合 • ロ カルネ トワ ク 複数台構成 ローカルネットワーク・複数台構成 – 設定が複雑で、おなじことの繰り返し – Ansibleのような構成ツールが役に⽴つ ような構成ツ ルが役に⽴ 54
  55. 55. ふりかえり 55
  56. 56. 今回のふりかえり • KVMによる完全仮想化環境のため、 PC⽤のディスクコピーツールなども PC⽤のデ スク ピ ツ ルなども いざというときは使える • Ansibleなどの構成管理ツールを使うと捗る。 作業ログにもなる • 安価に複数台構成できるので、 ロードバランサーなども ド な ソフトウェアで代替しやすい (ホンモノの性能についてはここでは置いておきます…) 56
  57. 57. ぜひ、ConoHaをご愛用ください! つづく→ 57
  58. 58. おしらせ 58
  59. 59. おしらせ Webサービスコンテスト「このこん」開催中 ビ 59
  60. 60. 「このこん」について • • • • • • 応募は12/18(水)12時まで 短い期間で、楽しいサービスや技術的に⾒どころのあるサイトをつくる 短い期間で 楽しいサ ビスや技術的に⾒どころのあるサイトをつくる 応募時に添付するプレゼンテーション資料も評価の対象に 賞⾦20万円。12/26(⾦)結果発表 社外審査員もまじえ、公正に審査 • 宮原徹氏(OSC事務局) • 増田(maskin)真樹氏(TechWave編集⻑) • 徳⼒基彦氏(アジャイルメディア・ネットワーク代表) • 水口克也氏(株式会社Linuxジャパン代表) • 平愛美氏(Linux⼥子部代表) • 工藤ひろえ氏(インプレスWatch) 詳細は http://www.conoha.jp/conocon まで 60
  61. 61. ご清聴 ありがとうございました! 61

×