ボーダーレスライフ

興味を持ったインターネットサービスや技術について書いています

さくらのVPSへお引越し

さくらインターネットのレンタルサーバスタンダードで rails を使ってみたところ、パフォーマンスが非常に悪い事や、railsのバージョンアップがもう出来ない等の問題が見えてきました。(参考:Ruby on Rails on さくらインターネットのその後・・)

結局、rails を使うなら、もうVPS環境に引っ越さなければいけないので、安くて良いVPSサービスは無いかと調べ始めたところ、9月1日から、さくらインターネットでもVPSサービスを始めた事を知りました。 (参考:http://vps.sakura.ad.jp/ )

@IT Special PR:なぜ今さくらがVPS参入? 田中社長に聞いた には興味深い事が書かれています。

物理サーバはQuadCore Xeon搭載機。各インスタンスには512MBのメモリと2GBのスワップを割り当てる。実は格安VPSの中にはスワップが設定されていないために、ちょっとした作業でメモリ不足となりプロセスが止まることがある。一方、さくらのVPSでは、そうした心配がない。さらに、物理ホストが持つメモリの8割程度しか仮想環境に割り当てていないため、各インスタンスは実質的に700~800MB程度のメモリを使っても、まだスワップ利用によるディスクI/Oが発生せず、一時的にメモリ使用量が512MBを超えた場合でもパフォーマンス低下は避けられるという。それとは別に、余剰メモリはディスクキャッシュにも使われるため、仮想インスタンス上でのディスクの読み書きを行う操作が快適ということもある。
仮想化を使ったVPSサービスでは、こうした“下”の構成が見えづらい。このため格安サービス提供者は、さくらのように余裕を持たせた設計とは逆に、仮想インスタンス間でメモリページを共有させることのほうが多いという。最近では「オーバーコミットメント」と呼ばれる、物理ホストのメモリ量を超えてインスタンスにメモリを割り当てる機能のために、パフォーマンス低下が問題となることもあるという。

また、こちらも興味深いです。

仮想化インフラには、Linuxカーネルのモジュールとして実装された「KVM」(Kernel-based Virtual Machine)を採用。競合の多くが商用の仮想化インフラで先行する中、さくらはライセンス料がかからないオープンソースで追う形だ。実績という面では先行するXenやVMwareに分があるが、KVMはLinuxカーネルと一体である分、開発リソースも多く集まりつつあり、将来性の高さは抜群だ。
「KVMは商用サービスでの実績面ではまだまだですが、社内では以前から他システムで使い倒しており、ノウハウ蓄積の面では十分です。なにより、(他の仮想化インフラよりも)速いですしね」(田中社長)

¥980/月であり、2週間の無料お試しも出来る事から、まず使ってみようと思い契約してみました。
これが良ければ、スタンダード契約を全て解除しこちらのみを使おうと思っています。

VPSは、スタンダードと違い自由度があって良いのですが、OSの設定、特に不正アクセス対策を自分でしっかりとやっておかなければいけません。 そこで変更した設定内容をここに残しておきます。

rootのパスワードを変更します。

[root@hostname ~]# passwd
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@hostname ~]#

ユーザを作成しwheelに属させます。

[root@hostname ~]# useradd foo
[root@hostname ~]# passwd foo
Changing password for user foo.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@hostname ~]# usermod -G wheel foo
[root@hostname ~]#

auth required pam_wheel.so use_uid 行のコメントを外します。(wheelグループのみrootにsu可能に)

[root@hostname ~]# vi /etc/pam.d/su
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid
auth            include         system-auth
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so

wheelグループに権限を付与します。

[root@hostname ~]# visudo
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

作成したユーザにsuし、公開鍵を設置する為に.sshディレクトリを設置します。

[foo@hostname ~]$ ls -aFl
drwx------ 2 foo foo 4096 Sep 11 15:45 ./
drwxr-xr-x 3 root root 4096 Sep 11 13:29 ../
-rw-r--r-- 1 foo foo   33 Sep 11 13:29 .bash_logout
-rw-r--r-- 1 foo foo  176 Sep 11 13:29 .bash_profile
-rw-r--r-- 1 foo foo  124 Sep 11 13:29 .bashrc
[foo@hostname ~]$ mkdir ./.ssh
[foo@hostname ~]$ chmod 700 ./.ssh/
[foo@hostname ~]$ cd ./.ssh/
ここに公開鍵をauthorized_keysとして設置します
[foo@hostname .ssh]$ chmod 600 ./authorized_keys

sshの認証方法を公開鍵認証とし、パスワード認証を禁止します。

[foo@hostname ~]$ sudo vi /etc/ssh/sshd_config
#RSAAuthentication yes ←ssh1の設定なので無視します
PubkeyAuthentication yes ←コメントを外します
AuthorizedKeysFile      .ssh/authorized_keys ←コメントを外します
PasswordAuthentication no →コメントを外した上で yes を no にします
↑ これが2行ある事を不思議に思いましたが、書き換えの必要があるという意味だろうと思います

rootで直接ログイン出来ない設定である事を確認します。

[foo@hostname ~]$ sudo vi /etc/ssh/sshd_config
#PermitRootLogin yes

あまり意味ないかもしれないですが、ポートスキャン対策でsshのポート番号を変更します。

[foo@hostname ~]$ sudo vi /etc/ssh/sshd_config
#Port 22
Port テキトーな数字

sshの設定を読み直させます。

[root@hostname ssh]# sudo service sshd restart
Stopping sshd: [  OK  ]
Starting sshd: [  OK  ]
[root@hostname ssh]#

不要なデーモンを停止させる為、デーモンの状態をチェックします。

[foo@hostname ~] /sbin/chkconfig --list
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
anacron         0:off   1:off   2:off   3:off   4:off   5:off   6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
autofs          0:off   1:off   2:off   3:off   4:off   5:off   6:off
avahi-daemon    0:off   1:off   2:off   3:off   4:off   5:off   6:off
avahi-dnsconfd  0:off   1:off   2:off   3:off   4:off   5:off   6:off
bluetooth       0:off   1:off   2:off   3:off   4:off   5:off   6:off
conman          0:off   1:off   2:off   3:off   4:off   5:off   6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
cups            0:off   1:off   2:off   3:off   4:off   5:off   6:off
dnsmasq         0:off   1:off   2:off   3:off   4:off   5:off   6:off
dund            0:off   1:off   2:off   3:off   4:off   5:off   6:off
firstboot       0:off   1:off   2:off   3:off   4:off   5:off   6:off
gpm             0:off   1:off   2:off   3:off   4:off   5:off   6:off
haldaemon       0:off   1:off   2:off   3:off   4:off   5:off   6:off
hidd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
irda            0:off   1:off   2:off   3:off   4:off   5:off   6:off
irqbalance      0:off   1:off   2:off   3:off   4:off   5:off   6:off
kudzu           0:off   1:off   2:off   3:off   4:off   5:off   6:off
lvm2-monitor    0:off   1:on    2:off   3:off   4:off   5:off   6:off
mcstrans        0:off   1:off   2:off   3:off   4:off   5:off   6:off
mdmonitor       0:off   1:off   2:off   3:off   4:off   5:off   6:off
mdmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
messagebus      0:off   1:off   2:off   3:off   4:off   5:off   6:off
microcode_ctl   0:off   1:off   2:off   3:off   4:off   5:off   6:off
multipathd      0:off   1:off   2:off   3:off   4:off   5:off   6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
netfs           0:off   1:off   2:off   3:off   4:off   5:off   6:off
netplugd        0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
nfslock         0:off   1:off   2:off   3:off   4:off   5:off   6:off
nscd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
oddjobd         0:off   1:off   2:off   3:off   4:off   5:off   6:off
pand            0:off   1:off   2:off   3:off   4:off   5:off   6:off
pcscd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
portmap         0:off   1:off   2:off   3:off   4:off   5:off   6:off
psacct          0:off   1:off   2:off   3:off   4:off   5:off   6:off
rawdevices      0:off   1:off   2:off   3:off   4:off   5:off   6:off
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
readahead_early 0:off   1:off   2:on    3:on    4:on    5:on    6:off
readahead_later 0:off   1:off   2:off   3:off   4:off   5:on    6:off
restorecond     0:off   1:off   2:off   3:off   4:off   5:off   6:off
rpcgssd         0:off   1:off   2:off   3:off   4:off   5:off   6:off
rpcidmapd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
rpcsvcgssd      0:off   1:off   2:off   3:off   4:off   5:off   6:off
saslauthd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
smartd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
tcsd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
wpa_supplicant  0:off   1:off   2:off   3:off   4:off   5:off   6:off
xfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
ypbind          0:off   1:off   2:off   3:off   4:off   5:off   6:off
yum-updatesd    0:off   1:off   2:off   3:off   4:off   5:off   6:off

不要なデーモンを停止させます。

[foo@hostname ~]$ sudo /sbin/chkconfig acpid off
[foo@hostname ~]$ sudo /sbin/chkconfig auditd off
[foo@hostname ~]$ sudo /sbin/chkconfig autofs off
[foo@hostname ~]$ sudo /sbin/chkconfig avahi-daemon off
[foo@hostname ~]$ sudo /sbin/chkconfig bluetooth off
[foo@hostname ~]$ sudo /sbin/chkconfig cups off
[foo@hostname ~]$ sudo /sbin/chkconfig firstboot off
[foo@hostname ~]$ sudo /sbin/chkconfig gpm off
[foo@hostname ~]$ sudo /sbin/chkconfig haldaemon off
[foo@hostname ~]$ sudo /sbin/chkconfig hidd off
[foo@hostname ~]$ sudo /sbin/chkconfig kudzu off
[foo@hostname ~]$ sudo /sbin/chkconfig lvm2-monitor off
[foo@hostname ~]$ sudo /sbin/chkconfig mcstrans off
[foo@hostname ~]$ sudo /sbin/chkconfig mdmonitor off
[foo@hostname ~]$ sudo /sbin/chkconfig messagebus off
[foo@hostname ~]$ sudo /sbin/chkconfig netfs off
[foo@hostname ~]$ sudo /sbin/chkconfig nfslock off
[foo@hostname ~]$ sudo /sbin/chkconfig pcscd off
[foo@hostname ~]$ sudo /sbin/chkconfig portmap off
[foo@hostname ~]$ sudo /sbin/chkconfig rawdevices off
[foo@hostname ~]$ sudo /sbin/chkconfig restorecond off
[foo@hostname ~]$ sudo /sbin/chkconfig rpcgssd off
[foo@hostname ~]$ sudo /sbin/chkconfig rpcidmapd off
[foo@hostname ~]$ sudo /sbin/chkconfig smartd off
[foo@hostname ~]$ sudo /sbin/chkconfig xfs off
[foo@hostname ~]$ sudo /sbin/chkconfig yum-updatesd off

デーモンをチェックします。

[foo@hostname ~]$ /sbin/chkconfig --list
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
acpid           0:off   1:off   2:off   3:off   4:off   5:off   6:off
anacron         0:off   1:off   2:off   3:off   4:off   5:off   6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
autofs          0:off   1:off   2:off   3:off   4:off   5:off   6:off
avahi-daemon    0:off   1:off   2:off   3:off   4:off   5:off   6:off
avahi-dnsconfd  0:off   1:off   2:off   3:off   4:off   5:off   6:off
bluetooth       0:off   1:off   2:off   3:off   4:off   5:off   6:off
conman          0:off   1:off   2:off   3:off   4:off   5:off   6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
cups            0:off   1:off   2:off   3:off   4:off   5:off   6:off
dnsmasq         0:off   1:off   2:off   3:off   4:off   5:off   6:off
dund            0:off   1:off   2:off   3:off   4:off   5:off   6:off
firstboot       0:off   1:off   2:off   3:off   4:off   5:off   6:off
gpm             0:off   1:off   2:off   3:off   4:off   5:off   6:off
haldaemon       0:off   1:off   2:off   3:off   4:off   5:off   6:off
hidd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
irda            0:off   1:off   2:off   3:off   4:off   5:off   6:off
irqbalance      0:off   1:off   2:off   3:off   4:off   5:off   6:off
kudzu           0:off   1:off   2:off   3:off   4:off   5:off   6:off
lvm2-monitor    0:off   1:on    2:off   3:off   4:off   5:off   6:off
mcstrans        0:off   1:off   2:off   3:off   4:off   5:off   6:off
mdmonitor       0:off   1:off   2:off   3:off   4:off   5:off   6:off
mdmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
messagebus      0:off   1:off   2:off   3:off   4:off   5:off   6:off
microcode_ctl   0:off   1:off   2:off   3:off   4:off   5:off   6:off
multipathd      0:off   1:off   2:off   3:off   4:off   5:off   6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
netfs           0:off   1:off   2:off   3:off   4:off   5:off   6:off
netplugd        0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
nfslock         0:off   1:off   2:off   3:off   4:off   5:off   6:off
nscd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
oddjobd         0:off   1:off   2:off   3:off   4:off   5:off   6:off
pand            0:off   1:off   2:off   3:off   4:off   5:off   6:off
pcscd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
portmap         0:off   1:off   2:off   3:off   4:off   5:off   6:off
psacct          0:off   1:off   2:off   3:off   4:off   5:off   6:off
rawdevices      0:off   1:off   2:off   3:off   4:off   5:off   6:off
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
readahead_early 0:off   1:off   2:on    3:on    4:on    5:on    6:off
readahead_later 0:off   1:off   2:off   3:off   4:off   5:on    6:off
restorecond     0:off   1:off   2:off   3:off   4:off   5:off   6:off
rpcgssd         0:off   1:off   2:off   3:off   4:off   5:off   6:off
rpcidmapd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
rpcsvcgssd      0:off   1:off   2:off   3:off   4:off   5:off   6:off
saslauthd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
smartd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
tcsd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
wpa_supplicant  0:off   1:off   2:off   3:off   4:off   5:off   6:off
xfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
ypbind          0:off   1:off   2:off   3:off   4:off   5:off   6:off
yum-updatesd    0:off   1:off   2:off   3:off   4:off   5:off   6:off

と、普通にサーバの設定をするのと同じですね。私の場合、職場ではFreeBSDしか使っておらず、linux(CentOS)は初めて利用したので、少し新鮮な感覚がありました。

後から直す部分はあるかと思いますが、とりあえずこんな感じで使い始めてみようと思います。

rails で何か作るってところまで、なかなか進まないな・・。

投稿者: Hide ( Hidenori Suzuki )

9月 12, 2010 at 2:44 am