Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Ansibleで始めるpostgre sqlの冗長化

オープンセミナー広島の資料です。

デモのPlayBook
https://github.com/soudai/OSH-demo-Ansible-PlayBook

  • Soyez le premier à commenter

Ansibleで始めるpostgre sqlの冗長化

  1. 1. Ansibleで始める PostgreSQLの冗長化 オープンセミナー2015@広島
  2. 2. What is it? 構成管理に躓いた人いませんか?
  3. 3. What is it? Chef使いたいけど既存環境が…
  4. 4. What is it? AnsibleならSSH!
  5. 5. What is it? 実例を交えながらAnsibleをご紹介します
  6. 6. あじぇんだ 1 自己紹介 2 Ansibleとは 3 PostgreSQLを冗長化する 4 Ansibleを使いこなす 5 まとめ
  7. 7. あじぇんだ 1 自己紹介 2 Ansibleとは 3 PostgreSQLを冗長化する 4 Ansibleを使いこなす 5 まとめ
  8. 8. 自己紹介 名前:曽根 壮大(そね たけとも) 年齢:30歳(三人の子供がいます) 職業:Webエンジニア 所属:日本PostgreSQLユーザ会    中国支部 支部長   技術的にはLL系言語とかRDBが好きです
  9. 9. 中国地方DB勉強会 https://dbstudychugoku.github.io/
  10. 10. あじぇんだ 1 自己紹介 2 Ansibleとは 3 PostgreSQLを冗長化する 4 Ansibleを使いこなす 5 まとめ
  11. 11. Ansibleとは
  12. 12. Ansibleとは Pythonで記述された構成管理ツール
  13. 13. Ansibleとは 特徴
  14. 14. Ansibleとは 特徴 1 Python製
  15. 15. Ansibleとは 特徴 1 Python製 2 SSH経由でのPush型
  16. 16. Ansibleとは 特徴 1 Python製 2 SSH経由でのPush型 3 クライアントにインストール不要 
  17. 17. Ansibleとは 特徴 1 Python製 2 SSH経由でのPush型 3 クライアントにインストール不要  4 1.7からWindowsも対象に
  18. 18. Ansibleとは モジュール
  19. 19. Ansibleとは モジュール 1 クライアント(Server側)での動作の事
  20. 20. Ansibleとは モジュール 1 クライアント(Server側)での動作の事 2 yum,apt-getなどは最初から用意済み
  21. 21. Ansibleとは モジュール 1 クライアント(Server側)での動作の事 2 yum,apt-getなどは最初から用意済み 3 モジュールとして自作Codeも可能
  22. 22. Ansibleとは モジュール 1 クライアント(Server側)での動作の事 2 yum,apt-getなどは最初から用意済み 3 モジュールとして自作Codeも可能 ※Python以外のどの言語でも良い
  23. 23. Ansibleとは プレイブック
  24. 24. Ansibleとは プレイブック 1 Chefでいうところのレシピ
  25. 25. Ansibleとは プレイブック 1 Chefでいうところのレシピ 2 モジュール処理をまとめたもの
  26. 26. Ansibleとは プレイブック 1 Chefでいうところのレシピ 2 モジュール処理をまとめたもの 3 YAML形式で記述
  27. 27. Ansibleとは ホスト リモート
  28. 28. Ansibleとは ホスト リモート Ansible
  29. 29. Ansibleとは ホスト リモート Ansible SSH
  30. 30. Ansibleとは ホスト リモート Ansible 環境構築 SSH
  31. 31. Ansibleとは ホスト リモート Ansible 環境構築 既存環境 環境構築 SSH
  32. 32. Ansibleとは ホスト リモート Ansible 環境構築 既存環境 SSH 追加・変更 環境構築
  33. 33. Ansibleとは ホスト リモート Ansible 環境構築 既存環境 SSH 追加・変更 新規環境
  34. 34. プレイブックの例 - hosts: test-server sudo: yes tasks: - name: be sure httpd is installed yum: name=httpd state=installed - name: be sure httpd is running and enabled service: name=httpd state=running enabled=yes
  35. 35. あじぇんだ 1 自己紹介 2 Ansibleとは 3 PostgreSQLを冗長化する 4 Ansibleを使いこなす 5 まとめ
  36. 36. PostgreSQLとは
  37. 37. PostgreSQLとは OSSなリレーショナルデータベース
  38. 38. PostgreSQLとは 特徴
  39. 39. PostgreSQLとは 特徴 1 高機能・高可用性
  40. 40. PostgreSQLとは 特徴 1 高機能・高可用性 2 日本語ドキュメントが豊富
  41. 41. PostgreSQLとは 特徴 1 高機能・高可用性 2 日本語ドキュメントが豊富 3 コミュニティが活発
  42. 42. PostgreSQLとは var リリース日 主な機能追加 8.4 2009/07/01 再帰クエリ, ウィンドウ関数, 列単位のアクセス制御, SQL と関数の性能解析機能 9.0 2010/09/20 レプリケーション, 一括権限変更, 匿名プロシージャ, 64bit Windows サポート, 移動平均, 列/条件トリガ, 一意 性制約の遅延, 排他制約 9.1 2011/09/12 同期レプリケーション, 外部テーブル, パッケージ管理, UNLOGGEDテーブル, 更新可能なWITH句, 近傍検索, SELinux権限制御 9.2 2012/09/10 インデックスオンリースキャン, カスケードレプリケーシ ョン, JSON型, 範囲型 9.3 2013/09/09 マテリアライズドビュー, 外部テーブルへの書き出し, イベ ントトリガ, データページ・チェックサム, LATERAL句 9.4 2014/12/18 マテビューの自動更新,JSONB型,ALTER SYSTEM,集合関 数の向上,GINインデックスの向上,NUMERICの性能改善
  43. 43. PostgreSQLとは 特徴 1 高機能・高可用性 2 日本語ドキュメントが豊富 3 コミュニティが活発
  44. 44. PostgreSQLの冗長化 高可用性を実現すること
  45. 45. PostgreSQLの冗長化 冗長化とは 一部の設備が故障しても サービスを継続して提供できる ようにシステムを構築すること
  46. 46. PostgreSQLの冗長化 「稼働率は想定されていますか?」
  47. 47. PostgreSQLの冗長化 稼働率 年間停止時間 実現方法 90% 36.5日 オンラインバックアップ+リストアだけで十分 オンラインバックアップの取得を実施 99% 3.65日 オンプレミスなら予備マシンが必要 大データならバックアップのリストア所要時間を把握しておく 99.9% 8.7時間 保守停電の無いクラウド∼ハウジングが必要 平日日中のみ障害検知対応だと難しい 99.99% 52分 バックアップのリストアがほぼ不可能 レプリケーション(データ同期)された待機サーバが必要 99.999% 5分 HAクラスタソフトウェアが必要 技術者に要求されるスキルが跳ね上がる 99.9999% 32秒 無停止型Serverなどのハードが必要 コストが急に跳ね上がる
  48. 48. PostgreSQLの冗長化 稼働率 年間停止時間 実現方法 90% 36.5日 オンラインバックアップ+リストアだけで十分 オンラインバックアップの取得を実施 99% 3.65日 オンプレミスなら予備マシンが必要 大データならバックアップのリストア所要時間を把握しておく 99.9% 8.7時間 保守停電の無いクラウド∼ハウジングが必要 平日日中のみ障害検知対応だと難しい 99.99% 52分 バックアップのリストアがほぼ不可能 レプリケーション(データ同期)された待機サーバが必要 99.999% 5分 HAクラスタソフトウェアが必要 技術者に要求されるスキルが跳ね上がる 99.9999% 32秒 無停止型Serverなどのハードが必要 コストが急に跳ね上がる ここを目指します
  49. 49. PostgreSQLの冗長化 「でも難しいんでしょ?」
  50. 50. PostgreSQLの冗長化 大丈夫、そうAnsibleならね!
  51. 51. PostgreSQLの冗長化 PostgreSQLの ストリーミングレプリケーション
  52. 52. PostgreSQLの構成図 ローカル master Ansible slave
  53. 53. PostgreSQLの構成図 ローカル master Ansible slave SSH
  54. 54. PostgreSQLの構成図 ローカル master Ansible PostgreSQL slave SSH PostgreSQL
  55. 55. PostgreSQLの構成図 ローカル master Ansible PostgreSQL slave SSH PostgreSQL レプリケーション
  56. 56. PostgreSQLの冗長化 百聞(100説明)は一見(デモ)に如かず
  57. 57. あじぇんだ 1 自己紹介 2 Ansibleとは 3 PostgreSQLを冗長化する 4 Ansibleを使いこなす 5 まとめ
  58. 58. 代表的なモジュール例 モジュール名 動作 shell shell上でコマンドを実行 task単位でshellを起動するので環境変数は引継無し command $HOME, "<", ">", "¦", "&"が使えない lineinfile 指定ファイルの行単位の書き換え file ファイルやディレクトリの作成、パーミッション設定 template テンプレートを利用したファイルのコピー synchronize rsync(ファイル同期) get_url 指定URLからダウンロード 既にローカルにファイルがある場合は動作しない yum yum(rpm から直接インストールも可能) service service & chkconfig
  59. 59. 冪等性 - name: 初回のみしか上手くいかない shell: "echo 'hoge' >> /etc/hoge.conf”
  60. 60. 冪等性 - name: 初回のみしか上手くいかない shell: "echo 'hoge' >> /etc/hoge.conf”             !!! - name: Linuxの無効を行単位で置換する(毎回同じ動作) lineinfile: dest=/etc/sysconfig/selinux regexp="^SELINUX=.*" line=“SELINUX=disabled"
  61. 61. 冪等性 - name: template postgresql.conf template: src: template/postgresql.conf dest: "{{ postgresql_path }}/postgresql.conf” owner: "{{ postgresql_service_user }}" group: "{{ postgresql_service_group }}" mode: 0640
  62. 62. 状態変化 - name: 結果の取得 shell: touch /tmp/hoge creates=/tmp/hoge register: result - name: print result debug: msg=“{{ result.stderr }}” when: result.stdout != ""
  63. 63. 状態変化 - name: 結果の取得 shell: touch /tmp/hoge creates=/tmp/hoge register: result - name: print result debug: msg=“{{ result.stderr }}” when: result.stdout != "" 条件に該当した時のみ、 Taskが実行される
  64. 64. 変数宣言 vars: port: 5432 postgresql_path: "/var/lib/pgsql/9.4/" postgresql_service_user: "postgres" postgresql_service_group: "postgres" postgresql_user_password: "hoge"
  65. 65. 例外処理 - name: locale=Cじゃないとソートが違う ignore_errors: yes sudo_user: postgres command: initdb --no-locale
  66. 66. 例外処理 - name: locale=Cじゃないとソートが違う ignore_errors: yes sudo_user: postgres command: initdb --no-locale エラーが出ても 処理を続行する
  67. 67. Ansibleを使いこなす Windowsも管理できる
  68. 68. Ansibleを使いこなす Windowsも管理できる ↓ ただしAnsible1.7以上
  69. 69. Ansibleを使いこなす Windowsも管理できる ↓ ただしAnsible1.7以上 ↓ PowerShell 3.0以上が必要
  70. 70. あじぇんだ 1 自己紹介 2 Ansibleとは 3 PostgreSQLを冗長化する 4 Ansibleを使いこなす 5 まとめ
  71. 71. まとめ 構成管理を始めるきっかけに
  72. 72. まとめ 構成管理を始めるきっかけに ↓ 運用をシンプルに!
  73. 73. まとめ 既存環境も管理できる
  74. 74. まとめ 既存環境も管理できる ↓ OpenSSHのUpdateで助かった
  75. 75. まとめ インフラを属人化させない
  76. 76. まとめ Ansible チュートリアル 公式ドキュメント Ansible AWXの中身を読む
  77. 77. ご静聴ありがとうございました。

×