Archive for 3月, 2010

atコマンドの使い方

金曜日, 3月 26th, 2010

いつも時間の指定を忘れてぐぐるのでメモ。

at 22:30 1/22/10
at> shutdown -h now
at> <EOT>
job 4 at 2010-01-22 22:30

下記コマンドで実行内容を確認もできる。

cat /var/spool/at/a0000101417e8a

未来時間を設定したい時に補助的にdateコマンド

date --date '10 days'
さらに蛇足で過去に日付
date --date '10 days ago'

LVSの作り方

水曜日, 3月 24th, 2010
wget http://keepalived.org/software/keepalived-1.1.18.tar.gz
tar xzvf keepalived-1.1.18.tar.gz
cd keepalived-1.1.18
./configure --with-kernel-dir=/usr/src/kernels/2.6.18-164.6.1.el5-x86_64
make rpm
rpm -ivh --test /usr/src/redhat/RPMS/x86_64/keepalived-1.1.18-5.x86_64.rpm
rpm -ivh  /usr/src/redhat/RPMS/x86_64/keepalived-1.1.18-5.x86_64.rpm
rpm -ql keepalived

ipvsadmはyumでポン

kernelパラメータでフォワーディング許可する
echo 1 > /proc/sys/net/ipv4/ip_forward 

もしくは/etc/sysctl.confに追記
net.ipv4.ip_forward = 1
sysctl -p

#サービス追加 
ipvsadm -A -t <VIP>:<ポート> -s <バランスアルゴリズム>

ipvsadm -A -t 192.168.0.201:80 -s rr
-A 追加 -t 適用するフロントIP -s スケジューラの指定(rrでラウンドロビン)
#サービス削除
ipvsadm -D -t 192.168.0.201:80
#別のスケジューラで再度追加
ipvsadm -A -t 192.168.0.201:80 -s lc (コネクションが少ないところに割り振る)
ipvsadm -a -t 192.168.0.201:80 -r 192.168.0.111:80 -g -w 1
ipvsadm -a -t 192.168.0.201:80 -r 192.168.0.112:80 -g -w 1

#設定を保存

/etc/init.d/ipvsadm save

/etc/sysconfig/ipvsadmファイルに保存される。

/etc/init.d/ipvsadm status <=> ipvsadm -L -n
#ただし起動スクリプトの92行目をコメントアウトしないとエラーになるので、注意。
ActiveConn:現在アクティブなセッションの数

InActConn:接続が完了してから一定時間内のセッションの数

realサーバー(バックエンドのwebサーバ)のiptablesをサービスとして起動してないとだめ。

iptables -t nat -I PREROUTING -d 192.168.0.201 REDIRECT

lbサーバもiptablesを起動しておく。

iptables -t mangle -I PREROUTING -d 192.168.0.201 -j MARK --set-mark 1

#keepalivedの起動オプションについて

cat /etc/sysconfig/keepalived
-S 1 #このオプションをつける事でsyslogのファシリティをつけれる。

#追記 2010/05/27

keepalivedでvrrp使って冗長化するならこれ絶対いれないとダメ

vrrpパケットをiptablesで許可する事!

これがないとMASTERとBACKUPの両方で仮想IPを持ってしまう。

動作的にはあまり問題がなさそうだけど。。


proxyをする役割nLVSですがバックエンドの台数や、アクセスが一カ所に集中するため、iptablesで管理するテーブル数を越えてしまう場合があります。

そうすると有無を言わさずパケットは捨てられます。バックエンドに余裕があっても拒否してしまう勿体ない状況を回避しましょう。
CentOS5系と6系では設定の値が違うので注意しましょう。
sysctl -a | grep ip_conntrack_max
デフォルト値
net.ipv4.netfilter.ip_conntrack_max = 65536
5系:
net.ipv4.netfilter.ip_conntrack_max = 65536
6系:
net.netfilter.nf_conntrack_max = 524288

設定はどちらも/etc/sysctl.confです。

net.netfilter.nf_conntrack_max = 524288

編集後はsysctl -pで反映させます。次回OS再起動時からは読み込んでくれます。

 

rsyslog導入について

木曜日, 3月 18th, 2010

Cent5.3を使ってます。

rsyslogの公開されているパッケージが古いので、作る。

src.rpmはrikenから持ってくる事ができるので、ここから作りましょう。

yum -y install rpm-build

kernel-develが入ってない場合はあらかじめいれましょう。

wget http://ftp.riken.jp/Linux/fedora/updates/12/SRPMS/rsyslog-4.4.2-1.fc12.src.rpm

rpm -ivh rsyslog-4.4.2-1.fc12.src.rpm –test

rpm -ivh rsyslog-4.4.2-1.fc12.src.rpm

error発生

error: unpacking of archive failed on file /usr/src/redhat/SOURCES/rsyslog-4.4.2-unlimited-select.patch;4b9f459f: cpio: MD5 s
um mismatch

回避方法

rpm -ivh rsyslog-4.4.2-1.fc12.src.rpm –nomd5

ユーザがいないとか言われるけど無視。

spceファイルのいじりたいとこをいじったらrebuild

rpmbuild -bs /usr/src/redhat/SPECS/rsyslog.spec

rpmbuild –rebuild /usr/src/redhat/SRPM/rsyslog-4.4.2-1.fc12.src.rpm  #specファイルのなかでバージョンとか適当に変えると例のようなsrpmのファイル名にはなりません

rpm -ivh /usr/src/redhat/RPMS/x86_64/rsyslog-<version>.rpm –test

rpm -ivh /usr/src/redhat/RPMS/x86_64/rsyslog-<version>.rpm

完了。

コンパイル時の環境変数について

火曜日, 3月 16th, 2010

LDFLAGS ライブリのファイル or ディレクトリ指定

LD_FLAGS=”-L /usr/loca/hoge/lib”

LD_FLAGS=”-l /usr/loca/hoge/hoge.lib”

パス指定の前の”L”が大文字だとディレクトリ指定

小文字だとファイル指定になる。

findオプションについて

木曜日, 3月 4th, 2010

特定のオーナーやグループを見つける時のオプション

find . -user <owner> -group <group>