さくらの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 で何か作るってところまで、なかなか進まないな・・。
