2014年9月24日水曜日

Nifty Cloud でのNGINX Plus 導入3

こんにちは、村田です。
3回目はNginxのリバースプロキシ機能を利用したロードバランシングを行います。

1台のNginxで処理できる負荷であれば、ロードバランシングをしない方がパフォーマンスは高いのですが、クライアントからのアクセスが多いサイト、特にBtoCのサイトではロードバランシング機能が必要になるケースが出てきます。

クラウド環境ではアプライアンスのハードウェアロードバランサーを導入しにくい場合もありますが、Nginxで解決できるケースも多くしかもコストも抑えられるので、クラウド環境との相性が良いといえます。今回の構成は以下のようなイメージになります。

2014年9月17日水曜日

Nifty Cloud でのNGINX Plus 導入2

こんにちは、村田です。

NIFTY Cloud さんの環境をお借りしての NGINX Plus 導入の第2回目です。
前回はNIFTY Cloud 上で CentOS 6.5 がインストールされた仮想サーバーの作成までを行いました。今回は作成したサーバーに対してNGINX Plus のインストールと基本設定を行いうところまでを行います。

OSS コミュニティ版の Nginx を yum 経由でインストールするのと手順はほとんどかわりなく、パッケージ取得の際の認証が必要になる形です。

仮想サーバーへのログイン

NIFTY Cloud では、コントロールパネル上で操作可能なコンソールを用意していますが、IE か Firefox が必要になります。今回はより利便性の高い SSH を使用してログインする方法でご案内したいと思います。

  1. SSHログイン
  2. 予め作成したSSHキーを任意のディレクトリに用意の上で ssh コマンドでアクセスします。
    Are you sure you want to continue connecting (yes/no)? と表示されたら、yes を入力して Enter キーを押下します。

    [root@localhost ~]# と表示がされればログイン成功です。

    $ ssh -i [SSHキー名]_private.pem root@[IPアドレス]
    Warning: Identity file [SSHキー名]_private.pem not accessible: No such file or directory.
    The authenticity of host '[IPアドレス] ([IPアドレス])' can't be established.
    RSA key fingerprint is aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '[IPアドレス]' (RSA) to the list of known hosts.
    [root@localhost ~]# 
  3. NGINX Plusのインストール
  4. CentOSの環境でNGINX Plusをインストールする場合は yumレポジトリからのインストールとなります。
    SSLの設定が必要になるため、予めディレクトリの設定を行います。

    # mkdir /etc/ssl/nginx

    Nginx Inc. が用意したyumレポジトリにアクセスするためには、カスタマーポータルからSSLキーとレポジトリの情報をダウンロードする必要があります。カスタマーポータルへのアクセスには、評価版を申請頂くか、製品をご購入頂く必要があります。評価版のご相談はこちらよりご連絡ください。

    カスタマーポータルにログインすると以下のようにサブスクリプションの情報が取得てきます。アクティブなサブスクリプションの「Certificate」「Private key」のリンクからnginx-repo.crtとnginx-repo.keyをダウンロードします。

    画面の下部に「NGINX repository setup instruction」にアクセスし、To show setup instructions please choose your OS and distribution:の項目から「RHEL6/CentOS」を選択します。

    項目を選択すると下記の情報が表示されます。

      Setup instruction for RHEL6/CentOS6
    • Create /etc/ssl/nginx directory
    • Move CA.crt, nginx-repo.key and nginx-repo.crt files to /etc/ssl/nginx/ directory
    • Copy nginx-plus-6.repo file to /etc/yum.repos.d/ directory
    • Run yum install nginx-plus to install nginx-plus package. Please keep in mind that old nginx package (if any) will be replaced.
    • In order to upgrade from the previous version of nginx-plus, run yum upgrade nginx-plus

    まず Keys and certificates より「Certificate」「Private key」をそれぞれダウンロードしてサーバーにアップロードします。ローカルのシステムから一連のファイルをアップロードするには、以下のようにscpコマンドを使用するとよいでしょう。

    $ scp -i [SSHキー名]_private.pem nginx-repo.crt root@[IPアドレス]:/etc/ssl/nginx/

    CA.crt と nginx-plus-6.repo の部分がリンクになっているのでサーバー側で wget コマンドより取得します。

    # cd /etc/ssl/nginx/
    # wget https://cs.nginx.com/static/files/CA.crt
    --2014-08-31 23:47:33--  https://cs.nginx.com/static/files/CA.crt
    cs.nginx.com をDNSに問いあわせています... 206.251.xxx.xxx
    cs.nginx.com|206.251.xxx.xxx|:443 に接続しています... 接続しました。
    HTTP による接続要求を送信しました、応答を待っています... 200 OK
    長さ: 1606 (1.6K) [application/x-x509-ca-cert]
    `CA.crt' に保存中
    
    100%[======================================>] 1,606       --.-K/s 時間 0s     
    
    2014-08-31 23:47:35 (296 MB/s) - `CA.crt' へ保存完了 [1606/1606]
    
    # cd /etc/yum.repos.d/
    # wget https://cs.nginx.com/static/files/nginx-plus-6.repo
    --2014-08-31 23:54:37--  https://cs.nginx.com/static/files/nginx-plus-6.repo
    cs.nginx.com をDNSに問いあわせています... 206.251.xxx.xxx
    cs.nginx.com|206.251.xxx.xxx|:443 に接続しています... 接続しました。
    HTTP による接続要求を送信しました、応答を待っています... 200 OK
    長さ: 230 [application/octet-stream]
    `nginx-plus-6.repo' に保存中
    
    100%[======================================>] 230         --.-K/s 時間 0s     
    
    2014-08-31 23:54:38 (50.0 MB/s) - `nginx-plus-6.repo' へ保存完了 [230/230]
    

    各ファイルの送付が完了したら yum コマンドからインストールを行います。

    # ls /etc/ssl/nginx/CA.crt  nginx-repo.crt  nginx-repo.key
    # ls /etc/yum.repos.d/
    CentOS-Base.repo       CentOS-Media.repo  nginx-plus-6.repo
    CentOS-Debuginfo.repo  CentOS-Vault.repo
    # yum install nginx-plus
    Loaded plugins: fastestmirror, security
    Determining fastest mirrors
     * base: ftp.iij.ad.jp
     * extras: ftp.iij.ad.jp
     * updates: ftp.iij.ad.jp
    base                                                     | 3.7 kB     00:00    
    extras                                                   | 3.4 kB     00:00    
    nginx-plus                                               | 2.9 kB     00:00    
    nginx-plus/primary_db                                    |  31 kB     00:00    
    updates                                                  | 3.4 kB     00:00    
    updates/primary_db                                       | 4.8 MB     00:00    
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package nginx-plus.x86_64 0:1.7.3-1.el6.ngx will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package           Arch          Version                Repository         Size
    ================================================================================
    Installing:
     nginx-plus        x86_64        1.7.3-1.el6.ngx        nginx-plus        1.5 M
    
    Transaction Summary
    ================================================================================
    Install       1 Package(s)
    
    Total download size: 1.5 M
    Installed size: 2.1 M
    Is this ok [y/N]: y
    Downloading Packages:
    nginx-plus-1.7.3-1.el6.ngx.x86_64.rpm                    | 1.5 MB     00:01    
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Installing : nginx-plus-1.7.3-1.el6.ngx.x86_64                            1/1
    ----------------------------------------------------------------------
    
    Thanks for using NGINX!
    
    Please find the documentation for NGINX Plus here:
    /usr/share/nginx/html/nginx-modules-reference.pdf
    
    More information about NGINX products is available on:
    * http://nginx.com/
    
    ----------------------------------------------------------------------
      Verifying  : nginx-plus-1.7.3-1.el6.ngx.x86_64                            1/1
    
    Installed:
      nginx-plus.x86_64 0:1.7.3-1.el6.ngx                                          
    
    Complete!

    ※ yumインストールの途中のコメントにもあるとおり、/usr/share/nginx/html/nginx-modules-reference.pdf にドキュメントが用意されていますので、こちらも忘れずに取得しておいて下さい。

    インストールが完了したらサービスを起動すればWebサーバーとして立ち上がります。

    [root@localhost ~]# /etc/init.d/nginx start
    nginx を起動中:                                            [  OK  ]

以下のように「Welcome to nginx!」のページが表示されれば初期設定は完了です。

次回は Nginx の設定ファイルを編集していき NGINX Plus 独自のライブステータス機能のセットアップからロードバランサーとして利用するところまでをご案内します。

OSSコミュニティ版 Nginx を使用する場合は yum レポジトリ作成のところで /etc/yum.repos.d/nginx.repo を作成し、設定ファイルには下記を入力します。

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

インストールは下記のコマンドを利用します。

# yum install nginx

詳細は http://nginx.org/en/linux_packages.html#mainline をご参照下さい。

2014年9月10日水曜日

NIFTY Cloud でのNGINX Plus 導入1

こんにちは、村田です。
今回、ニフティさんから環境をお借りして7月に販売開始したNGINX Plus を試す機会を頂きました。
NIFTY Cloudを利用したNGINX Plusの基本的な構成の導入を3回に分けてご紹介したいと思います。

NIFTY Cloud上での仮想サーバーの作成

NIFTY Cloud へのログインができる状態になっているところから手順をご案内します。ご利用の詳細は NIFTY Cloud さんのサイトをご確認ください。

2014年9月3日水曜日

PostgreSQL 9.4で強化されたJSON型 (第2回)

PostgreSQL 9.4で強化されたJSON型に関して第二回のご紹介となります。
第一回の内容はこちらをご参照ください。

Bツリーとハッシュインデックス

JSONB型のデータはPostgreSQLの複合型と同じように比較されます。

比較のルール
 −  Object > Array > Boolean > Number > String > Null
 −  Nの要素を持つObject > N-1の要素を持つobject
 −  Nの要素を持つArray > N-1の要素を持つArray

各要素が比較されるので、比較にはそれなりの時間が必要であることに注意が必要です。