メイン

サーバー アーカイブ

2006年07月11日

ロードバランサ(負荷分散装置)

「サーバーのトラフィックが増えたときに、負荷分散はどうやるのだろう?」という疑問を前から持っていたのだけど、ロードバランサ(負荷分散装置)というのもひとつの策らしい。

参考:
http://www.keyman.or.jp/search/network2/30000695_1.html?vos=nkeyadww10001882
http://www.atmarkit.co.jp/fnetwork/rensai/lb01/lb01.html (@IT)

----上記webサイトから引用----
ロードバランサとは、特定のサーバーが過負荷にならないようにクライアントからの要求を複数のサーバーに振り分ける機能を提供する製品。日本語に直すと負荷分散装置となる。
多種多様な機器、プロトコル、アプリケーションをサポートできるようになってきた。

1台あたり数千万円以上のハイエンドサーバーよりも、1台あたり100万円以下のIAサーバー(ローエンドサーバー)でトラフィック需要にきめ細かく対応していったほうが、コスト面では圧倒的に有利になる。

----上記webサイトから引用----


今回は深くまで読まなかったし、何かテストで動かしたわけではないけど、
今後負荷分散は絶対に当たる課題なので、メモ代わりに残しておきます。

POP3 サーバを構築

とある案件で、アイルホスティングサービスの専用サーバーのカスタムプランを利用していすのですが、本日ポップサーバーの設定を行いました。これで、クライアント(MUA)でメールの受信ができます。

参考:
http://fumika.jp/nikki/2003/05/pop

サーバーの環境:
OS : RedHat9
Webサーバー : httpd-2.0.40 (apache)
SMTPサーバー : Sendmail 8.12.8
postfix-1.1.11
POPサーバー : imap-2001a
....など。

以前、サーバー内でのメールの送受設定は行ったので、今回は「クライアントでメールを受け取る」ということを設定。
レンタルしている専用サーバーなので、ほとんどインストールしてあって楽勝ではありました(^^;

今回やったことは、「ipop3 を利用した POP3 サーバを構築」です。

1.「ipop3 は、imap のパッケージに含まれる」ということで、imap がインストールされているか確認です。
  --------------
   # rpm -q imap
   imap-2001a-18
  --------------
ちゃんとインストールされているようです(^^

2.ipop3 の設定
  「ipop3 は、単独では動作せず、xinetd 経由で動作します。
  xinetd 経由で動作するサービスは、/etc/xinetd.d/ ディレクトリに設定ファイルが置かれます。
  ipop3 の設定ファイルは、/etc/xinetd.d/ipop3 です。」
  ということなので、 /etc/xinetd.d/ipop3 を emacs で開いてみる。

  --------------------------------
# default: off
# description: The POP3 service allows remote users to access their mail \
# using an POP3 client such as Netscape Communicator, mutt, \
# or fetchmail.
service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += HOST DURATION
log_on_failure += HOST
disable = yes
}
  -----------------------------

  disable の値を no に変更します。 とあるので以下に変更。

  --------------------------------
# default: off
# description: The POP3 service allows remote users to access their mail \
# using an POP3 client such as Netscape Communicator, mutt, \
# or fetchmail.
service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += HOST DURATION
log_on_failure += HOST
# disable = yes
disable = no
}
  -----------------------------
  
  このあと、xinetd を再起動します。
  
  -----------------------------
# /etc/init.d/xinetd restart
xinetdを停止中: [ OK ]
xinetdを起動中: [ OK ]
  -----------------------------

これで、MUAでメールが受信できるようになりました(^^

はじめてのシェル、はじめてのバッチ処理

講義3日目。講義は毎度、新しい発見がありとても有意義です(^^
本日は4時間あり、内容もたっぷりでしたー。

本日の講義で思ったのが「僕ってホントに知識が浅くて、知らないところはトコトン知らないなー」ということでした。
専用サーバーを設定したり、Linuxのインストールや設定、Webページの作成など少ないながらも経験してきたけど、シェルをかくのがはじめてと言う(^^; なんとも順番がゴチャゴチャです。
本日はじめてシェルを書き、cron(クーロン)という存在を教えていただき、簡単なバッチファイルを作成しました。
うーん。僕にできる事がかなり広がった!これは大きな飛躍だ。かなりプログラミングの力が広がった気がする。
ゴチャゴチャしていた破片が一気に繋がった感じがする。
シェルはとってもすばらしい!

講義3日目にもなると、プログラミングへの認識がだいぶ変わった。プログラムへの認識だけでなく、問題の本質をつかむ力が良くなった気がする。

本日の講義内容。

○Unix(Linux。プログラマーによるプログラマーの為のOS)

Unixの歴史を紐解く、現在の「MacOS-X」がUnixベースだと言うのは驚き。
Linux誕生の経緯、過去にUnixが商用化していたこと、コンピュータゲームを作りたくてUnixを作ったことなど、歴史を紐解くと驚きがたくさんあります。
昔はコンピュータが貴重だったため、一台を複数人で利用していたこともあり、アクセス管理や権限やタイムシェアリングの概念はこの頃からあった。


○インターネットの母体
メール送信のプロトコルは、現在SMTPが主流だが、前はUUCPがよく利用されていたようだ。
そのほかにも、インターネットは色々なプロトコルから成り立っている。TCP/IPやPOPもそのひとつ。物理層やデータリンク層などなど。


○Linuxコマンド

Linuxのコマンドは普段から触っているけど、触ったことがない便利コマンドが出てきて良かった(^^

課題で、「あるフォルダ内にある.configのついたファイルの数を数えましょうー」というのがあったのだけど、サクッと出来ず(--;
うーん。コマンドを意外と知らないことが発覚。なければないでなんとかやってしまうが、それではイカンのです!

分からなければ、man [コマンド][コマンド] --help で確認しよう!

su
ls
cd
pwd
mkdir
rm
chmod
| (パイプ)
などは良く使っていたので知っていたが、

head
tail
history
[ファイル] > [ファイル]
wc
date
grep
bg
などは知らなかったので、これから使おうと思う!


○アクセス権
これはけっこう理解はしていたと思う。

ちょっと実験。
「まったくアクセス権がない(000)のフォルダの中に、すべてのアクセスが許された(777)ファイルがあります。そのファイル(777)に直接アクセスしたユーザーはファイルの中身を見れるでしょうか?」

答え:
できません。

上記が成立すると、とても面倒ですよね(^^; 良かった良かった。


○プロセス系コマンド

これも大変興味深かった。
ps
kill
bg
fg


○システム管理系コマンド
df
top
passwd
adduser


○シェルスクリプト

本日僕が一番注目した内容。
シェルコマンドは何種類かあるらしい。( bsh csh bash zsh )

シェルスクリプトは、コマンドをまとめて書いて、一気に実行できるもの。
なんども同じ作業を繰り返す、コマンドはシェルスクリプトを書いて実行すると良い。
さらに、cronと組み合わせて定期的に実行することも可能(これをバッチ処理と言う)。

この「シェル」と「cron」の組み合わせはすごい!
これができるようになったおかげで、ものすごくプログラムの幅が広がった!
さっそく、本日バックアップを取るシェルを作成し、cronで定期的に実行してみた。
バッチ処理完成。うーん。これは大いなる進歩だ。


○ネットワーク(TCP/IP)とインターネット の基本技術

ネットワークはなかなか奥深い・・・。
僕は、レイヤーの意識がまだ薄いので、そのへんをつめてゆきたい。

・IPで接続される機器は32bitのIPアドレスを持つ。
・IPアドレスは 202.248.237.106 のように8bit毎に区切った10進数で表す。
・IPのパケット単位で、ルーターを経由しながら伝わる。

プロトコル「TCP」は
破損せずデータが渡るように、工夫されている。
プロトコル「UDP」は
データがしっかりと渡るかどうかは保障しないが早い。


○ポート番号
これは、Apacheなどでポートの指定の設定をしたこともあるし、少しは分かっているつもり(^^;


○DNS
・IPアドレスは覚え難いので、サーバーに名前を付けるサービスDNS を利用できます。
・サーバー名の右端 (国コードまたは comなど)はトップレベルドメイン(TLD)と呼ばれ、TLD単位でサーバー名(ドメイン名)の管理が行なわれています。例) .jp は JPNIC
・サーバー名→IPアドレスの変換は頻繁に行われるので、プロバイダーや各サーバーで変換情報を分散管理したり、キャッシュしたりしています。


○telnetの利用
telnet はあまり利用したことがない(^^;
ほとんど、特定のポートに接続して利用していたので、
80や25といった、同じソフトからポートを変えて、利用することはあまりなかった。
sendmail や webサーバーとtelnetでの会話は少々面倒だけど、
会話の内容が分かると、「ここでこんなデータを取得しているんだ!」という事が分かる。


やはり基本です。すべては基本の中にいますねー。

2006年07月31日

sendmail 転送設定

●「 .forward 」 を用いたメール転送

メールを転送したい場合は、自分のホームディレクトリ内に「 .forward 」ファイルを置きます。
hoge@xxxxx.net
\hoge

この例では、hoge@xxxxx.netに転送すると共にhogeアカウントにもメールを保存することを意味します。

「\」は、自分自身にメールがループされないようにするためのもので、必ず記述しましょう。

なお、パーミッションは「 600 」に設定してください。


参考: http://uguisu.skr.jp/Windows/forward.html

2006年12月04日

固定IPアドレスの設定

本日やったので、メモ。

・環境
cent os 4.4

・修正したファイル
/etc/sysconfig/network-scripts/ifcfg-eth0

・ファイルの修正前(DHCPでIPアドレスを取得するようになっている)
---------------------------------------
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=****** ←ここはMACアドレスなので、一応伏せておく
ONBOOT=yes
TYPE=Ethernet/
---------------------------------------

・ファイル修正後(固定IPを設定する)
---------------------------------------
DEVICE=eth0
BOOTPROTO=static
BROADCAST=10.20.138.255
IPADDR=10.20.138.3
NETMASK=255.255.255.0
NETWORK=10.20.138.0
ONBOOT=yes
TYPE=Ethernet
---------------------------------------

・修正後、再起動

これで、10.20.138.3 でアクセスできるようになる。

2006年12月08日

ipconfigメモ

こちらに、なかなか良い一覧あり。

http://www.atmarkit.co.jp/fnetwork/netcom/ipconfig/ipconfig.html

2006年12月11日

boot時に立ち上げるメモ(Linux)

※boot時に立ち上げる(再起動のときに立ち上げる)
chkconfig --level 3 httpd on
chkconfig --level 5 httpd on
chkconfig --level 3 postgresql on
chkconfig --level 5 postgresql on

2006年12月12日

Linux コマンドメモ

ポートの確認

netstat

2006年12月13日

各ディレクトリの役割を知ろう(ルートディレクトリ編)

Linuxのディレクトの役割についてメモ

/   ルートディレクトリ
├ /bin 基本コマンド
├ /boot 起動に必要なファイル
├ /dev デバイスファイル
├ /etc 設定ファイル
├ /home(オプション) ユーザーのホームディレクトリ
├ /lib 共有ライブラリ
├ /lib(オプション)  
├ /mnt 一時的なマウントポイント
├ /opt 追加アプリケーション
├ /proc(Linux固有) プロセス情報など
├ /root(オプション) root用ホームディレクトリ
├ /sbin システム管理用コマンドなど
├ /tmp 一時的なファイル
├ /usr 各種プログラムなど
└ /var 変更されるデータ


参考 : http://www.atmarkit.co.jp/flinux/rensai/theory02/theory02a.html

2006年12月15日

runlevel 変更について

実際に起動する際に、どのランレベルが使用されるかは、
 
/etc/inittab
 
の中に記載されている、設定値により決定されます。
inittab中には、
  
id:5:initdefault:
 
等の設定がされています。
この場合、runlevel:5が設定されている事となります。
起動する際のデフォルトのrunlevelを変更したい場合は、5と設定されている値を上記のrunlevelの何れかの値とします。
 
なお、/etc/inittabにデフォルト値が設定されているが、起動時に、runlevelを変更したい場合は、
 
PC起動後の下記のメッセージが表示されたときに、

LILO boot:linux 1

とします(大文字のところを入力する)。
ここで、何も値の設定をしない場合は、先の説明通り/etc/inittabで設定されている値での起動となります。
 
また、O/S起動後に、runlevelの値を変更したい場合は、ルート権限(root)にてログオンし直し、telinit [runlevel]とコマンドを入力します。


参考:http://claris.hp.infoseek.co.jp/basic/runlevel_1.html

2006年12月25日

Linuxにどの様にパーティションが区切られていて、どれ位使われているのかを調べる

例:

#df -h
ファイルシステム サイズ 使用中 空き 使用% マウント場所
/dev/hda2 18G 748M 16G 5% /
/dev/hda1 45M 13M 30M 30% /boot
使用しているLinuxのパーティションが表示されます。
HDDのサイズ、使用量、マウント場所など分かって便利。

参考:http://www.miloweb.net/partition.html

2007年02月07日

DBバックアップシェルスクリプトとcron

シェルスクリプト

-----------------------------------------------
#!/bin/sh
bak=`date +%y%m%d`
mkdir -m 700 /home/postgres/backup/$bak

cp /home/postgres/backup/file.txt /home/postgres/backup/$bak/inquiry_db_backup.$bak
/var/local/pgsql/bin/pg_dump inquiry > /home/postgres/backup/$bak/inquiry_db_backup.$bak
chmod 400 /home/postgres/backup/$bak/inquiry_db_backup.$bak
-----------------------------------------------

Point!
pg_dump は絶対パスで書くこと!


cron
http://park15.wakwak.com/~unixlife/linux/sys-cron.html
http://d.hatena.ne.jp/NekoDaisuki/20061117

set cron

1. login postgres
2. crontab -e
3. open vi
4. 0 4 * * * /home/postgres/backup/bak.sh


cron 実行コマンド作成ツール
http://www.japan9.com/cgi/cron.cgi

2007年02月14日

サーバーの時間設定

日時関連のコマンド

date
日時表示など

cal
カレンダー表示

ntpdate
日時修正


# ntpdate 133.100.9.2


http://www.hayagui.com/ntp.html

2007年02月16日

touch

unixコマンドで新しく空のファイルを作成する方法

touch [filename]


http://www.atmarkit.co.jp/flinux/rensai/linuxtips/080mknullfile.html

Linux 日付 n日前表示

date --date 'n days ago' '+%y%m%d'

http://rutake.ddo.jp/wiki/?UNIX%2Fcommon%2F%BE%AE%A5%CD%A5%BF#r26e8c60

2007年02月19日

サーバー情報を表示する dig

dig [@サーバ] ドメイン [クエリタイプ] [クエリクラス] [-オプション] [%コメント]


dig コマンドでは、DNS(Domain Name Server)からのさまざまな情報を表示させることができます。 dig コマンドには2つのモードがあり、対話モードでは1つの問い合わせを、バッチモードでは複数の問い合わせを実行できます。

オプション

%コメント "%" を利用するとコマンド上にコメントを記述できる
-T time バッチモードで実行する際の問い合わせ間隔を秒数(time)で指定。
デフォルトは0秒。
-f file ファイルに問い合わせ内容を記述
-p port 標準以外のポート番号(port)を利用するサーバーに対してポート番号を指定。デフォルトは53.

http://cmd.misty.ne.jp/refference/dig.html

2007年02月20日

ディレクトリコピー

ディレクトリの複製を作成するには「cp コマンド」を使用します。
コマンドの書式は以下のようになります。

cp -r コピー元ディレクトリ名 新ディレクトリ名

「cp コマンド」を「r」オプションをつけて実行するとディレクトリをコピーできます。 カレントディレクトリ内のファイル・ディレクトリが、新ディレクトリ名の中に丸まるコピーされます。

http://cmd.misty.ne.jp/file/index.html

2007年02月27日

その2:DDoS 攻撃? 確認をどうする

ニコニコ動画さんなど、昨今話題のDDoS攻撃。

自分に降りかかったときはちゃんと対応しないと!
http://itpro.nikkeibp.co.jp/article/COLUMN/20070221/262715/

2007年03月02日

qmail-inject: fatal: unable to run qmail-queue

--------------------------------------------------
「unable to run qmail-queue」は、メール送信機能の同時利用数が制限値に達している、待ちキューが一杯という場合に表示されます。
ある程度余裕を持たせて設定していますが、突発的な大量送信や、迷惑行為などにより、送信するメールの数が多くなりますと、送信待ちのメール数が一杯になる事があります。
その場合、それ以上のメールを次々と無条件に受け入れますと、サーバー自体のパフォーマンス低下、障害につながりますので、いったん新規受付を拒絶し、エラーを出し、利用を制限します。
--------------------------------------------------

・・・共有サーバーを利用していると、上記のような悲しい自体が・・・シクシク。
やっぱ専用サーバーだよな・・・。


http://sb.xrea.com/showthread.php?t=11576

2007年03月15日

NagiosでWebサーバを頑丈にする方法

なぎおす

http://www.atmarkit.co.jp/fnetwork/tokusyuu/22tool/02.html

カレンダー


2007年05月
Su Mo Tu We Th Fr Sa
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Map

About サーバー

ブログ「プログラマ 福重 伸太朗 ~基本へ帰ろう~」のカテゴリ「サーバー」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはオブジェクト指向全般です。

次のカテゴリはセキュリティです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。