Home > サーバ構築

2011.01.17

[CentOS5.5]KVMでのbridge接続設定方法

過去にエスキュービズムの開発環境について書いたことがありましたが、弊社では社内の開発環境ではバリバリ仮想サーバを使っています。

昨年あたり、具体的にはCentOS5.4(たしかそうだったと思います)から、パッケージの標準モジュールとしてKVMが組み込まれたのを機に、XenからKVMへと仮想化手法を切り替えました。KVMはインストール時に選択するだけでサクッと入るため、非常に簡単なのですが、そのままでは使えないんです。

というのも、標準では子機は親機とのNAT接続しか許可されてないためです。

これでは仮想サーバをたくさん作っても、外からつなげませんよね。ということで、Brige接続の設定を行います。

(more…)

2010.09.10

エスキュービズムの開発環境と仮想化技術

最近、世の中では仮想化だの、クラウドだのと騒がれていますが、
今日はエスキュービズムの開発環境について、ちょっとご紹介したいと思います。

(more…)

2010.08.28

screenとは?【初心者入門編】

screen とは、1つのターミナル内に、
複数の擬似ウィンドウを開くことが出来るようにするソフトウェアです。

歴史ある技術ですので、ほぼどのLinux環境にも使えて、動作も安定、
設定・操作も手軽で済むため、多くのエンジニアに重宝されています。
ターミナル用のソフトですが、サーバへインストールするものです。

今更の内容ですが、復習も兼ねてまとめてみることにしました。

ちなみに、タイトルに「初心者入門編」と書いていますが、
少なくとも自分は2年間、この内容だけで便利に使えています。
(まー、自分はかなり開発環境に無神経な方ですが)

(more…)

2010.05.28

スパム対策への対策

皆さんはYahoo!アカウントにメールを送ったけれど届かなかったり、またはYahoo!アカウントでメールを受信する際にメールがなりすましメールと扱われた経験は無いでしょうか?

これは、Yahoo!メールがSPFと呼ばれるスパム対策技術を導入しているためです。

(more…)

2010.05.20

PostgreSQLでレプリケーション -pgpool-

PostgreSQLでDBをレプリケーションなど負荷分散機能を使用したい場合の選択肢の一つとしてpgpoolがあげられます。

現在pgpool-IIとしてLinuxをはじめ、SolarisやFreeBSDなどのほとんどのUNIX環境で動作します。残念ながらWindowsでは動きません。対応するPostgreSQLのバージョンは、PostgreSQLの6.4以降です。ただしパラレルクエリモードを使用するときはPostgreSQL 7.4以降になります。

どこがいいの?何が出来る?

1. アプリケーション側での接続方法は通常のPostgreSQLへの接続方法と同じ

クライアント側からは通常のPostgreSQLサーバとして見えます。ポート番号やホストをpgpoolへ変更するだけで接続できます。

2. 言語を限定しない

PostgreSQLサーバとして接続する為、PostgreSQLに接続できる言語(PHP, Perl, Javaなど)ならどれでも使用できます。

3. フェイルオーバー機能

PostgreSQLサーバを2台指定しておくことにより,マスタがダウンした際に自動的にセカンダリのサーバに切り替えることができます。

4. レプリケーション機能

複数のPostgreSQLサーバを管理することができます。レプリケーションを使用することにより、物理的に2台以上のディスクに リアルタイムでハードディスクのバックアップを取ることができ、万が一どれかのディスクに障害が発生しても運用を継続することができます。

5. 負荷分散機能

レプリケーションモードで動作している場合「負荷分散」を行うことができます。

6. 接続数の制限が可能

PostgreSQLへの接続数をPostgreSQLがもっとも効率良く動作する同時接続数で維持することができます。

7. コネクションプーリング

PostgreSQLへの接続を保存しておき、再利用することによってPostgreSQLへの接続オーバヘッドを低減でき、システム全体のスループット を向上させることができます。

インストール

ここではソースからインストールする方法をご紹介します。

./configure
make
make install

デフォルトのインストール先は, /usr/local以下で以下のようなファイルがインストールされます。

/usr/local/bin/pgpool プログラム本体
/usr/local/etc/pgpool.conf.sample 設定ファイルサンプル

インストール先を変更する場合は,configure –prefix=path… としてください。

pgpool.confを設定

/usr/local/etc/pgpool.conf.sampleファイルを/usr/local/etc/pgpool.confにコピーします。
pgpool.confでは空白行や#で始まる行はコメントと見なされます。以下抜粋します。

1: # pgpool-IIへのアクセスを許可するネットワークやアドレスを指定する
2: listen_addresses = ‘*’ # ‘*’を設定すると、無条件で接続可能
3: port = 9999 # pgpool-IIのアクセスポート
4: pcp_port = 9898 # pgpool-IIの制御用アクセスポート
5:
6: # pgpool-IIをレプリケーションモードで起動
7: replication_mode = true
8:
9: # ノード0 => サーバpostgres0の情報を設定
10: backend_hostname0 = ‘192.168.1.100′ # サーバpostgres0のIPアドレス
11: backend_port0 = 5432 # PostgreSQLのポート番号
12: backend_weight0 = 1
13: backend_data_directory0 = ‘/usr/local/pgsql/data’ # ベースディレクトリ
14:
15: # ノード1 => サーバpostgres1の情報を設定
16: backend_hostname1 = ‘192.168.1.101 # サーバpostgres1のIPアドレス
17: backend_port1 = 5432 # PostgreSQLのポート番号
18: backend_weight1 = 1
19: backend_data_directory1 = ‘/usr/local/pgsql/data’ # ベースディレクトリ

PCP コマンドの設定

pgpool-II では PCP コマンドと呼ばれるインタフェースを通して pgpool-II の停止やデータベースノードに関する情報の表示を行います。 PCP コマンドを使用するにはユーザ認証が必要になるので、ユーザ名とパスワードを pcp.conf ファイルに設定します。 pcp.conf ファイルの書式は以下のように 1 行ごとにユーザ名と MD5 ハッシュに変換されたパスワードを : で区切ったものです。

postgres:e8a48653851e28c69d0506508fb27fc5

pgpool-II をインストールするとサンプルとして pcp.conf.sample ファイルが作成されるので、それを pcp.conf というファイル名にコピーしてから編集するといいでしょう。

cp /usr/local/etc/pcp.conf.sample /usr/local/etc/pcp.conf

また、PCP コマンドはネットワークを通して実行されるので、pgpool-II が PCP コマンドを受け付けるポート番号を pgpool.conf
ファイルの pcp_port パラメータに設定します。ここでは、pcp_port パラメータに最初から設定されているポート番号 9898 をそのまま使用します。

pcp_port = 9898

起動と停止

起動するには以下のように コマンドを実行します。

pgpool -n &

以下のようにすることでログメッセージをファイルに保存できます。(-d オプションはデバッグメッセージの出力を有効にします。)

pgpool -n -d > /tmp/pgpool.log 2>&1 &

停止するには以下のコマンドを実行します。

pgpool stop

通常は停止する際にクライアントが接続している場合、その接続が切断されるまで待ってから停止します。 強制的に停止するには以下のを実行します。

pgpool -m fast stop

使用してみる

後は普通のPostgreSQLと同様の使用方法になります。もちろんpsql使用できます。

ポートやホストを変更している場合は

psql -p xxx -h xxx db_name

として入ってください。状態を確認するには

show pool_status

で確認できます。特に障害などで萎縮運転をしているときに現在マスタとセカンダリどちらが動いているか確認できます。

後はほぼ普通の使用方法と変わりません。気をつけることはnow()を使用してのタイムスタンプカラムなどの更新はDB間で値がずれて不整合が起こる可能性が大きいので控えることでしょうか。(書き込むタイミングがサーバ間で厳密には同時ではない為)

その他

pgpool-IIからはオンラインリカバリを実施できます。(PostgreSQLにライブラリを追加します)←こちらは使用したこと無いので今回はパスします。

以上、簡単にPostgreSQLをレプリケーション運用できますので、一度試してみてはいかがでしょうか?

2010.03.26

はじめてのシェルスクリプト

エンジニアなら誰しも一度は、

  • DBのバックアップを定期的に取って、特定のストレージに保存したい
  • 特定のフォルダに生成される一時ファイルを定期的に消したい
  • ユーザ追加の際の諸々の作業を自動化したい

なんてことを考えたことがあるのではないでしょうか。

こんなときに役立つのが【シェルスクリプト】なわけですが、その他のプログラミング言語とは書き方が若干異なるため、少しとっつきにくさを感じる方もいらっしゃるのではないでしょうか。

そんなわけで、シェルスクリプトの基本の基本を書いてみました。

(more…)

2010.03.11

公開鍵、秘密鍵ってなに?

セキュアな通信で使われる公開鍵、秘密鍵ってどこまで理解していますか?

暗号化に素因数分解の困難性を利用してることはよく聞くかもしれません。

しかし、実際、素因数分解しただけではそんな鍵は出てこなそうです…

もう少しだけ、どのような仕組みかをみていきたいと思います。

(more…)

2010.02.21

expectで楽できたら…

作業してると―――

 sshで接続→別のサーバへ接続→更に別のサーバへ…

なんてことはないでしょうか。

接続先にrsh入れることに問題ないのであれば、
それでもいいんですが多くの場合そうもいかず。

大抵は「ログイン用の手順を保存しておいてコピペ」で済ますんですが、
長い人生それすらも煩わしくなる時もあり。

そんな時はコイツで手間を省いてみたりしてます。

(more…)

2009.11.20

はじめて使う Google Apps

GAEが盛り上がってきた昨今、まずは Google Apps を使うところから初めよう!
・・・と、今更ながら Google Apps を触りはじめました。

触って気付いたのですが、
個人・小規模グループレベルなら、まず無料で済み、登録・操作も簡単。
数多ある安いサーバーの違う管理画面を開く位なら、
むしろ、これで統一した方がいいんじゃない? と感じました。
 
(more…)

2009.08.27

Nginx + PHP(FastCGIモード)で最速なwebサーバ

Nginx + PHP(FastCGIモード)で最速なwebサーバを構築します。
大体の内容は中国の張宴ブログ を参照して翻訳したものです。

Nginx(エンジンエックス)とは
軽量高性能なWebサーバ/リバースプロキシであり、同時に電子メール(IMAP/POP3)プロキシであります。
nginx は当初、Ramblerが運営する各種ウェブサイトのニーズを満たすために開発された。2009年5月のネットクラフトの調査によれば、nginx は6,342,250のドメインで使われており、Webサーバとしてのシェアは第5位であります。

中国とアメリカで、すでに一般的に使われています。
(more…)

Next »