2010年09月01日

さくらのVPS提供開始にあたり

本日より、さくらインターネットの新しい柱となる仮想化サービスの第一号として、さくらのVPSを販売開始することとなりました。

さくらのVPS お申し込み受付開始のお知らせ

皆様からは「えっさくらがVPSをやるの?」という声も多く頂いており、その反響の大きさに驚いています。
そもそも、昨年あった@ITの取材においては「劣化専用サーバとなるVPSはやらない」と豪語しており、同業者の会合でも「さくらはVPSやらない」と宣言していました。

大阪・堂島に、さくらインターネットの秘密を見た ?自前だからできる本当の差別化
http://www.atmarkit.co.jp/ad/sakurainet/200905/doujima.html

その理由としては、仮想化を行うより、専用サーバでとことん安くしたほうが良いのではないかという考えがあります。
コンソール機能や再起動などはIPMI(Keyboard VGA Mouse = KVM)によって専用サーバでも実現できますし、さくらの専用サーバについては、翌営業日納品も実現していますから、仮想サーバで無いとできないと思われていることも実現が進んできています。
また、仮想化することはオーバーヘッドを生むことにもつながり、CPUパワー度無駄にする側面もあります。

しかし、仮想化には代えがたい優位性があることも事実です。
例えば、専用サーバアドバンスドプランのQuadCore Xeon×2CPU構成の場合、初期費用無料で月額35,800円ですが、仮想化して8分割すれば1コアあたり4,475円となります。低価格専用サーバはAtom Z530を4,500円程度+初期費用で提供予定でしたが、ATOMの1コアとXeonの1コアだと仮想化のオーバーヘッドを考えてもXeonのほうが高速であり、さらには安価に提供できるという状況になってしまいます。
私自身がやっている某サイト(とある櫻花の画像生成)においても、データベースやリバースプロキシ、画像配信などを、仮想化を使って複数のサーバに分けて運用することにより、アクセス急増時も効率よくサーバ運営が出来たという経験があり、比較的安価にサーバ分割が出来る仮想化の利便性を知ることになりました。

結局、既存形態のサービスに固執するがあまり、さくらインターネットが本来強みとしていたITリテラシの高いユーザへのサービスへの魅力が薄れ、そのようなユーザが海外のクラウドや格安VPSへ流出し始める状況に至ります。

このような事から、仮想化の推進を行い、さらにVPSやIaaSへの拡大を進めていくことを決断し、第一号としてさくらのVPSを提供開始することとなりました。
4月末に「VPSやるぞ。でも全て自社開発で」と突然言い出してから、2カ月程度でベータ提供にこぎつけたのは社員の頑張りのおかげでもあり、大変感謝しています。
今後は、専用サーバのさらなるスペックアップと並行して、仮想化による柔軟性や手軽さを追求したサービスを拡大していきます。

なお、さくらのVPSの登場で既存の専用サーバが売れなくなるのではという意見もあります。
この意見については当然の事ですし確かに大きな影響があると考えていますが、今回のVPSを始めるにあたってはそのような影響を一切無視してサービスづくりを行いました。
専用サーバが売れなくなるのであれば、それは専用サーバの魅力が薄れていただけの話であり、その様なサービスは遅かれ早かれ他社(または海外)に駆逐されるだけだと考えています。

先にシェアを取っている会社は常に既存の売り上げとのバランスを考えがちです。
しかし、さくらのレンタルサーバにしても、専用サーバプラットフォームSTにしても、常に既存の売り上げに固執せず、新しい柱を創ることへ注力してきました。
ですので、今後も性能、品質、サポート、価格など全ての面に妥協することなく、さくららしいサービスを創っていくことを皆さんにお約束します。

ところで、さくらインターネットでは石狩へのデータセンター建設を進めております。
クラウド化する中で、インフラのコストパフォーマンスはさらに重要になってきており、高いコストパフォーマンスを実現できる理由としてのインフラ追求はますます必要です。
しかしながら、重要なのはインフラだけでなく上に乗るサービス自身もだと考えています。
今後は、インフラに、サービスに、全てのレイヤーを自前で行えるという強みを伸ばし、さらなるサービス拡充に努めてまいりますので、今後ともよろしくお願いいたします。

2010年07月17日

「さくらのVPS」を使ってみる

先日、「さくらのVPS」のベータテストが開始されました。
私も個人的にさくらのレンタルサーバを利用しているので、7月14日にフライングして申し込みしました。
(最終テスト中だったようで、社員にまじめに怒られてしまいましたが・・。スイマセン)

まず基本仕様


  • CPU 2コア

  • メモリー 512MB

  • HDD 20GB

  • ネットワーク 100Mbps(いちおうの上限)

  • リモートコンソール付き

  • 再起動、再インストールは、セルフサービスでコンパネから可能

ホスト側は、QuadCore Xeonで、1Gbpsにて上位スイッチに接続し、10Gbpsでさくらインターネットの基幹ネットワークに接続しています。
(クローズドベータテスト中に400Mbps位出たという記事もありましたが、さすがに対策する予定です)

ハイパーバイザーは、巷の格安VPSで多く利用される、VirtuaozzoやOpenVZ、Xenの準仮想化と異なり、KVMで完全仮想化になっています。
完全に512MBの実メモリを割当しますから、ホストOS側でスワップされずパフォーマンスが低下しないですし、ゲスト環境側でスワップを用意することも可能です。

実メモリは、ゲストで必要とするメモリ容量の1.5倍?2倍程度を搭載しています。
というのは、ホストOSのメモリの2/3以上をゲストに割り当てると、過負荷時のレスポンスが急激に悪化したり、不安定になったりということが言われており、当社でも再現されているので、余裕を持った設計にしています。
さらに、ホストOSのメモリの余裕を持たすことで、ディスクI/Oも劇的によくなります。
ゲストOSのスワップ時でも、ホストOSのキャッシュに入っていれば、メモリの延長上といえるかもしれません。

このように、100Mbpsインターフェース、20GBのHDD、2 CPU、512MBメモリといっても、同種のVPSサービスとは一線を画します。
その上で、「格安VPS」といえる価格帯で出す予定にしていますので、海外にも増してメリットのあるサービスになるのではと考えています。


と、宣伝はここまでにして、早速利用してみます。


まず、私が行ったのは、sshの公開鍵を設置してrootログインできないようにすることです。
申し込み直後は、ほぼ最新のパッチを当てて出荷されますので、いきなりクラックされることは考えなくてもよいと思いますが、なんとなく不安です。
(対策として、ネットワークをシャットダウンしたまま出荷するオプションを用意するなど、検討の余地があると考えています。)

ということで、ssh-keygenを行い、/etc/ssh/sshd_configにrootでのパスワードログインを禁止します。

[root@www10xxu ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
1b:f0: root@www10xxu.sakura.ne.jp
[root@www10xxu ~]#
/etc/ssh/sshd_config
変更前
PermitRootLogin yes
変更後
PermitRootLogin without-password
[root@www10xxu ~]# service sshd restart


次に無駄なデーモンをoffにします。
さくらのVPSの初期状態において脊髄反射で感じるのは「思いのほか空きメモリが少ない!」ということです。

ps -aux結果

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  10348   688 ?        Ss   Jul15   0:00 init [3]
root         2  0.0  0.0      0     0 ?        S<   Jul15   0:03 [migration/0]
root         3  0.0  0.0      0     0 ?        SN   Jul15   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S<   Jul15   0:00 [watchdog/0]
root         5  0.0  0.0      0     0 ?        S<   Jul15   0:01 [migration/1]
root         6  0.0  0.0      0     0 ?        SN   Jul15   0:00 [ksoftirqd/1]
root         7  0.0  0.0      0     0 ?        S<   Jul15   0:00 [watchdog/1]
root         8  0.0  0.0      0     0 ?        S<   Jul15   0:00 [events/0]
root         9  0.0  0.0      0     0 ?        S<   Jul15   0:00 [events/1]
root        10  0.0  0.0      0     0 ?        S<   Jul15   0:00 [khelper]
root        15  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kthread]
root        20  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kblockd/0]
root        21  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kblockd/1]
root        22  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kacpid]
root        90  0.0  0.0      0     0 ?        S<   Jul15   0:00 [cqueue/0]
root        91  0.0  0.0      0     0 ?        S<   Jul15   0:00 [cqueue/1]
root        94  0.0  0.0      0     0 ?        S<   Jul15   0:00 [khubd]
root        96  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kseriod]
root       168  0.0  0.0      0     0 ?        S    Jul15   0:00 [khungtaskd]
root       169  0.0  0.0      0     0 ?        S    Jul15   0:00 [pdflush]
root       170  0.0  0.0      0     0 ?        S    Jul15   0:00 [pdflush]
root       171  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kswapd0]
root       172  0.0  0.0      0     0 ?        S<   Jul15   0:00 [aio/0]
root       173  0.0  0.0      0     0 ?        S<   Jul15   0:00 [aio/1]
root       317  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kpsmoused]
root       361  0.0  0.0      0     0 ?        S<   Jul15   0:00 [ata/0]
root       362  0.0  0.0      0     0 ?        S<   Jul15   0:00 [ata/1]
root       363  0.0  0.0      0     0 ?        S<   Jul15   0:00 [ata_aux]
root       373  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kstriped]
root       386  0.0  0.0      0     0 ?        S<   Jul15   0:04 [kjournald]
root       407  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kauditd]
root       435  0.0  0.1  12672   764 ?        S<s  Jul15   0:00 /sbin/udevd -d
root      1059  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kmpathd/0]
root      1060  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kmpathd/1]
root      1062  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kmpath_handlerd]
root      1112  0.0  0.0      0     0 ?        S<   Jul15   0:00 [kjournald]
root      1429  0.0  0.1   5908   608 ?        Ss   Jul15   0:00 syslogd -m 0
root      1432  0.0  0.0   3804   424 ?        Ss   Jul15   0:00 klogd -x
dbus      1492  0.0  0.1  21256   964 ?        Ss   Jul15   0:00 dbus-daemon --system
root      1501  0.0  0.1   3800   580 ?        Ss   Jul15   0:00 /usr/sbin/acpid
68        1509  0.0  0.7  30604  3660 ?        Ss   Jul15   0:00 hald
root      1510  0.0  0.2  21692  1056 ?        S    Jul15   0:00 hald-runner
68        1518  0.0  0.1  12324   844 ?        S    Jul15   0:00 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket
68        1523  0.0  0.1  12324   848 ?        S    Jul15   0:00 hald-addon-keyboard: listening on /dev/input/event0
root      1532  0.1  0.1  10228   680 ?        S    Jul15   4:09 hald-addon-storage: polling /dev/hdc
root      1547  0.0  0.2  62624  1208 ?        Ss   Jul15   0:00 /usr/sbin/sshd
ntp       1558  0.0  0.9  23388  5028 ?        SLs  Jul15   0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root      1576  0.0  0.4  69004  2348 ?        Ss   Jul15   0:00 sendmail: accepting connections
smmsp     1584  0.0  0.3  59764  1800 ?        Ss   Jul15   0:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
root      1593  0.0  0.2  19708  1144 ?        Ss   Jul15   0:00 crond
root      1601  0.0  0.0  18732   456 ?        Ss   Jul15   0:00 /usr/sbin/atd
root      1615  0.0  0.2  52108  1332 ?        Ss   Jul15   0:00 login -- root
root      1616  0.0  0.0   3792   480 tty2     Ss+  Jul15   0:00 /sbin/mingetty tty2
root      1617  0.0  0.0   3792   484 tty3     Ss+  Jul15   0:00 /sbin/mingetty tty3
root      1628  0.0  0.0   3792   480 tty4     Ss+  Jul15   0:00 /sbin/mingetty tty4
root      1629  0.0  0.0   3792   480 tty5     Ss+  Jul15   0:00 /sbin/mingetty tty5
root      1640  0.0  0.0   3792   480 tty6     Ss+  Jul15   0:00 /sbin/mingetty tty6
root      1641  0.0  0.1   3800   536 ttyS0    Ss+  Jul15   0:00 /sbin/agetty -h 115200 ttyS0 vt100
root      1684  0.0  3.1 201952 15920 ?        SN   Jul15   0:00 /usr/bin/python -tt /usr/sbin/yum-updatesd
root      1686  0.0  0.2  12916  1160 ?        SN   Jul15   0:00 /usr/libexec/gam_server
root      1722  0.0  0.6  90320  3528 ?        Ss   Jul15   0:00 sshd: root@pts/0
root      1724  0.0  0.2  10932  1440 pts/0    Ss+  Jul15   0:00 -bash
root      1758  0.0  0.2  10928  1372 tty1     Ss+  Jul15   0:00 -bash
root     10606  0.0  0.6  91048  3380 ?        Rs   13:17   0:00 sshd: root@pts/1
root     10608  0.0  0.2  10932  1392 pts/1    Ss   13:17   0:00 -bash
root     10643  0.0  0.1  10460   876 pts/1    R+   13:38   0:00 ps -aux

まず、コンソール(mingetty)はこんなに要らないので、減らします。

/etc/inittabを以下のように編集


# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

デーモンも減らします。

[root@www10xxu ~]# chkconfig yum-updatesd off
[root@www10xxu ~]# chkconfig haldaemon off
[root@www10xxu ~]# chkconfig yum-updatesd off
[root@www10xxu ~]# chkconfig acpid off
[root@www10xxu ~]# chkconfig messagebus off

これで再起動すれば、ずいぶんとメモリの空きができます。
再起動後に確認すると、使用中は150MBとなっていました。もう少しがんばれば、もっと削減できそうです。


なお、unixbenchも実行してみました。
index scoreは1540.6ですので、そこそこ速いのではないでしょうか。

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

Version 5.1.2 Based on the Byte Magazine Unix Benchmark

Multi-CPU version Version 5 revisions by Ian Smith,
Sunnyvale, CA, USA
December 22, 2007 johantheghost at yahoo period com


1 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10

1 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10

1 x Execl Throughput 1 2 3

1 x File Copy 1024 bufsize 2000 maxblocks 1 2 3

1 x File Copy 256 bufsize 500 maxblocks 1 2 3

1 x File Copy 4096 bufsize 8000 maxblocks 1 2 3

1 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10

1 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10

1 x Process Creation 1 2 3

1 x System Call Overhead 1 2 3 4 5 6 7 8 9 10

1 x Shell Scripts (1 concurrent) 1 2 3

1 x Shell Scripts (8 concurrent) 1 2 3

2 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10

2 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10

2 x Execl Throughput 1 2 3

2 x File Copy 1024 bufsize 2000 maxblocks 1 2 3

2 x File Copy 256 bufsize 500 maxblocks 1 2 3

2 x File Copy 4096 bufsize 8000 maxblocks 1 2 3

2 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10

2 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10

2 x Process Creation 1 2 3

2 x System Call Overhead 1 2 3 4 5 6 7 8 9 10

2 x Shell Scripts (1 concurrent) 1 2 3

2 x Shell Scripts (8 concurrent) 1 2 3

========================================================================
BYTE UNIX Benchmarks (Version 5.1.2)

System: www1010u.sakura.ne.jp: GNU/Linux
OS: GNU/Linux -- 2.6.18-194.8.1.el5 -- #1 SMP Thu Jul 1 19:04:48 EDT 2010
Machine: x86_64 (x86_64)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz (5319.4 bogomips)
x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 1: Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz (5290.9 bogomips)
x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
10:15:43 up 1 day, 19:18, 2 users, load average: 0.02, 0.02, 0.00; runlevel 3

------------------------------------------------------------------------
Benchmark Run: Sat Jul 17 2010 10:15:43 - 10:43:56
2 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 14188657.9 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3011.2 MWIPS (9.8 s, 7 samples)
Execl Throughput 1775.5 lps (29.6 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 709457.6 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 210832.6 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1449865.3 KBps (30.0 s, 2 samples)
Pipe Throughput 1955338.6 lps (10.0 s, 7 samples)
Pipe-based Context Switching 259909.8 lps (10.0 s, 7 samples)
Process Creation 8795.8 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 4125.4 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1416.6 lpm (60.0 s, 2 samples)
System Call Overhead 3385128.4 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 14188657.9 1215.8
Double-Precision Whetstone 55.0 3011.2 547.5
Execl Throughput 43.0 1775.5 412.9
File Copy 1024 bufsize 2000 maxblocks 3960.0 709457.6 1791.6
File Copy 256 bufsize 500 maxblocks 1655.0 210832.6 1273.9
File Copy 4096 bufsize 8000 maxblocks 5800.0 1449865.3 2499.8
Pipe Throughput 12440.0 1955338.6 1571.8
Pipe-based Context Switching 4000.0 259909.8 649.8
Process Creation 126.0 8795.8 698.1
Shell Scripts (1 concurrent) 42.4 4125.4 973.0
Shell Scripts (8 concurrent) 6.0 1416.6 2361.0
System Call Overhead 15000.0 3385128.4 2256.8
========
System Benchmarks Index Score 1157.7

------------------------------------------------------------------------
Benchmark Run: Sat Jul 17 2010 10:43:56 - 11:12:10
2 CPUs in system; running 2 parallel copies of tests

Dhrystone 2 using register variables 27985122.2 lps (10.0 s, 7 samples)
Double-Precision Whetstone 5992.4 MWIPS (9.7 s, 7 samples)
Execl Throughput 7332.5 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 218518.6 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 63801.8 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 502186.1 KBps (30.0 s, 2 samples)
Pipe Throughput 3771938.1 lps (10.0 s, 7 samples)
Pipe-based Context Switching 775819.3 lps (10.0 s, 7 samples)
Process Creation 20049.5 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 9979.2 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1579.2 lpm (60.0 s, 2 samples)
System Call Overhead 5635202.3 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 27985122.2 2398.0
Double-Precision Whetstone 55.0 5992.4 1089.5
Execl Throughput 43.0 7332.5 1705.2
File Copy 1024 bufsize 2000 maxblocks 3960.0 218518.6 551.8
File Copy 256 bufsize 500 maxblocks 1655.0 63801.8 385.5
File Copy 4096 bufsize 8000 maxblocks 5800.0 502186.1 865.8
Pipe Throughput 12440.0 3771938.1 3032.1
Pipe-based Context Switching 4000.0 775819.3 1939.5
Process Creation 126.0 20049.5 1591.2
Shell Scripts (1 concurrent) 42.4 9979.2 2353.6
Shell Scripts (8 concurrent) 6.0 1579.2 2632.1
System Call Overhead 15000.0 5635202.3 3756.8
========
System Benchmarks Index Score 1540.6

と、雑多にまとめてみました。

なお、ただいまベータテスト中で、追加予定機能は山のようにあるので、状況を見ながらアップデートして行きたと思います。
ツイッターでもさまざまな要望を頂いていますが、ぜひ参考にさせていただきたいので、コンパネ上の「ご意見・ご要望」もご活用ください。

「さくらのVPS」はじまります

バレンタインデーのラックチョコ以来、ずいぶん更新をサボってしまいましてすいません。

最近、ツイッターで意見や感想を吐き出してしまうので、なかなかブログの更新ができておりませんでした。
どうも、考えが成熟する前に、小出しでつぶやいてしまうのがアカンです。
ブログで書くからウェブサイト更新をしなくなり、ツイッターでつぶやくからブログを書かなくなり、次はどうなるのでしょうか・・。

さて、さくらインターネットでは9月より「さくらのVPS」と称してVPS(仮想専用サーバ)サービスを始めることを発表し、さる7月15日よりクローズドベータテストを開始することになりました。
ただ、十分だろうと考えていた200ユーザ(急遽300ユーザに拡大)の枠があっという間にいっぱいになってしまい、すべての方に試用頂けていないことを深くお詫びいたします。
ついては、ベータテストのユーザ数を増やすべく、サーバーやラック、ネットワークの準備を進めることにしましたので、8月初旬より追加で募集が可能な見込みです。

今回のVPSを開始するにあたり、社内外から「さくらはVPSやらないんじゃなかったっけ?」という話をいただきました。
とある記事では、「劣化専用サーバとしてのVPSには競争力はない」などと豪語し、周りからは「さくらはVPSをやらない」と言われてきましたが、サーバ再起動やOS再インストール、コンソールといった、VPSならではの管理機能を搭載してリリースすることにしました。
今後、専用サーバにIPMIを搭載して、VPS同様に管理機能をサポートする予定であり、ハイスペックな専用サーバと、リーズナブルなVPSをハイブリッドで提供していくことにしています。
併せて時間課金などのシステム強化を行い、仮想サーバをベースとしたIaaSや、KVSなどのPaaSを拡大させて、さくらインターネットらしいクラウドサービスにしていく予定にしています。

さくらインターネットでは、先日発表した石狩データセンターによって米国と同様のコスト構造を手に入れるとともに、上記のようなクラウドサービスによるサービスの柔軟性を達成したいと考えています。
また、東京都心の1,000ラック以上を活用し、クラウド、ホスティング、ハウジングのハイブリッドサービスを追及していく予定です。
これらによって、海外にも通用し、日本国内においてはさらに優位性を発揮できる強いさくらインターネットを作り上げていきます。

2010年02月17日

ラックマウント型のバレンタインチョコ

先日はバレンタインデーでしたが、女性社員から、ある意味手作りなチョコレートをもらいました。

みる人が見ればわかる、そうラック型の箱に入ったチョコです。
ちなみに、ラックは手作りで、中にはチロルチョコが入っています。

以下は、ラックが並んだところ。

壮観ですね。

ただ、チョコはラックに乗っかっているだけなので、うっかりするとポロっと落ちてしまいます。
実際のデータセンターでも、ラックにマウントしていないお客様を見かけますが、サーバーがポロっと落ちたとなるとシャレになりませんから、地震対策用具などを活用して事故の無いようにお気を付け下さい。

ところで、嫁さんからは蛙チョコを貰いました。リアルです。
蛙チョコ

2010年02月16日

遅いHappy New Year!

先日、「さくらインターネットのサバ手ぬぐいが出来ました」を紹介しましたが、それに触発されて絵心を発揮する社員が増えてきました。
その中で、私の似顔絵の入った新年あいさつのはがきを作ってきたつわものがおり、せっかくなので紹介しておきます。

20100120-Happy%20New%20Year.JPG

ちなみに、なぜ電車の運転士かというと、私が電車好きであることをした上でのことだと思われます。
猫はうちでやってる、さくらのレンタルサーバのキャラだと思いますが、何とも胡散臭い仕上がりになっています。

本当は先月紹介されたのですが、なにはともあれ今年もよろしくお願いいたします。

2010年01月18日

kumofsを使う

最近KVS(Key-Value-Storage)が流行っていますが、うちの研究所においても「えとらぼ」さんと共同でkumofsの研究をしています。
色々とバギーなところも多いのですが、最新パッチを頂きながら、それなりに成果が出てきたようです。
kumofsの詳細については、さくらインターネット研究所に任せることにして、今回は一般にソースが公開されたこともあるので個人的にインストールした際のログを紹介します。


1. まず関連する諸ライブラリのインストール

libtoolのインストール
# yum install libtool

OpenSSLのインストール
# yum install openssl-devel

BZip2ライブラリのインストール(tokyo cabinetインストールのために必要)
# yum install bzip2-devel


2. msgpackのインストール

ダウンロード
http://msgpack.sourceforge.jp/

私は、msgpack-0.4.0.tar.gzをダウンロードしました。

ここで注意!
私の環境で ./configure && make した際、インストールは無事完了したものの、いざライブラリを使おうと思うと、__sync_sub_and_fetch_4が無いとのエラーが出ました。

kumofsの./configureをconfig.logより


configure:19500: checking for main in -lmsgpack
configure:19524: gcc -o conftest -O4 -Wall -O4 -L/usr/local/lib/ -mtune=i386 conftest.c -lmsgpack -lcrypto -lz -lpthread -lstdc++ >&5
/usr/local/lib/libmsgpackc.so.2: undefined reference to `__sync_sub_and_fetch_4'
collect2: ld returned 1 exit status
configure:19530: $? = 1

__sync_sub_and_fetchというのは、マルチスレッド環境下においてアトミックな加算処理を行うためのgcc組み込み関数ですが、なぜか_4が付いてしまっています。
これはgccの仕様で、引数の型を見て、その型のビット長を付けるためだと分かりました。
例えば今回の場合、4バイトなので 「_4」 をつけられています。
まあ、これはいいのですが、-march=i686をつければgccの挙動が変わるとのことなので、msgpackの./configure前には CFLAGSとCPPFLAGSにセットしておくことで回避しました。

# tar xvfz msgpack-0.4.0.tar.gz
# cd msgpack-0.4.0
# export set CFLAGS=-march=i686
# export set CPPFLAGS=-march=i686
# ./configure
# make
# make install

※参考になったサイト
仙石浩明の日記: __sync_bool_compare_and_swap_4 とは何か? ? glibc をビルドする場合は、 gcc の --with-arch=i686 configure オプションを使ってはいけない


3. tokyo cabinet のインストール

http://1978th.net/tokyocabinet/
私は、バージョン1.4.41をダウンロードしました。

# tar xvfz tokyocabinet-1.4.41.tar.gz
# cd tokyocabinet-1.4.41/
# ./configure
# make
# make install


4. kumofsのインストール

ダウンロードは、古橋さんのサイトからできます。
http://d.hatena.ne.jp/viver/20100118/p1

私は、githubよりkumofs-0.3.0 をダウンロードしました。


次に /usr/local/lib がライブラリに含まれるよう、環境変数をセット。
(私の場合、新しい環境だったので、これがないと cannot find -lmsgpack となりました)

# export set LDFLAGS=-L/usr/local/lib

早速ビルドを開始

# ./bootstrap
# ./configure
# make
# make install

とりあえず、インストールは完了したようです。

早速起動と行きたいところですが、また時間を見つけてクラスターを組んでみたいと思います。


なお、うちの研究所では型落ちのサーバを山のように用意して、実験をしているようですので、パフォーマンスなど実際のレポートは、そちらを期待してください。
私のほうでは、とりあえず画像生成サイトなど、個人的にやっているいくつかのサイトのバックエンドを、kumofsにしてみようかと思っています。
Apache用のmod_kumofsとかを作って、kumofsに格納されたバリューを、直接クライアントに返すなんてこともやってみたいところです。

将来的には、mysqlのように、共用サーバやクラウドでのインスタンス貸しをしてみたいものですね。

2010年01月01日

あけましておめでとうございます

皆様


あけましておめでとうございます。

旧年中は大変お世話になり、ありがとうございました。


公私共に、飛躍の年にしたいと思いますので、どうぞよろしくお願いいたします。


皆様にとってよい一年になることを、祈念しています。


2009年12月23日

とある櫻花の画像生成(ジェネレーター)

いろんな人たちから「何やってんだ(笑)」と言われつつも、とある櫻花の画像生成が完成しました。


http://to-a.ru


元ネタは言わなくてもお分かりいただけるでしょうが、某禁書目録や某超電磁砲のタイトル風画像を作れるだけのサイトです。
ちなみに、「とある画像の自動生成」というサイトが既にあるのですが、Silverlightベースなのでクライアントのインストールが必要ですし、そのほかにも改良したいところが多かったので、自分で作りました。

改良したところ

  • サーバでの生成方式に変えた
  • グラデーションの粒度を細かくした
  • すべての文字にアンチエイリアスをかけた
  • フォントを極太明朝に変えた(HG明朝E)
  • サーバへの保存機能を設けた
  • とある???で、3文字入力を可能にした→ ex. とあるラジオの超電磁砲

今回は、PHP+GDで書いたのですが、文字に斜めの滑らかなグラデーションをかけるのは意外と難しく、文字データとグラデーションを別個で作って、独自のルーチンで合成するということをしました。
ImageMagickのレイヤーを使えば簡単だと言う情報をさまざまな人から寄せられたのですが、「プログラマたるもの制約の中で最高のアウトプットを出さんとあかん」ということで、GDのままです。(といいつつ、「ここまで作ったしGDでいいや」ってのが本音ですww)

まず、グラデーションを生成するコード。

続きを読む "とある櫻花の画像生成(ジェネレーター)" »

2009年12月18日

さくらインターネットのサバ手ぬぐいが出来ました

営業部員の力作、さば手拭が完成しました。

専用サーバ、専用サーバ複数台構成、専用サーバプラットフォームを、何となく解説しています。
20091218-tenugui2.JPG

写真では少し見にくいかもしれませんので、画像バージョンで。

専用サーバは一匹だけのんびりインターネットにぶら下がっています。
専用サーバ複数台サーバは、インターネットにぶら下がったウェブサーバの下に、DBサーバがぶら下がっています。
専用サーバプラットフォームは、ファイアーウォールを介して、さまざまなサーバがネットワーク化されています。ちなみにDBサーバはローカル側にしかつながっていません。

サメも心なしか寂しそうにしていますね。


年末押し詰まる忙しい中とは思いますが、うちの営業が挨拶回りとともに配ってますので、笑顔で受け取ってもらえるとうれしいです。

ちなみに、専用サーババージョン。
20091218-tenugui1.JPG

2009年11月30日

サーバまるごと占有可能な「さくらのマネージドサーバ」登場!

本日、さくらのマネージドサーバATOMプランをリリースしました。
これは、従来より要望の多かった、さくらのレンタルサーバ占有版と言えるサービスです。

さくらインターネットは、専用サーバ1万台突破と、さくらのレンタルサーバの20万ユーザ突破を、相次いで達成しました。
現在、専用サーバにおいては、信頼性と自由度が高くエンタープライズ用途にも耐える「専用サーバプラットフォーム」や、よりリーズナブルに自由な構成を実現できる「専用サーバプラットフォームSt」、メーカー製のサーバを初期費用なしで利用できる「専用サーバアドバンスドプラン」、価格的なメリットを強調した「専用サーバエントリープラン」など、幅広い商品ラインナップでお客様のニーズにこたえてきました。
また、さくらのレンタルサーバについては、125円で利用できるライトプランのほか、ビジネスプランの投入によって性能や信頼性の向上を実現し、法人ユースにも耐える定番のホスティングサービスへと成長しました。
その上で、専用サーバのように専有できる形態でありながら、サーバ管理を自前で行わなくてもよいマネージド型サービスへの要望を多く頂いておりました。

そのため、専用サーバで培った信頼性と運用効率を生かしながら、さくらのレンタルサーバにおいて利用実績の高いホスティングシステムを搭載を活用した、さくらのマネージドサーバを投入することとなりました。

今回は、先行してATOMプランの投入となりましたが、今後さらにハイスペックなサーバを利用した上位プランの投入も予定しております。
申し込み受け付けは12月10日からですので、ぜひご利用ください。

新サービス「さくらのマネージドサーバ」Atomプラン提供開始のお知らせ
http://www.sakura.ne.jp/news/archives/20091130-002.news

Powered by
Movable Type