ニフクラ ブログ

ニフクラ/FJ Cloud-Vやクラウドの技術について、エンジニアが語るブログです。

サーバー不要! タイマー+スクリプトで定期処理を自動化

こんにちは。ニフティクラウドでエンジニアをしている竹内です。

先日、10月25日(火) にリリースされた新機能「ニフティクラウド スクリプト」を利用し、タイマーと組み合わせることによって定期処理を実現してみたのでご紹介します!

仕組み

ニフティクラウド スクリプトでは、任意のnode.jsコードを保存しておき、実行させることができます。さらにニフティクラウド タイマーを組み合わせれば、その作成したスクリプトを定期的に実行させることが可能です。

これにより、定期的に外部APIからなんらかの情報を取得し、加工した上で別の外部APIを呼び出すという仕組みを自前でサーバーを運用することなく(サーバーレスで)実現することができます。

今回は、身近な素材として「定期的にSlackのチャンネル一覧を取得し、チャンネルメンバーが多い順に並び替え、Slackにランキングをポストする」という処理を実現してみました。

金曜の夜に指定したチャンネルへスクリーンショットのような投稿が行われるようになるイメージです(そこまで実用的な例ではありませんが、利用の雰囲気は伝わるのではないかと思います)。

設定の仕方

まず、スクリプト側で下記の内容でスクリプトを作成します(スクリプトの作成方法については、ユーザーガイド スクリプト:スクリプトの作成をご参照ください)。名前はchannel-ranking.jsとしておきます。

channel-ranking.js:

// ニフクラタイマーで週 1 実行
const request = require("superagent")
const _ = require("lodash")
const BANNER = ":crown: Slack チャンネル メンバー数ランキング"
const ENDPOINT = "YOUR SLACK ENDPOINT"
const TOKEN = "YOUR TOKEN"
const INCOMING_URL = "YOUR INCOMING URL"

module.exports = (req, res)=> {
  getChannels().then((channels)=> {
    return postMessage(makeRankingText(channels));
  }).then(()=> {
    res.send("ok");
  }).catch((err)=> {
    res.send("ng");
  });
};

const getChannels = ()=> {
  return new Promise((resolve, reject) => {
    request.get(ENDPOINT + "channels.list?token=" + TOKEN).end((err, res)=> {
      if(err) return reject(err);
      return resolve(res.body.channels);
    })
  });
};

const makeRankingText = (channels)=> {
  let lines = [BANNER]
  _.sortBy(channels, (o)=> { return -o.num_members })
  .slice(0, 10)
  .forEach((channel, i)=> {
    lines.push(`* ${i+1}: ${channel.name} (${channel.num_members})`)
  });
  return lines.join(String.fromCharCode(10));
};

const postMessage = (text)=> {
  return new Promise((resolve, reject) => {
    request.post(INCOMING_URL).send({"text": text}).end((err, res)=> {
      if(err) return reject(err);
      return resolve(res);
    });
  });
};

ちなみに、技術仕様 スクリプトを参考に利用可能なライブラリの中から、lodashとsuperagentを使ってみました。

次にタイマー側でスクリプトを定期実行する設定を行います(タイマーの作成方法については、ユーザーガイド タイマー:HTTPリクエストでサーバーを作成するをご確認ください)。ここでは毎週金曜日の18時に実行する設定を行っています。

以上の操作で毎週、Slackチャンネルのメンバー数ランキングが指定したチャンネルへ投稿されるようになります。

まとめ

自前でサーバーを構築・運用することなく、非常に簡単なコンパネの操作だけで、定期処理を実現できることがお分かりいただけたと思います。今回はSlackの操作しか行っていませんが、他にも下記のようにさまざまな活用方法が考えられます。

  • ニフティクラウドの監視系APIをコールした結果を整形し、定期的にmackerelに連携
  • データベース内の情報を集計し、週次でチームのメーリングリストへ売り上げ情報を送信
  • 毎日深夜帯に比較的サイズの小さいデータをバックアップ

アイデア次第で今までサーバーで動いていたバッチをタイマー+スクリプトに置き換えたり、新たな定期処理を追加して仕事を効率化できそうですね。 ぜひ、タイマー+スクリプトの連携をお試しください!

ニフティクラウドにVPN接続する(VPNルーター設定編)

前回のニフティクラウドにVPN接続する(ニフティクラウド設定編)では、ニフティクラウド側でVPNゲートウェイを設定しました。今回は手元側にあるRTX1200をVPNルーターとして設定し、ニフティクラウドにVPN接続します。また、VPNでニフティクラウド上のサーバーとの間でやり取りするには、サーバーにルーティングの設定を別途行う必要がありますので、その手順についても解説します。

続きを読む

ニフティクラウドにVPN接続する(ニフティクラウド設定編)

前回のニフティクラウドにVPN接続する(準備編)では、ニフティクラウドのVPNゲートウェイを使って、ニフティクラウド上のサーバーにVPN接続するための事前準備を確認しました。

今回は、実際にニフティクラウド側にVPNゲートウェイを作成する手順を解説します。 RTX1200を使ってオンプレミス側のLANをVPN接続し、サーバーをVPN経由でアクセスできるように設定する手順については、次回の記事で解説します。

続きを読む

ニフティクラウドにVPN接続する(準備編)

今回は、ニフティクラウド上に構築したサーバーにVPNで接続する方法について解説します。ニフティクラウドでのVPN接続サービスにはいくつかのサービスが種類がありますが、今回は一番手軽に使えるVPNゲートウェイを利用します。

VPNゲートウェイを利用する前の準備

VPNゲートウェイは手軽に使えると書きましたが、しっかりと使いこなすのはなかなか大変です。今回、私が手順を確認する際にはまったポイントをいくつか挙げておきます。どれも基本的なことばかりですので、VPNの構築経験豊富なベテランの方は読み飛ばしてください。

VPNルーターを用意する

まずはオンプレミス側で使用するVPNルーターを用意します。サポートされているVPNルーターはVPNゲートウェイの仕様・機能のページにあります。ファームウェアのバージョンも含めて確認しておく必要があります。

ニフティクラウドのVPNゲートウェイ

今回は、ヤマハのRTX1200を使用しました。ファームウェアのバージョンは10.01.65です。

固定IPアドレスを用意する

VPN接続には両方が固定IPアドレスのケースと、サーバー側だけ固定IPアドレスのケースがありますが、今回は前者のケースを想定しています。そのため、事前検証にも固定IPアドレスが必要となります。

少なくとも、オンプレミス側でVPNルーター自身がPPPoEなどでインターネットに接続し、グローバルIPアドレスを直接取得できる環境であることが望ましいでしょう。固定IPアドレスサービスでなくても、動的なグローバルIPアドレスが一定期間続けて利用できるなら、検証目的では利用できます。

私の場合、自宅の光回線で固定IPアドレスのPPPoE接続サービスを使用しているので、普段使っているルーターからの接続を停止し、RTX1200にPPPoEを設定して接続できるように変更して検証を行いました。

参考情報を用意する

VPNを構築するにあたり、使用するVPNルーターに関する設定情報を確認しておきます。ルーターのベンダーの提供しているマニュアルやサポート情報は有益な情報源です。

VPNルーターのファームウェアのバージョンアップに伴って仕様が変更になっている場合もありますので、ニフティクラウドで指定されているファームウェアのバージョン以降のリリースノートは事前に確認しておくとよいでしょう。

VPN接続方式の検討

どのようなVPNを構築するのか、事前に検討を行っておきます。

L2接続かL3接続か

L2で接続するか、L3で接続するかを決める必要があります。

それぞれメリット、デメリットがありますが、今回はIPアドレスを別々に管理していることを想定して、L3接続を選択します。

接続方式を選ぶ

L2接続、あるいはL3接続に応じて、さらに接続方式を選ぶ必要があります。

今回はL3接続のうち、オーソドックスなIPsec接続を選択します。

各種IPアドレスの確認

IPsecでL3接続と決まりましたので、それぞれのプライベートネットワークに別々のIPアドレスが割り当てられます。必要となるIPアドレスを表などにまとめておきます。

以下は、筆者がまとめてみた例です(クリックをすると画像が拡大します)。実際にはもう少しあれこれと書き込む必要があることも多いでしょう。

ニフティクラウド側

プライベートLAN

VPN接続にはプライベートLANが必要です。作成時に割り当てるネットワークアドレスを指定する必要があります。

ルーターとDHCPサービス

VPNゲートウェイで直接使用するわけではありませんが、プライベートLANに接続するサーバーにIPアドレスを割り当てるにはルーターの作成が必要です。また、ルーターにはDHCPサービスを割り当てておく必要がありますので、割り当てアドレス範囲なども決めておきます。

VPNゲートウェイ

VPN接続を行うための、ニフティクラウド側のVPNルーターの役割を果たすものです。作成時にプライベートLAN側のIPアドレスを指定します。VPNで接続したいサーバーには、このアドレスをルーティングで指定する必要があります。 VPNゲートウェイのグローバルIPアドレスは作成時に割り当てられますので、作成後に確認しておきます。

以下はVPN構築後のネットワーク図です(クリックをすると画像が拡大します)。

オンプレミス側

プライベートLANのネットワークアドレス

L3接続のため、ルーティングを行っています。ニフティクラウド側のプライベートLANとは異なるネットワークアドレスを指定します。

VPNルーター

インターネットに接続するグローバルIPアドレスを確認しておきます。また、プライベートLANに接続するプライベートIPアドレスも決定しておきます。

その他の設定

DHCPサービスなど、必要なサービスを設定するために必要な情報を確認、決定しておきます。

NATでインターネットに接続できる環境を構築する

VPNルーターとあらかじめ、NATでルーターを経由してインターネットに接続できる環境を構築しておきます。

具体的には、PPPoEのアカウント情報などの設定を行います。ニフティクラウド上に構築したサーバーにアクセスできる、という程度までできていれば問題ないでしょう。

次回は、実際にニフティクラウド側にVPNゲートウェイを設定して、RTX1200から接続する手順を解説していきます。

Acronisを使ったサーバー復元について(P2V編)

こんにちは、ニフティクラウド テクニカルアカウントエンジニアチームです。

ニフティクラウドのパートナー企業が提供するソリューションサービスとして、クラウド型バックアップサービス(Acronis Backup Cloud for ニフティクラウド)をご紹介します。

前回は「Acronis Backup Cloud for ニフティクラウド」を利用したニフティクラウドからニフティクラウドへの復元方法を取り上げました。 Acronisを使ったサーバー復元について

今回は物理環境からニフティクラウドへの移行について、ご紹介いたします。

復元元(物理環境) 復元先(ニフティクラウド環境)
IP xxx.xxx.xxx.xxx IP yyy.yyy.yyy.yyy
OS Windows Server 2012 R2 OS Windows Server 2012 R2
サーバータイプ 物理サーバー
CPU:XeonE5205
MEM:4GB
サーバータイプ large(Type-h)
ファイアウォール
IN 設定 Port 22, 3389のみ開放
(リモート接続に使用)
OUT設定 設定なし

手順概要

1.復元元にエージェントを導入し、バックアップを取得 2.復元先サーバーをニフティクラウド環境へ構築 3.復元先サーバーにてリストア実施 4.vmwaretoolsのインストール

詳細手順

1.復元元にエージェントを導入し、バックアップを取得

1-1.モジュールダウンロード/インストール

復元元となるサーバーにてAcronis管理画面を開きます。Acronis管理画面へログインを行うと以下の画面が表示されますので、「追加」を選択します。 ※復元元サーバーから、80および443ポート宛てにインターネットへのアクセス、および名前解決ができる前提となります。 0002_01_エージェントダウンロード

「サーバー」の「Windows」を選択します。 0002_02_エージェントダウンロード

ダウンロードが完了するので、exeファイルを実行します。実行後、以下の画面が表示されますので、「インストール」をクリックします。 0002_04_エージェントインストール

「バックアップアカウントによるサインイン」の画面が表示されますので「Acronis Backup Cloud for ニフティクラウド」にて払い出されたID/PWを入力し、「サインイン」をクリックします。 0002_05_エージェントインストール

インストールが完了すると、以下のようにサーバーのホスト名がAcronisの管理画面に表示されます。 0002_08_エージェントインストール

1-2.バックアップ取得

バックアップ設定を実施するため、対象サーバー名の行をクリックし、対象サーバーを選択状態とします。選択後、右ペインが表示されますので、「バックアップ」を選択します。 0003_02_バックアップ

再度、右ペインが表示されますので、「新規作成」を選択し、バックアップ設定画面を表示させます。 0003_03_バックアップ

以下が表示された画面となります。今回は変更を行わずデフォルト設定のまま、「適用」を実施します。 0003_04_バックアップ

適用後、以下の画面に遷移するので、「今すぐ実行」を選択します。本作業にてバックアップの取得は完了となります。 ※バックアップ完了までの時間については、ネットワーク環境、データ容量により異なるため、本ブログでは触れないこととします。 0003_05_バックアップ

2.復元先サーバーをニフティクラウド環境へ構築

ニフティクラウドにてサーバー作成

ニフティクラウドにてサーバーを作成します。 ※本手順の復元元OSは、Windows Server 2012 R2を利用しているため、Windows Server 2012 R2を利用してサーバーを作成します。

3.復元先サーバーにてリストア実施

3-1.復元先サーバーを停止する

復元先サーバーをニフティクラウドのコントロールパネル、またはリモートデスクトップ接続などからサーバー停止を実施します。

3-2.リストア利用のブータブルメディアをダウンロード

Acronis管理画面の左ペインにて「すべてのメディア」を選択し、リストアサーバを選択します。選択後、右ペインが表示されますので、「復元」を選択します。再度、右ペインが表示されますで、「ISOイメージのダウンロード」を選択します。 0200_01_ダウンロード

ダウンロードしたISOイメージは、ニフティのコントロールパネルのコンソール機能にてISOマウントしてリストアに利用するため、コンソール機能利用の端末に保管を行います。

3-3.復元先サーバーの起動順序変更

ニフティクラウドコントロールパネルより、サーバーの起動を実行します。 05000102_起動

その際に「BIOS画面で停止する」にチェックを入れる必要があるのでご注意ください。 050002_起動

コンソール機能を立ち上げ、ISOファイルをマウントします。コンソール画面にてBIOS画面で停止していることを確認後、「Boot」タブにて「CD-ROM Drive」が最上段になるように変更を実施します。

※2020年4月現在ISOファイルのマウントはISOイメージ機能を利用する必要があります。

※2020年4月現在Windows系OSの場合はコンソール接続を先に行い、サーバー起動時にBIOS画面で停止するよう設定してください。

050003_BIOS

「Exit」タブで、「Exit Saving Changes」を選択し、「Enter」キーをクリックします。 050004_BIOS

以上の操作により、Acronisのブータブルメディアにて起動が開始されます。 0300_01_リストア1

3-4.Acronisにてリストア

ブータブルメディアで起動が開始され、少し時間が経過すると以下のような画面に変化します。カーソルを「Rescue Media」にあわせ、選択します。 0300_02_リストア2

しばらくすると「localhostへようこそ」の画面が表示されますので、「ツール」-「ネットワークの設定」を選択します。選択後、以下の画面の表示となりますので、左ペインで「eth0」が選択されている状態にし、右ペインの「自動構成」のチェックを外します。また、名前解決に利用可能なDNSサーバーのIPアドレスを入力します。設定完了後、「OK」をクリックします。 0300_04_リストア4

以下の画面の表示となりますので、「復元」を選択します。 0300_05_リストア5

「復元するデータの選択」画面が表示されますので、「参照」をクリックします。 0300_06_リストア6

「場所の参照」画面が表示されますので、「クラウドストレージ」を選択し、右下の「ログイン」をクリックします。 0300_07_リストア7

「アカウントのログイン情報」画面が表示されますので、AcronisのIDおよびパスワードを入力し、「OK」をクリックします。 0300_08_リストア8

「場所の参照」画面に戻ると、以下の画面の表示となりますので、そのまま「OK」をクリックします。 0300_09_リストア9

「復元するデータの選択」画面が表示されますので、アーカイブ名や作成日時などから、リストアするデータを選択します。下部の「バックアップ内容」では、「MBR」や「NTFS(C:)」など、すべての項目チェックを入れて、OKをクリックします。 0300_10_リストア10

0300_11_リストア11

以下の画面の表示となります。本構成の場合、自動でディスクの割り当てが行われているため、「OK」をクリックします。 0300_12_リストア12

ポップアップにて、リストアの状況が表示され、リストアが完了すると以下の画面の表示になります。 0300_13_リストア13

ポップアップを閉じた後、コンソール機能のISOファイルマウントを「Unmount」にて解除します。マウント解除後、「アクション」タブから「終了」を実行し、OSを起動します。

4.vmwaretoolsのインストール

OSを起動すると、以下のように表示され、バックアップ元のサーバー名が表示されました。 0300_14_リストア14(確認1)

vmwaretoolsが導入が既に導入されていれば、ここまでで完了です。 vmwaretoolsが導入されていない場合は、以下の手順を実施してください。 ※ニフティクラウドのコントロールパネルにて、正常な動作を行うためには、vmwaretoolsの導入が必要となります。

1.vmwaretoolsをISOファイルとして作成 2.コンソール機能からマウント 3.マウントされたメディアを利用し、vmwaretoolsをインストール 4.OSが起動

上記1~4までの実施で作業は完了です。

まとめ

リストア先のサーバーでバックアップ取得元のみに格納していたデータが格納され、ホスト名の変更もかかったため、リストアは成功したと考えられます。 物理環境から仮想環境への移行はハードルが低くないですが、「Acronis Backup for ニフティクラウド」を利用することで、P2Cのハードルが少し低くなったものと思われます。

注意事項

今回は特別なミドルウェアを導入していないため、ミドルウェアレベルでの確認は実施しておりません。実際にご利用される場合には、十分に試験を実施いただき、動作が正しいものかご確認ください。