Subcribe via RSS

さくらVPSでシングルユーザモードに入る

2012/5/2 | Posted in centos, ubuntu

さくらVPSを利用していて、少し前に障害に伴ってOSの再起動がありました。
そしたら起動できなくなっちゃって、さくらVPSのサポートに問い合わせたところ、シングルユーザモードで起動する方法を教えてもらいました。
設定が何か間違っていて、マシン再起動時に立ち上がらないときは、シングルユーザモードで立ち上げて、問題の解決ができることがあります。

教えてもらったのはデフォルトのCentosの場合の方法で、カスタムOSは出来るかわかりません、ということでした。
自分はUbuntuなので、同じ方法ではうまく行かず、いろいろやったところ最終的には動いたけど結構はまりました。


※ 真似する場合は自己責任でお願いします。

まずCentosの方法


※ シングルユーザモードは「標準OS」をご利用いただいている場合の
操作方法のみのご案内となります。
 カスタムOSの場合、OSのインストール方法により内容が異なります
ため弊社ではご案内しておりません。
※ シングルユーザモードによるトラブルに関して、弊社では一切責任を
 負いかねます。

<シングルユーザーモード>

1.VPSコントロールパネルのホームを開き、再起動ボタンを押す。

2.すばやく、リモートコンソールボタンを押し、以下の画面で
 Enterキーを押す
 Connected to domain www****u.sakura.ne.jp
 Escape character is ^]

3.以下の画面で、更にEnterキーを押す。
 ※OSが起動してしまった場合は1.からやり直してください。
 ※2.の時から連続してEnterキー押下することでログインしやすくなります。
 Booting CentOS5 (2.6.**-***.**.*.***) in * seconds ....

4.GRUBが起動します。

 GNU GRUB version 0.9* (636K lower / 523244K upper memory)

5.ご利用のカーネルに合わせます。
 カーネルが複数表示される場合もございます。

6.[e]キーを押して editモードへ入り、カーソルキーで以下の行に合わせます。
kernel /vmlinuz-2.*.**-***.**.*.** ro root=LABEL=/ console=tty0 cons>

7.更に[e]キーを押して editモードへ入り、以下のように半角スペースと
 半角数字の「1」を入力し、Enterキーでeditモードから抜けてください。

 編集前
 le=tty0 console=ttyS0,115200n8r

 編集後
 le=tty0 console=ttyS0,115200n8r 1

8.GRUBの画面で[b]キーを押下しOSをリブートしてください。
 OSの起動が終了するまでしばらく待ちます。

9.以下の画面になれば、シングルユーザモードでログインされています。
 Telling INIT to go to single user mode.
 INIT: Going single user
 INIT: Sending processes the TERM signal
 INIT: Sending processes the KILL signal
 sh-3.2#
10.root状態でログインされていますので、サーバ内の調査をお願い
  いたします。



ubuntuの場合

1.VPSコントロールパネルのホームを開き、再起動ボタンを押す。

2.すばやく、リモートコンソールボタンを押し、以下の画面で
 F1とかF3とかその辺のキーを押しまくる
 Connected to domain www****u.sakura.ne.jp
 Escape character is ^]
3, うまくいくと以下のような画面になります。

QEMU

4, あとはrootでログインして、起動失敗している原因を調査します。



自分の場合は、nginxの設定にあるディレクトリが、再起動で消えるディレクトリを設定してしまっていて起動に失敗しているのが原因でした。


OS再インストールすることなく無事に復帰できたのでよかったです。




Tags: , ,

さくらVPSを512Mから1Gへ移行したメモ(ubuntu)

2012/4/8 | Posted in linux, server, ubuntu

このブログはさくらVPSで動かしてます。
同じ料金で、メモリ512Mのマシンからメモリ1Gのマシンに乗り換えられるということで、乗り換えました。
ディスク容量も20Gから100Gと増えてお得。

そのときのメモです。

OSのインストールまで

まず、契約します。

最初はcentosが入ってるけど、今までubuntuで使ってたから、新しいサーバもubuntuにします。
VPSコントロールパネルから、OS再インストール -> カスタムOSのインストール というところでサーバを選択します。

インストールを選ぶとVNSコンソールが開いて、そこからインストール画面にいきます。
(pluginを有効にしないとVNSコンソールが開かず、結構はまりました。)


インストーラは基本的には、適当に選んでいけばいいと思いますが、パーティション決めるところでは、
* Guided use entire disk
みたいなところを選ばないと、いつの間にかマシンのディスクが5Gしかないみたいなことになってハマるから注意

インストールの最後の方で、ログインするユーザとパスワードを決めます。
インストール終わったらログインしていろいろ設定します。


ディスクサイズの確認

一度いろいろ設定したあとにディスクサイズが10Gくらいしか割り当てられてないっていうことがあったので、ちゃんと確認します。
$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda1              96G  820M   90G   1% /
none                  498M  176K  497M   1% /dev
(以下略)
今回はよさそう。

とりあえず

とりあえず入れとくか、というものを入れる。
sudo aptitude install vim screen zsh curl git-core build-essential

ssh関連の設定

rootログインを禁止して、パスワードでのログインも止めて、ポートも変えておきます。

ローカルから公開鍵をscpでサーバへ。
(手元のpcで実行)
macbookair $ scp ~/.ssh/id_dsa.pub [username]@[ip]:

vpsにログインして
$ mkdir .ssh
$ cat id_dsa.pub >> .ssh/authorized_keys

これで、ログイン時にパスワードが聞かれないことを確認。

次にsshサーバの設定。
$ sudo vim /etc/ssh/sshd_config

変えた箇所の例
Port 23456 などに変える 
PermitRootLogin no
PasswordAuthentication no
UsePAM no

sshdの再起動
$ sudo service ssh restart


ファイアウォールの設定

ubuntuはufwっていうのを使って設定します。

今回は、さっき設定したsshと、あとでウェブサーバを立てるので80と443を開けて、他を閉じます。
設定ミスるとログインできなくなるので気をつけて。

今の状態を確認。
$ sudo ufw status
Status: inactive

sudo ufw default deny
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 

ufwを有効にする。
sudo ufw enable



他には、

をやりました。

そのあとDNSの切り替えをミスってて1日つながらなくなってた。


関連するサイト:




Tags: ,

ubuntu10.04にnginxとphp-fpmを入れてwordpress動かす

| Posted in ubuntu

前の構成ではspawn-cgiを使っていたけど、php-fpmを使ったほうがいい、らしいのでそうします。
nginxやphp5が予め入っている場合は、一度uninstall してからの方がよいかもです。

レポジトリの追加

$ sudo aptitude install python-software-properties
$ sudo add-apt-repository ppa:nginx/stable
$ sudo add-apt-repository ppa:brianmercer/php5
$ sudo aptitude update


インストール

$ sudo aptitude install nginx
$ sudo aptitude install php5 php5-cgi php5-cli php5-mysql php5-gd php-apc php5-fpm


php5-fpmの設定


変更するファイルは2つあります。

/etc/php5/fpm/php-fpm.conf
;変更箇所
;ログの場所を/var/log/php以下にする
error_log = /var/log/php/php5-fpm.log

;linuxなのでepoll指定
events.mechanism = epoll

/etc/php5/fpm/pool.d/www.conf
も編集
;同じサーバで動かすので、unix socketを使う
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/www.sock

;unix socket使えば必要ない気もするけど、ローカル以外から接続できないように。
listen.allowed_clients = 127.0.0.1

;slowログを出してみる
slowlog = /var/log/php/$pool.log.slow
request_slowlog_timeout = 2
request_terminate_timeout = 5
他のパラメータは、あとで検討する。

php5-fpmの起動
$ sudo service php5-fpm start



nginxの設定


nginxは普通に設定すればいいですが、先程のphp5-fpmにunix socketで接続するため、
fastcgi_pass   127.0.0.1:9000;
のようになっているところを、
fastcgi_pass    unix:/var/run/php-fpm/www.sock;
に変更します。

他の設定は以下のサイトなどを参考にやります。



以上です。
nginxの設定が複雑でよく分からなくなっているでの、次回は、
にあるような設定を入れたいです。



参考にしたサイト:




Tags: , , ,

SparkleShareでさくらVPSにオレオレDropboxを作る

2012/4/5 | Posted in linux, mac

さくらVPSを同じお値段で移行して、サーバの容量にかなり余裕ができたので、それを使って自分専用Dropbox的なことをやってみようと思いました。


使うのは、SparkleShare というオープンソースのソフト。

インストールは基本的には、上記サイトにあるようにやっていけば大丈夫です。

クライアントのインストール


まずは、クライアントを入れます。
Downloads · hbons/SparkleShareからダウンロードできます。
自分は、mac版を入れて、Applicationsに入れました。他にもLinux版とWindows版のクライアントもあります。

それを起動すると、以下のような画面でユーザ名とメールアドレスを入力します。
SparkleShare1
で、最後まで進めます。

すると、SparkleShare というディレクトリがホームフォルダにできています。
その中に、keyが書かれたファイルが作られています。

SparkleShare key
このファイルに書かれたkeyを後で使います。


サーバ側の設定

サーバ側では、gitというユーザを作って、そのユーザでSparkleShareを利用することにします。

以下のコマンドで、ユーザと、gitのプロジェクトと、.ssh以下のキーファイルを書くためのファイルの作成を行います。
MyProject は他の名前でも大丈夫です。
sudo adduser ––disabled-password git
sudo git init ––bare /home/git/MyProject
sudo mkdir /home/git/.ssh
sudo touch /home/git/.ssh/authorized_keys


ここで作られたauthorized_keysのファイルに、先程クライアント側でできたkeyのファイルに書かれた文字列をコピーします。

その後に、以下のコマンドを実行します。
sudo chmod 700 /home/git/.ssh
sudo chmod 600 /home/git/.ssh/authorized_keys
sudo chown -R git:git /home/git

以上で、サーバ側の設定は終わりです。


クライアントにサーバの設定を追加する

サーバの設定が終わったら、そのサーバの情報をクライアントに追加します。
まず、メニューバーにあるSparkleshareのアイコンをクリックして、 “Add Hosted Project” を選択します。

sparkleIcon
で、そこに今のサーバのアドレスと、先程サーバ側で作ったプロジェクトへのpathを入力します。
sshでデフォルトの22以外を使う場合は、以下のようにアドレスに続いてportを指定します。
SparkleShare3
これで、今までの設定があっていれば、うまく設定が完了します。

あとは、ファイルを~/SparkleShare/MyProjectに追加すれば、自動的にアップされます。


他のマシンで共有する場合は、新しいマシンにクライアントを入れて、そのクライアントのkeyをサーバのauthorized_keysに追記して、クライアント側でサーバの設定を入力すれば、OKです。


S3をバックエンドに持つDropboxのようなデータの冗長性はないですけど、サーバのディスクが余ってる人なら、Dropboxのような感覚で無料で使えるので試してみてもよいと思います。
また、外部のサービスにはデータ置けないっていう会社の人も、LAN内のサーバで運用するなどすれば使えるかもしれません。


関連しそうなサイト:





Tags: ,

stormのcluster環境のセットアップ& storm UIを試す (後編1: 1台で全て動かす)

2012/4/3 | Posted in storm

前回からだいぶ時間がたってしまいましたが・・・

前編はこちら


Stormのことを知りたい、あるいは開発環境の設定やローカルモードでの実行を知りたい場合は、下記の記事を参照してください。


前回はzookeeperやstormのインストールまで終わりました。
今回は、1台の中で、nimbusやsupervisorを動かして、stormを使ってみます。

Stormのクラスタの設定


stormの設定は、storm.yaml というファイルを作りますが、
stormのサーバの設定用のstorm.yaml と、クライアントの設定用のstorm.yamlがあるので注意が必要です。
サーバ用とは、stormを動かすための設定で、nimbusとsupervisorで通信したり、zookeeperとやりとりをするための設定です。
クライアント用とは、stormにtopologyを投入する時に、workerはいくつにする、などの設定です。


まず、server設定用を編集します。
server用の設定は、Stormをインストールしたディレクトリを$STORM_HOMEとしたとき、$STORM_HOME/conf にあります。
$ vi /usr/local/storm-*.*.*/conf/storm.yaml

zookeeperのIP, stormの一時ファイルの置き場、nimbus hostのIP, workerがどのポートを使うか(supervisor.slots.ports)、などを指定する必要があります。
開けるポートの数は、動かすworkerの数以上である必要があります。
とりあえず今回は
zookeeper: 同じマシンで1台
nimbus : 同じマシン

なので以下のような感じにします。

# storm.zookeeper.servers: 
# This is a list of the hosts in the Zookeeper cluster for your Storm cluster.
storm.zookeeper.servers:
- "127.0.0.1"
# - "localhost"
# - "127.0.0.1"

# If the port that your Zookeeper cluster uses is different than the default,
# you should set 'storm.zookeeper.port' as well.
# strom.zookeeper.port: 2181

# storm.local.dir: 
# The Nimbus and Supervisor daemons require a directory on the local disk
# to store small amounts of state (like jars, confs, and things like that).
# You should create that directory on each machine, give it proper permissions, 
# and then fill in the directory location using this config.
storm.local.dir: "/tmp/storm"

# java.library.path: 
# This is the load path for the native libraries that Storm uses (ZeroMQ and JZMQ).
# The default of "/usr/local/lib:/opt/local/lib:/usr/lib" should be fine for
# most installations, so you probably don't need to set this config.
# java.library.path:

# nimbus.host: 
# The worker nodes need to know which machine is the master in order to download
# topology jars and confs.
nimbus.host: "127.0.0.1"

# supervisor.slots.ports:
# For each worker machine, you configure how many workers run on that machine
# with this config. Each worker uses a single port for receiving messages, 
# and this setting defines which ports are open for use. If you define five ports here,
# then Storm will allocate up to five workers to run on this machine. If you define
# three ports, Storm will only run up to three. By default, this setting is configured
# to run 4 workers on the ports 6700, 6701, 6702, and 6703. 
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703

他にも設定できるパラメータはいくつかあります。
デフォルトでは defaults.yamlの値が使われます。

storm.local.dirを実際に作っておきます。
$ mkdir /tmp/storm

stormのクライアントの設定

stormのクライアント、stormクラスタに対してtopologyをsubmitする役割を持ちます。
そのため、その設定にはnimbusのIP addressが必要です。

stormのクライアントの設定は、
~/.storm/storm.yaml
に記述します。

~/.storm.yaml
nimbus.host: "127.0.0.1"

以上で設定は終わり。

storm-starterを動かしてみる

zookeeper, nimbus, supervisor, uiの順に立ち上げていきます。
uiとは、stormの処理の状態をwebから見えるようにするものです。デフォルトでポート8080を使います。

それぞれ15秒くらい待ってから立ち上げていくのがよいと思います。
$ zkServer.sh start
$ storm nimbus &
$ storm supervisor &
$ storm ui &


これでちょっと待ってから、ブラウザで接続して状態を見てみます。
以下のように表示されて、supervisor summaryのところに1台あれば、OKです。
Storm UI (storm uiにはtwitter bootstrapが使われてます。)

これで、無事にsupervisorが動いてることが確認できたので、実際にtopologyをsubmitしてみます。

とりあえず、Stormをlocalmodeで実行する で作成したstorm-starter.jarを使います。
storm-starterの中のExclamationTopologyを実行します。

ソースを見てもらえばわかりますが、このtopologyは引数があればクラスタ環境で実行され、その引数がtopologyの名前になります。
ということで、storm jar [jarの名前] [mainクラスの名前] [引数1]のようにすればtopologyをsubmitできます。
$ storm jar StormStarter.jar storm.starter.ExclamationTopology test
…..
[main] INFO  backtype.storm.StormSubmitter  - Jar not uploaded to master yet. Submitting jar...
37   [main] INFO  backtype.storm.StormSubmitter  - Uploading topology jar StormStarter.jar to assigned location: /tmp/storm/nimbus/inbox/stormjar-ea8d5f50-287e-4fcf-a371-81c84f465109.jar
53   [main] INFO  backtype.storm.StormSubmitter  - Successfully uploaded topology jar to assigned location: /tmp/storm/nimbus/inbox/stormjar-ea8d5f50-287e-4fcf-a371-81c84f465109.jar
53   [main] INFO  backtype.storm.StormSubmitter  - Submitting topology test in distributed mode with conf {"topology.workers":3,"topology.debug":true}
348  [main] INFO  backtype.storm.StormSubmitter  - Finished submitting topology: test
こんな感じでfinisedまで出れば、submitは成功です。


またブラウザでstorm UIを見てみると、Topology Summaryのところにtestという名前のtopologyが出てきます。
Storm UI 2

このtest をクリックすると、以下のような感じでtopologyの処理がどのくらい進んでるのか、各spoutやboltに対して見ることができます。
Storm UI3

topologyの処理を止めるには、storm kill [topology名]です。
$ storm kill test

nimbusやsupervisorやzookeeperを止めるには、
$ zkServer.sh stop
です。storm uiだけは止まらないので、手動でkillします。


ということで、無事にnimbusやsupervisorという仕組みを使ってstormを動かすことができました。
今回は1台でzookeeperからstormまですべて動かしていますが、次はいつか複数台での動かし方について書きます。
supervisorのノードでstorm.yamlにnimbusのIPをちゃんと書けばいいだけですが。。




Tags:
  • 書いてる人:

    Junichiro Takagi
    高木潤一郎

    http://tjun.jp
    t.junichiro@gmail.com

    技術的なメモを書いています。
    このブログは、会社とは関係なく個人の意見を書いています。

    RSS:


  • friendfeed: