ニフクラ ブログ

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

ニフティクラウド探検隊 サーバーの中身を調査してみた。

はじめまして。
ニフティでインフラを守るお仕事をしている五月女です。

Niftycloud_serverlist 昨年のサービス開始以来、「個人的にニフティクラウドを使って遊びたいなぁ。」とずっと思っていたのですが、やっと機会を得て環境を借りる事が出来たので、使い倒していきたいと思います!(`・ω・´)

ニフティクラウドって「公式サイト」「サポート掲示板」でいろいろ情報公開してくれてるんですが、細かな箇所で分からない所があります。

例えば提供されているサーバー。

簡単に「CentOSとRHELとWindows Server 2008 R2が使えまーす。」と書いてあって、どんな構成なのかよく分からないです。
=>【ニフティクラウドのサービス仕様
=>【サポート掲示板 公式FAQ ニフティクラウドを利用した際のサーバーの状態は、CentOSをインストールしたLinuxサーバーと同じ状態になるのでしょうか?

そこで今回は、ニフティクラウドで提供される「サーバーの中身」について調べてみました。

※内容は、2011年02月現在時点の情報です。

■ニフティクラウドと提供サーバー

簡単に言うと、ニフティクラウドはブラウザ上でのボタンクリックや、
APIでの命令ひとつで、インフラやOS等を含むサーバーを瞬時に*1貸してくれるサービスです。*2
もちろん返却する時も、ボタンクリックやAPIで瞬時に実施する事が出来ます。

Niftycloud_controlpanel

基本料金や最低利用期間等も無く、最小1時間単位で借りることが出来るので、
従来のレンタルサーバーやホスティングサービスとは違った使い方を実現する事が出来ます。

っと、詳細な説明は別の機会にするとして、ニフティクラウドから提供されるサーバーは、
提供時点でOSがセットアップされており、標準で以下のOSが提供されています。

標準提供OS一覧
CentOS 5.3 32bit Plain
CentOS 5.3 64bit Plain
CentOS 5.3 32bit Server
CentOS 5.3 64bit Server
Red Hat Enterprise Linux 5.3 32bit
Red Hat Enterprise Linux 5.3 64bit
Microsoft Windows Server 2008 R2

それぞれ詳細に見ていきましょう。

■ニフティクラウドの標準提供OS

標準て提供されるOSについて、いろんな角度から調べててみました。
※サーバータイプは全台1vCPU 512MBを選択して作成

コマンド/OSCentOS 5.3 32bit PlainCentOS 5.3 64bit Plain
uname -a 2.6.18-128.el5 i686 2.6.18-128.el5 x86_64
cat /etc/redhat-release CentOS release 5.3 (Final) CentOS release 5.3 (Final)
df -kh 空き25GB 空き24GB
parted /dev/sda print /boot=>535MB
swap=>2204MB
/=>29.5GB
/boot=>535MB
swap=>2204MB
/=>29.5GB
cat /proc/cpuinfo X5680 @ 3.33GHz X5680 @ 3.33GHz
cat /proc/meminfo MemTotal:515444 kB MemTotal:510732 kB
free -m used:110MB used:115MB
cat /etc/sysconfig/iptables 詳細結果 詳細結果
yum repolist all 詳細結果 詳細結果
rpm -qa 詳細結果 詳細結果
chkconfig --list 詳細結果 詳細結果
コマンド/OSCentOS 5.3 32bit ServerCentOS 5.3 64bit Server
uname -a 2.6.18-128.el5 i686 2.6.18-128.el5 x86_64
cat /etc/redhat-release CentOS release 5.3 (Final) CentOS release 5.3 (Final)
df -kh 空き24GB 空き24GB
parted /dev/sda print /boot=>535MB
swap=>2204MB
/=>29.5GB
/boot=>535MB
swap=>2204MB
/=>29.5GB
cat /proc/cpuinfo X5680 @ 3.33GHz X5680 @ 3.33GHz
cat /proc/meminfo MemTotal:515444 kB MemTotal:510732 kB
free -m used:108MB used:82MB
cat /etc/sysconfig/iptables 詳細結果 詳細結果
yum repolist all 詳細結果 詳細結果
rpm -qa 詳細結果 詳細結果
chkconfig --list 詳細結果 詳細結果
コマンド/OSRed Hat Enterprise Linux 5.3 32bitRed Hat Enterprise Linux 5.3 64bit
uname -a 2.6.18-128.el5 i686 2.6.18-128.el5 x86_64
cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.3 (Tikanga) Red Hat Enterprise Linux Server release 5.3 (Tikanga)
df -kh 空き23GB 空き23GB
parted /dev/sda print /boot=>535MB
swap=>2204MB
/=>29.5GB
/boot=>535MB
swap=>2204MB
/=>29.5GB
cat /proc/cpuinfo X5680 @ 3.33GHz X5680 @ 3.33GHz
cat /proc/meminfo MemTotal:515444 kB MemTotal:510732 kB
free -m used:84MB used:101MB
cat /etc/sysconfig/iptables 詳細結果 詳細結果
yum repolist all 詳細結果 詳細結果
rpm -qa 詳細結果 詳細結果
chkconfig --list 詳細結果 詳細結果
構成Microsoft Windows Server 2008 R2
CPU・メモリ Cpu_mem
ディスク Disk01 Disk02
ネットワーク・役割・機能 Network01 Network02
ファイアウォール Firewall

ざっと一覧にしてみてみましたが、ニフティクラウドは基本的な「仮想化されたサーバー+素のOS」を提供してくれている様です。

CentOSで提供されている「Plain」「Server」の違いは、初期状態でインストールされているパッケージの違いだけの様ですね。「Server」の方にはApache、MySQL、mod_perl、PHP、Squid、vsftpdといったパッケージが初期状態でインストールされています。
=>【「Plain」と「Server」のパッケージ一覧のdiff結果

今回はサーバータイプに全台1vCPU 512MBを選択して作成しましたが、ニフティクラウドは1vCPU・512MBから4vCPU・16GBの組み合わせまで利用出来ます。
サーバータイプの違いはCPU・メモリサイズが異なるだけなので、この情報はそのまま参考になるのと思います。
=>【ニフティクラウド 料金
また、各サーバータイプの性能比較は先に掲載された以下の記事が詳しいです。
=>【徹底比較: ニフティクラウド VS Amazon Web Services

基本的には癖の無い環境に見えますが、個人的に「注意しないとダメかな?」と感じた箇所をピックアップして紹介します。

■ニフティクラウド標準提供OSのココに注意!

(1)ファイアーウォール設定がガッチガチだよ!

サポート掲示板にも記載されていますが、提供時のサーバーはiptablesやWindowsFirewallでかなり厳しいファイアウォール設定をされています。
=>【サポート掲示板 公式FAQ サーバー作成直後のセキュリティ設定はどうなってますか?
提供時のサーバーの設定では、CentOSとRHELでは、22番ポート経由のSSHアクセスだけ、Windows Serverではリモートディスクトップアクセスだけが許可されている状態です。

[root@localhost ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j DROP
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
## DO NOT EDIT !!!!
-A RH-Firewall-1-INPUT -m tcp -p tcp --sport 67:68 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p udp --sport 67:68 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
## DO NOT EDIT !!!!
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

このため環境構築作業の進捗と合わせて、ポートの開放作業を実施する必要があります。
例えば、Webサーバーを構築したら80番ポートを開放し、MySQLサーバーを構築したら3306番ポートを開放するといった操作を忘れずに実施しましょう。

ただ、提供時のサーバーがかなり厳しいファイアウォール設定をされているのも、セキュリティを担保するためであると考えられるため、必要なポートを必要なときに開放する意識を忘れないでください。

(2)NTPD入ってないよ!でも時刻同期はしてるよ!

標準提供OSを見てみると、なんと時刻同期に必要なNTP関連のパッケージが入っていません。
その上NTPDも実行されていません。

[root@localhost ~]# rpm -qa | grep ntpd
[root@localhost ~]# ntpq -p
-bash: ntpq: command not found

このままだと時刻がどんどんズレていってしまう気がするんですが、どうやって時刻同期してるんでしょう?
と調べてみると、、、ありました。

[root@localhost ~]# vmware-toolbox-cmd timesync status
Enabled

ホストのVMwareと通信して、ホストの時刻と同期しているんですね。

このままの設定でも特に問題無いと思いますが、VMware社さんのドキュメントによると、「CentOSやRHELといったLinux系のOSではNTPで時刻同期した方がいいよ」って書かれてたりしますので、より精度の高い時刻同期を実現したい方はNTPの設定を検討すると良いでしょう。
=>【(日本語)Linux ゲストの時刻管理のベスト プラクティス
=>【(原文)Timekeeping best practices for Linux guests

(3)crontabの実行時間がバラバラだよ!

crontab(/etc/crontab)を見てみるとcrontabの時間がサーバー毎にバラバラになっています。
crontabの定期実行と言うと毎日4時台に動作するというイメージですが、ニフティクラウド上の何台かのサーバーで確認した所、6時台だったり、21時台だったりと結構バラつきがある様です。

# run-parts
#42 * * * * root run-parts /etc/cron.hourly
54 6 * * * root run-parts /etc/cron.daily
#24 17 * * 0 root run-parts /etc/cron.weekly
#43 22 1 * * root run-parts /etc/cron.monthl
# run-parts
#51 * * * * root run-parts /etc/cron.hourly
37 21 * * * root run-parts /etc/cron.daily
#49 3 * * 0 root run-parts /etc/cron.weekly
#15 19 1 * * root run-parts /etc/cron.monthly

それほど問題になる箇所では無いと思いますが、「crontabの定期実行が4時台に実施される事を前提」としたアプリケーションを利用する際は設定を変更する等の対応が必要でしょう。

(4)DNSがローカルに立ってるよ!

resolv.confを見たところnameserverの設定がされていません。

[root@localhost ~]# cat /etc/resolv.conf
search localdomain

どうやって名前引きしてるのかな?と調べてみるとサーバー自身にDNSを作成し、ドメイン情報をキャシュしていました。

[root@localhost ~]# service named status
number of zones: 6
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/1000
tcp clients: 0/100
server is up and running
named (pid  3212) を実行中...
[root@localhost ~]# nslookup nifty.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
Name:   nifty.com
Address: 202.219.63.73
Name:   nifty.com
Address: 202.248.88.214

NTPの件同様、このままでも全く問題ありませんが、借りたリソースは少しでも有効活用したい事を考えると
キャッシュに使っているストレージやCPU、メモリといったリソースを節約するために、
ニフティクラウド内で1台だけDNSを残し、他のサーバーはそこを参照する様にしたり、
インターネット上の別のDNSに切り替えてしまうといった工夫をする余地があります。

(5)Windows Serverはライセンス付き!RHELはライセンスを別途購入!

ニフティクラウドから提供される有償OSの内、Windows Server 2008 R2はライセンスが適用された状態で提供されますが、 Red Hat Enterprise Linux(RHEL)については、必要に応じて利用者自身がサポートライセンス(サブスクリプション)の購入・Red Hat Network(RHN)へ登録・システムに適用を行います。

サブスクリプションを適用しないとRHNに接続出来ず、yumを実行しても怒られてしまってパッケージを入手する事が出来ません(´・ω・`)

[root@localhost ~]# yum repolist all
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
repo id              repo name                                status 
rhel-debuginfo       Red Hat Enterprise Linux 5Server - x86_6 disabled
repolist: 0
(6)カーネルアップデート出来ないよ!

カーネルアップデートは「禁止行為」に含まれているため実施出来ません。

■禁止行為
・次のサービス、もしくは類似のサービスを提供すること(アプリケーション内での利用も含む)
※オープンプロキシ
※オープンメールリレー
※オープンで再帰可能なDNSサーバー
※DHCPサーバー
※その他法令、慣例、業界基準などに照らし合わせて、ニフティが適当でないと判断したサービス
・VmwareToolsの削除、および同一機能を有するモジュールの追加
・作成したサーバーでの再仮想化行為
・カーネルアップデート
・ニフティ側から提供されたサーバーやサービスのネットワーク設定変更(スタティックIPの設定など)
・フラッディング攻撃、およびそれに類似する行為
・DOS攻撃、およびそれに類似の行為
・ほかのユーザーの状況の調査、もしくは試み
・ニフティへの妨害行為(妨害行為の判断はニフティが実施する)
・サービスや、ニフティの提供する資産への攻撃、セキュリティ機構の破壊行為、もしくは調査、試行
・アカウントの不正利用(不正利用の判断はニフティが実施する)

=>【ニフティクラウド サービス仕様 =>禁止事項=>禁止行為

また、利用者が誤って「# yum -y update」等を実行して不意にカーネルをアップデートしてしまわない様に「/etc/yum.conf」に「exclude=kernel.*」と追記されておりカーネル周りのパッケージは変更出来ない様になっています。

ここら辺は基盤にVMware vSphereを使ってる事が影響してそうですね。
=>【検証!ニフティクラウド/[インタビュー]「“ベストエフォート”と称するには語弊がある」 (ITpro)
不意にカーネルアップデートをしてそのままリブートすると、VMwareのドライバ等がが未適用のカーネルでOSが起動してしまってネットワーク接続等出来なくなってしまう事を気にしているのでしょう。

ただ、カーネルアップデートが出来ないと困る場面は多々あると思うので、
カーネルアップデートを実施後、コントロールパネルやAPIでvmware-toolsを適用する機能等が望まれる所です。
個人的にはコンソール画面が欲しいです。

(7)vmware-toolsのプロセスは止められないよ!

これも禁止行為に含まれています。
理由は、上記の「カーネルアップデートが出来ないよ!」と同じで、
基盤にVMware vSphereを使ってるためなんでしょう。
この通りバッチリ走っています。

[root@localhost ~]# ps aux | grep vmtoolsd
root      2532  0.0  0.3  46628  1524 ?        S     2010   5:33 /usr/sbin/vmtoolsd

間違って落としたりするとコントロールパネルやAPIから制御出来ないサーバーになってしまうので注意が必要です。

(8)SSHキーとrootのパスワードは異なるよ!

SSHキー作成時に入力する「パスフレーズ」と、サーバー作成時に入力する「rootパスワード」の違いについてキチンとした認識が必要です。意外とハマってる人を周りで何人か見かけました。特にTeraTerm等でサーバーにログインする際は、ログイン時に入力するのは「パスフレーズ」になります。
Teraterm_sshkey =>【ニフティクラウド コントロールパネルヘルプ 第1.8版=>10. サーバーへのログイン方法】[リンク先はPDFファイルです]

■まとめ

駆け足でしたが、ざっと確認した限り、「癖のない素のサーバー」を提供してくれている様です。
いくつか注意すべき点はありましたが、これなら自社サーバーやVPS、ホスティングサービス等で構築している環境をそのまま移植するのも、それほど問題にならないのでしょうか。

ニフティクラウドは、環境にもよりますが手元の端末からサーバーまで、4~9msecで到達します。
また、1時間単位の従量課金で12.6円/時から利用する事が出来るため、ちょっとした検証なら100円もあれば実現可能でしょう。
そしてサーバーは、コントロールパネルやAPIからの制御でストレス無く作成や削除を実行出来ます。

エンジニアの意欲をそそる魅力が満載で、アイデア次第でいろんな使い方が出来そうです。
いろいろと使い倒してみようと思いますヽ(*´∀`)ノ

※1 公式には5分以内って事みたいですが、タイミングが良いと2分くらいみたいです。
※2 他にロードバランサとか追加ディスク等もありますが、現状のメインはサーバーの貸し出しでしょう