QSP(Quick Service Protection)を使ったsquidのHAクラスター化(前編:Phase1~2)

    こんにちは。
    サイオステクノロジー國政です。プリセールスを担当しております。

    今回はLifeKeeper for Linux 9.1から搭載されたQSP(Quick Service protection)を 使ってProxy Serverプログラムであるsquidをクラスター構成にしてみたいと思います。

    《プロキシサーバーを冗長化する手法あれこれ》
    ・PACファイルによって複数のProxy Serverを指定する方法
    ・ロードバランサーによる複数Proxy Serverの運用を検討する方法
    ・仮想IPアドレスを用いたHAクラスター

    QSPを使用したクラスター構成の特徴

    まずはQSPの特徴を簡単にお伝えすると、

    ・クラスター化する際に制御スクリプトを書かなくてよい
    ・OS のserviceコマンドから起動、停止でき正常時は0を返す作りであるものは利用できる場合が多い

    となります。

    とは言え、実際にどうして良いかわからない部分もあるかと思いますので、段階ごとに適用シーンを考えてみたいと思います。何かの参考になれば幸いです。

    構築の流れ

    < Phase1 >
    シングル構成でsquidサーバーを準備し、クライアントからの動作確認をする

    < Phase2 >
    LifeKeeperを導入し、QSPで保護をかける

    < Phase3 >
    ログなど共有しておきたい項目の連携(※後編に掲載)

     

    設計・メリット・デメリット

    ■設計
    squidの設定ファイルは各サーバーで保持、キャッシュやログファイルも各サーバーで保持する設計とします。

    ■メリット
    仮想IP経由でsquidを利用できる、QSPを使う事によりスクリプトレスでクラスター化できる新規作成でも既存環境からでもLifeKeeperさえあれば簡単に構築できる

    ■デメリット
    サーバー切り替えに伴って共有しておきたいログデータなどの引継ぎはできない(※Phase3で考慮しますので後編でご紹介します。)

    今回の全体構成は以下のような形になりますが、検証環境においては別途セキュリティ対策を行っておりますので、FirewallやSELinuxの設定は無効にしています。実運用の際にはセキュリティに配慮した設計を実施してください。

     

    Phase3 構成図

     

     大まかな構築の流れ

    Phase1構成

    1. シングル構成でsquidを導入

     

    Phase2構成

    2. 2台目準備、2台目にもsquidとLifeKeeperをインストールする
    ※Centos7環境へLifeKeeperをインストールする際は、OSのインストール状態によってはpatchとredhat-lsbのインストールが必要となる場合がある
    (Red Hat ,CentOS,OELのversion5.6.7では必要[LifeKeeperインストールガイド]
    3. IPリソース設定後、QSPを設定
    4. 動作確認

    Phase3構成

    5.DataKeeperを設定
    6. サーバーの時刻同期の再確認(chronydやntpの利用)
    7. ログなどをDataKeeperが管理するミラー領域へ配備するための準備
    8. 手動切り替えを実施させ正常動作確認
    9. 再度切り替えを実施し、同じくログが正しく追従しているか確認

     

    < Phase1 >

    まず、firewallを停止させます。

    1_1

    1-2

    SELinuxを無効化、その後システムの再起動を行います。

    1-3

    検証環境ではDNSを準備していないので、/etc/hostsファイルに2台分のホスト名とIPアドレスを記載しておきます。

    1-4

    squidプログラムを yumコマンドでインストールします。

    1-5

    squidのインストールは非常に簡単です。

    1-6

    squidの設定をする前にオリジナルの設定ファイルを退避させておきます。

    1-7

    squidの設定を行います。(※こちらも随時適切な設定を行ってください)

    1-8

    # Deny requests to certain unsafe ports
    http_access deny !Safe_ports

    # Deny CONNECT to other than secure SSL ports
    http_access deny CONNECT !SSL_ports

    # Only allow cachemgr access from localhost
    http_access allow localhost manager
    http_access deny manager

    # And finally deny all other access to this proxy
    http_access deny all

    visible_hostname qsp-a

    各種制限を外して、最後に自ホスト名を記載します。

    squidサービスをスタートさせます。

    1-9

    プログラムが動作している事を systemctlコマンドで確認します。

    1-10

    squidプログラムが動作している事が確認できれば、クライアント端末の設定を行います。
    クライアントにはUbuntsu Linuxに同梱されているFireFoxを利用します。
    ブラウザ設定 詳細 ⇒ネットワーク ⇒接続設定

    1-11

    インターネット接続、プロキシ設定にて、接続先ホスト(qsp-a)のIPアドレスと、squidが標準で標準で利用するポートである3128を指定しOKを押下します。

    1-12

    次にqsp-aホスト側でクライアントからアクセスがくるか確認します。

    1-13

    1-14

    クライアント側で「SIOSテクノロジー」と入力し、検索を行います。
    qsp-aホストでは、クライアント(192.168.233.139)からのアクセスである事と、www.sios.comへの代理アクセスが行われたログがsquidサーバーに記録されます。

    1-15

    クライアントPCでの表示です。

    1-16

    では、squidプログラムを停止させた場合の挙動も確認しておきます。

    1-17

    1-18

    「LifeKeeper 活用」というキーワードで検索してみましょう。
    結果:プロキシサーバーが停止しているため、応答は得られませんでした。(正常動作)

    1-19

    squidサービスを再開させ、先ほどは違ったキーワード検索を行います。結果としてプロキシサーバーからの応答を得られた為、クライアントでは期待通りの動作が得られました。

    1-20

    では、続いてPhase2のLifeKeeperを使った構成へ構築を移していきましょう。

    < Phase2 >

    クラスター構成にするため、2台目(qsp-b)のホストもPhase1と同じ内容でsquidプログラムをインストールしておきます。
    本構成ではsquidの設定ファイルはサーバーごとに保持しますので、設定ファイルの一番下に記載するホスト名に qsp-aとqsp-bの違いが出ますが、それ以外の設定は同じ設定にします。

    LifeKeeperのインストール(qsp-aホスト)
    インストールマニュアル日本語版はリンク先をご参照下さい。

    ※今回の環境の場合、CentOSを利用していますので、patchとredhat-lsbが
    インストール時に必要になりますので、先にインストールしておきます。

    2-1

    2-2

    2-3

    2-4

    二つのモジュールをインストールしたので、続けてLifeKeeperのインストールを行います。

    2-5

    2-6

    2-7

    2-8

    2-9

    2-10

    2-11

    2-12

    2-13

    2-14

    2-15

    2-16

    2-17

     

    Phase2まではDataKeeperのモジュールは必要ないですが、Phase3で必要になりますので現時点でインストールしておきます。
    後でDataKeeperをインストールする場合は、 setup -kコマンドでこの画面を表示させる事が可能です。

    2-18

    2-19

    2-20

    ここまでで1台目(qsp-a)LifeKeeperのインストールは完了です。
    では、続いてLifeKeeper設定を行っていきます。

    LifeKeeperを開始します。

    2-22

    2-23

    この段階まできたら待機系ホスト(qsp-b)にも同様にLifeKeeprをインストールし、LifeeKeeperを起動、ログインできる所まで上記と同じ手順にて実施しておきます。

    2台のホストにLifekeeperがインストールされた状態からLifeKeeperの設定を開始しましょう。
    (操作はqsp-aから実施します)

    まずは対向ホストに対して接続(connect)を行います。接続に必要な情報を入力してOKを押下します。

    2-24

    無事2台のサーバーが認識されました。

    2-25

    次にサーバー間通信に必要なコミュニケーションパスを設定します。

    2-26

    2-27

    2-28

    2-29

    2-30

     

    コミュニケーションパスが1本作成されました。コミュニケーションパスが1本のままだと、冗長構成が取れていない事を示す黄色の注意喚起がなされます。同様の手順にてコミュニケーションパスをもうひとつ設定します。

    2-31

    二本目のコミュニケーションパスを設定し、プロパティで確認した画面です。
    192と172の二つのネットワークを利用してコミュニケーションパスを設定しました。

    2-32

    これによりqsp-aとqsp-bの状態は緑表示(異常なし)になります。

    2-33

    続いて、仮想IPを設定するために、IPリソースを作成します。
    「Create Resource Wizard」を利用します。

    2-34

    Switchback Typeはintelligentを選択します。

    2-35

    仮想IP(192.168.233.200)を入力し、そのまま進めます。対向サーバーへの拡張まで行うと
    以下のような画面となります

    2-36

    2-37

    2-38

    2-39

    2-39

    2-40

    2-41

    2-42

    2-43

    2-44

    次にQSP(Quick Service Protection)の設定を行います。
    Create Resource Wizardを起動し進めます。

    2-45

    2-46

    2-47

    2-48

    2-49

    2-50

    2-51

    ここまででqsp-aサーバーでリソースが作成されております。
    これを対向サーバー(qsp-b)へ拡張します。

    2-52

    2-53

    2-54

    無事拡張されました。

    2-55

    次に仮想IPとプログラム(squid)の紐づけを行います。

    2-56

    2-57

    2-58

    2-59

    2-60

    2-61

    2-62

    手動フェイルオーバーを実施します。

    この後、クライアントPCのプロキシ設定をLifeKeeper配下の仮想IP(192.168.233.200)に変更し、接続試験を実施します。仮想IPが稼働ホストと紐づきますので、squidを実行しているサーバーがqsp-a、qsp-bのどちらであってもクライアントには影響はありません。

    2-63

    簡単なsquid構成としては、今回のPhase1とPhase2の内容で良いかと思いますが、
    後編ではログなど共有しておきたいデータなどを利用するPhase3の構成にするまでの内容についてお伝えします。

     

    >>QSP(Quick Service Protection)を使ったSquidのHAクラスター化(後編:Phase3)

    本記事の設定や内容で、何かわからないことなどありましたらお気軽に以下よりお問い合わせください。