zabbix 初期環境構築
はじめに
centos5.6環境に、統合監視パッケージzabbixを利用した監視環境を構築する。
zabbixのバージョンは 1.8系ではなく、1.6系 を利用することにした。
まずは、サーバ&エージェント環境を1台のサーバのみで行う。
ここでは、初期環境の構築メモを残す。
環境構築
パッケージ準備
リポジトリパッケージ インストール
- ダウンロード
zabbix-jpが提供しているリポジトリパッケージをダウンロード。
# wget http://www.zabbix.jp/binaries/relatedpkgs/rhel5/i386/zabbix-jp-release-5-3.noarch.rpm # rpm -ivh zabbix-jp-release-5-3.noarch.rpm
zabbixパッケージ インストール
公式サイトに記述されている通り、下記のパッケージをインストールする。
# yum install zabbix zabbix-agent zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql 〜 ===================================================================================== Package Arch Version Repository Size ===================================================================================== Installing: zabbix x86_64 1.6.9-3.el5.JP zabbix-jp 11 k zabbix-agent x86_64 1.6.9-3.el5.JP zabbix-jp 245 k zabbix-server x86_64 1.6.9-3.el5.JP zabbix-jp 5.6 M zabbix-server-mysql x86_64 1.6.9-3.el5.JP zabbix-jp 243 k zabbix-web x86_64 1.6.9-3.el5.JP zabbix-jp 1.2 M zabbix-web-mysql x86_64 1.6.9-3.el5.JP zabbix-jp 9.4 k Installing for dependencies: OpenIPMI-libs x86_64 2.0.16-11.el5_7.2 updates 571 k fping x86_64 2.4b2-16.el5.JP zabbix-jp-relatedpkgs 34 k iksemel x86_64 1.4-2.el5 epel 48 k mysql x86_64 5.5.16-1.el5.remi remi 7.4 M mysql-libs x86_64 5.5.16-1.el5.remi remi 1.1 M mysqlclient15 x86_64 5.0.67-1.el5.remi remi 1.3 M php-bcmath x86_64 5.3.8-1.el5.remi remi 40 k php-gd x86_64 5.3.8-1.el5.remi remi 209 k php-mbstring x86_64 5.3.8-1.el5.remi remi 2.3 M php-mysql x86_64 5.3.8-1.el5.remi remi 160 k php-pdo x86_64 5.3.8-1.el5.remi remi 118 k t1lib x86_64 5.1.2-1.el5.rf rpmforge 388 k unixODBC x86_64 2.2.11-7.1 base 835 k
MySQL環境構築
mysql-serverパッケージをインストールした上で、MySQL環境を構築。
mysql-server インストール
yumでインストールし、my.cnf設定をしておく。
# yum install mysql-server # cp -p /etc/my.cnf /etc/my.cnf.org # vim /etc/my.cnf [client] port = 3306 [mysqld] # zabbix 向けに下記2つのパラメータ設定は必須。 # mysql5.5の場合は、default-character-set ではなく、character_set_server で指定すること。 character_set_server = utf8 #default-character-set = utf8 skip-character-set-client-handshake max_connections = 150 thread_cache_size = 8 sort_buffer_size = 4M table_open_cache = 4096 max_allowed_packet = 16M default_storage_engine = InnoDB server-id = 1 port = 3306 log-bin = mysql-bin expire_logs_days = 5 innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 1 innodb_flush_method = O_DIRECT innodb_buffer_pool_size = 64M innodb_log_buffer_size = 8M innodb_log_file_size = 128M key_buffer_size = 1M query_cache_type = 1 query_cache_size = 16M slow_query_log = 1 long_query_time = 1.0 # mysql_install_db # chown -R mysql:mysql /var/lib/mysql/ # /etc/init.d/mysqld start
zabbixDB向けデータ投入
パッケージに付属しているSQLファイルを利用し、テーブル/データ投入を行う。
- テーブル作成
zabbix DB内にテーブル作成するためのSQLを修正。
※mysql5.5では、テーブル作成時のエンジン指定に、TYPE は利用できなくなっており、
ENGINE を指定する必要があるため。
# mv /usr/share/doc/zabbix-server-1.6.9/schema/mysql.sql /usr/share/doc/zabbix-server-1.6.9/schema/mysql.sql.org # cat /usr/share/doc/zabbix-server-1.6.9/schema/mysql.sql.org | sed -e 's/type\=InnoDB/ENGINE\=InnoDB/g' > /var/tmp/mi.txt
- data SQL投入
# mysql -u root -D zabbix -p < /usr/share/doc/zabbix-server-1.6.9/data/data.sql
apache環境設定
初期設定を行うので、zabbix.conf.php ファイルを退避しておく。
退避が完了したら、apache再起動しておく。
# mv /etc/zabbix/zabbix.conf.php /etc/zabbix/zabbix.conf.php.org #
zabbix初期設定
管理画面(http://[対象サーバ]/zabbix/)にアクセスし、tutorialに従い設定を進める。
Webインターフェース設定の際にエラーとなるが、下記のようにパーミッション変更する事で対処可能。
# chmod 777 /etc/zabbix/
管理画面へのアクセス
Tutorial通りの設定が完了したら、管理画面へのログインを行う。
- 初期ID:admin
- 初期PW:zabbix
管理画面TOPページでのエラーメッセージ対策
初回ログイン時に、画面上に以下のメッセージが表示される。
将来的に利用できなくなる ereg関数などの警告メッセージだが、影響はないため、
対処として、zabbixのエラーハンドラをコメントアウトする。
# vim /usr/share/zabbix/include/config.inc.php - set_error_handler('zbx_err_handler') + //set_error_handler('zbx_err_handler')
zabbix-server用config設定
パラメータ修正を行い、サービスを起動する。
# cp -p /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.org # vim /etc/zabbix/zabbix_server.conf - DBPassword=zabbix + #DBPassword=<password> # Connect to MySQL using Unix socket? - DBSocket=/var/lib/mysql/mysql.sock + #DBSocket=/var/lib/mysql/mysql.sock # /etc/init.d/zabbix-server start
zabbix-agent用config設定
パラメータ設定を行い、サービスを起動する。
サーバ環境では特に修正の必要がなかったので、そのままサービス起動する。
# /etc/init.d/zabbix-agent start
ipvsadm、RPMパッケージ作成
pukiwikiに慣れ過ぎて、はてな記法に慣れないな...。
はじめに
centos5.6で、LVS環境を構築するにあたり、ipvsadmのRPMパッケージを作成する。
Baseリポジトリ提供のipvsadm RPMでは、IPVS v1.2.0対応となっているための処置。
現状確認
今回、LVS環境を構築するサーバ環境は以下の通り。
-
- OS :centOS5.6
- kernel:2.6.18-274.3.1.el5
- ipvsadm RPMパッケージインストール
まず、Baseリポジトリで提供されているRPMをインストールし、バージョン確認。
# yum install ipvsadm
# rpm -qa | grep ipvsadm
ipvsadm-1.24-13.el5
#
# ipvsadm -v
ipvsadm v1.24 2003/06/07 (compiled with popt and IPVS v1.2.0)
#
- kernel内のip_vsバージョン確認
LVS環境と同じkernelソースを用意し、ip_vsのバージョンを確認。
※ここでは、build環境で kernel-develを入れて確認した。
# yum install kernel-devel
# grep VERSION_CODE /usr/src/kernels/2.6.18-274.3.1.el5-x86_64/include/net/ip_vs.h
#define IP_VS_VERSION_CODE 0x010201
#
ip_vsの1.2.1に対応したipvsadm RPMパッケージを作成することにする。
- 参考
勉強不足のため根本理由が把握できていないが、下記klabさんの記事によると、
「ipvsadmをコンパイルしたときのIPVSのバージョンと、
kernelのIPVSのバージョンが異なっていると期待した動作をしないことがある」
とのことで、ip_vsの1.2.1に対応したipvsadm RPMパッケージを作成することにした。
DSAS開発者の部屋 -こんなに簡単! Linuxでロードバランサ (1)-
RPM作成
- ソースファイルのダウンロード
RPMの作成はbuild環境で行う。
こちらのサイトから、LVS環境のkernelに適応したバージョンのsrcRPMを取得する。
# cd /usr/local/src/
# wget http://www.linux-vs.org/software/kernel-2.6/ipvsadm-1.24-6.src.rpm
# rpm -ivh ipvsadm-1.24-6.src.rpm
- RPM作成
rpmbuildで、RPMパッケージを作成する。
$ cd /usr/src/redhat/SPECS/
$ rpmbuild -ba ./SPECS/keepalived.spec
エラー: 旧来の構文はサポートされません: copyright
エラー: 7 行目: 不明なタグ: Copyright: GNU General Public Licence
$
ほう、rpm4.1以降では、ライセンスの定義を行うタグが「Copyright」から「License」に変更されたために発生する模様。
specファイルで以下の修正をする。
$ vim ./SPECS/keepalived.spec
- Copyright: GNU General Public Licence
+ License: GNU General Public Licence
$
改めて、rpmbuild。
$ rpmbuild -ba ./SPECS/keepalived.spec
〜
libipvs.c:23 から include されたファイル中:
libipvs.h:14:23: error: net/ip_vs.h: そのようなファイルやディレクトリはありません
In file included from libipvs.c:23:
〜
RPM ビルドエラー:
/var/tmp/rpm-tmp.73389 の不正な終了ステータス (%build)
$
調査したところ、こちらの掲示板で make時にkernelソースを見に行くとの情報があったので、
kernelソースのシンボリックリンクを作成して、再度rpmbuildしてみる。
# ln -s /usr/src/kernels/2.6.18-274.3.1.el5-x86_64 /usr/src/linux
$ rpmbuild -ba ./SPECS/keepalived.spec
ipvsadmのサポートするip_vsバージョン確認
LVS環境にインストールする前に、build環境で作成したRPMパッケージをインストールし、
サポートするip_vsのバージョンを確認する。
# rpm -ivh /usr/src/redhat/RPMS/x86_64/ipvsadm-1.24-6.x86_64.rpm
# ipvsadm -v
ipvsadm v1.24 2005/12/10 (compiled with popt and IPVS v1.2.1)
#
次は、これまでに作成した ipvsadm と keepalivedパッケージを利用して、
LVS環境を構築する。
LVS環境構築
はじめに
centos5.6で、LVS環境を構築する。
環境構成は、以下の通り。LVSはNATではなく、DSRで稼働させる。
------------- -------------------|client(AWS)| | ------------- Global IP1 Global IP2 ~~~~~~~~~~ Internet ~~~~~~~~~~ | -------- |router| -------- | ------------------------------------------------------------- | | | | | ---VIP:192.168.1.30-- | | | | | | | | 192.168.1.22 192.168.1.23 192.168.1.20 192.168.1.21 192.168.1.18 -------- -------- -------- -------- -------- | LVS1 | -- VRRP -- | LVS2 | | web1 | | web2 | | sorry | -------- -------- -------- -------- --------
web/sorryサーバには、それぞれ以下の文字列を表示するページを用意しておく。
web1 : test1
web2 : test2
sorry: sorry
また、web1,2のヘルスチェック用に /health.cgi ページを用意しておく(status code 200を返すだけ)。
LVS1,2 環境構築
パッケージインストール
LVS1,2サーバに、それぞれパッケージをインストール
rp_filter設定
今回構築している環境では、Interfaceが1つのみなので、rp_filterは有効(1)にしたままにしている。
もし、Interfaceが追加されて、外(eth1)/内(eth0)の2枚環境になるようであれば、
以下の設定をすれば良いと思う。
keepalived.conf設定
LVSの冗長性を確保するためのkeepalivedを利用する。
keepalivedのパラメータ設定として、keepalived.confを設定する。
ここでは、メール通知設定などは省略する。
※本番運用であれば欠かせないと思いますが。
各パラメータの意味は、下記サイトや「24時間365日 サーバ/インフラを支える技術」などを参考に。
LVSを使ったブローカーの構築:「keepalived.conf」についての説明
本家サイトのUserGuide
- LVS1 /etc/keepalived/keepalived.conf
virtual_server_group HTTP100 { 192.168.1.30 80 } virtual_server group HTTP100 { delay_loop 3 lvs_sched lc lvs_method DR protocol TCP virtualhost www.example.org sorry_server 192.168.1.18 80 # web1 real_server 192.168.1.20 80 { weight 1 inhibit_on_failure # health check HTTP_GET { url { path /health.cgi status_code 200 } connect_timeout 3 } } # web2 real_server 192.168.1.21 80 { weight 1 inhibit_on_failure # health check HTTP_GET { url { path /health.cgi status_code 200 } connect_timeout 3 } } } # VRRP vrrp_instance VI { state BACKUP interface eth0 garp_master_delay 5 virtual_router_id 1 priority 101 nopreempt advert_int 1 authentication { auth_type PASS auth_pass himitsu } virtual_ipaddress { 192.168.1.30/24 dev eth0 } }
- LVS2 /etc/keepalived/keepalived.conf
virtual_server_group HTTP100 { 192.168.1.30 80 } virtual_server group HTTP100 { delay_loop 3 lvs_sched lc lvs_method DR protocol TCP virtualhost www.example.org sorry_server 192.168.1.18 80 # web1 real_server 192.168.1.20 80 { weight 1 inhibit_on_failure # health check HTTP_GET { url { path /health.cgi status_code 200 } connect_timeout 3 } } # web2 real_server 192.168.1.21 80 { weight 1 inhibit_on_failure HTTP_GET { url { path /health.cgi status_code 200 } connect_timeout 3 } } } # VRRP vrrp_instance VI { state BACKUP interface eth0 garp_master_delay 5 virtual_router_id 1 priority 100 nopreempt advert_int 1 authentication { auth_type PASS auth_pass himitsu } virtual_ipaddress { 192.168.1.30/24 dev eth0 } }
web1,2、sorry 環境構築
iptables設定
webサーバ側では、VRRPで指定した仮想IP(192.168.1.30)は直接持たず、
iptablesによるアドレス変換(DNAT)で処理させる。
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#
# iptables -t nat -A PREROUTING -d 192.168.1.30 -j REDIRECT
# /etc/init.d/iptables save
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT all -- anywhere 192.168.1.30
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#
# /etc/init.d/iptables restart
LVS環境起動
LVS1,2でkeepalivedを起動し、動作確認を行う。
まずは、LVS1をmaster、LVS2をbackup環境として稼働させる。
keepalived起動
- LVS1 作業
masterとなる LVS1 からkeepalivedを起動する。
# /etc/init.d/keepalived start
# tail /var/log/messages
〜
Keepalived_vrrp: VRRP_Instance(VI) Transition to MASTER STATE
Keepalived_vrrp: VRRP_Instance(VI) Entering MASTER STATE
Keepalived_vrrp: VRRP_Instance(VI) setting protocol VIPs.
Keepalived_vrrp: VRRP_Instance(VI) Sending gratuitous ARPs on eth0 for 192.168.1.30
Keepalived_vrrp: Netlink reflector reports IP 192.168.1.22 added
Keepalived_healthcheckers: Netlink reflector reports IP 192.168.1.22 added
avahi-daemon[3291]: Registering new address record for 192.168.1.30 on eth0.
Keepalived_vrrp: VRRP_Instance(VI) Sending gratuitous ARPs on eth0 for 192.168.1.30
#
実際にipコマンドで仮想IPが設定されているか確認する。
# ip addr show dev eth0
2: eth0:
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.1.22/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.30/24 scope global secondary eth0
#
- LVS2 作業
次にbackupとなる LVS2 のkeepalivedを起動する。
# /etc/init.d/keepalived start
# tail /var/log/messages
〜
Keepalived_vrrp: VRRP_Instance(VI) Entering BACKUP STATE
Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(11,12)]
#
ipコマンドで仮想IPが設定されて"いない"事を確認する。
# ip addr show dev eth0
2: eth0:
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.1.23/24 brd 192.168.1.255 scope global eth0
#
動作確認
ここまでで、LVS環境の構築ができたので、クライアント環境からHTTPリクエストを投げて
LVS環境を通し、分散/冗長されているか動作確認する。
パターン1:正常系
master経由で、web1,2にリクエストが振られ、クライアント環境へ意図した応答が変えるか確認。
LVS1:master LVS2:backup web1:正常稼働 web2:正常稼働
- クライアントからのリクエスト
# while(true); do curl -H 'Host: www.example.org' http://[Global IP1]; sleep 1; done
test1
test2
test1
test2
〜
#
パターン2:異常系
lvs1で障害が発生し、LVS2がmasterとなった状態で、
web1,2にリクエストが振られ、クライアント環境へ意図した応答が変えるか確認。
LVS1:障害! LVS2:master web1:正常稼働 web2:正常稼働
- クライアントからのリクエスト
# while(true); do curl -H 'Host: www.example.org' http://[Global IP1]; sleep 1; done
test1
test2
test1
test2
〜
#
ただし、LVS1のkeepalivedをダウンさせた際、クライアントからのリクエストが1度コネクションエラーとなった。
パターン3:異常系
web1で障害(apacheダウン)が発生した状態で、master経由で web2にリクエストが振られ、クライアント環境へ意図した応答が変えるか確認。
LVS1:master LVS2:backup web1:障害! web2:正常稼働
- クライアントからのリクエスト
# while(true); do curl -H 'Host: www.example.org' http://[Global IP1]; sleep 1; done
test2
test2
test2
test2
〜
#
パターン4:異常系
web2で障害(apacheダウン)が発生した状態で、master経由で web2にリクエストが振られ、クライアント環境へ意図した応答が変えるか確認。
LVS1:master LVS2:backup web1:正常稼働 web2:障害!
- クライアントからのリクエスト
# while(true); do curl -H 'Host: www.example.org' http://[Global IP1]; sleep 1; done
test1
test1
test1
test1
〜
#
パターン5:異常系
web1,2で障害(apacheダウン)が発生した状態で、master経由で sorryにリクエストが振られ、クライアント環境へ意図した応答が変えるか確認。
LVS1:master LVS2:backup web1:障害! web2:障害! sorry:正常稼働
- クライアントからのリクエスト
# while(true); do curl -H 'Host: www.example.org' http://[Global IP1]; sleep 1; done
sorry
sorry
sorry
sorry
〜
#
からレスポンスが返る事が確認できた。
keepalived、RPMパッケージ作成
cntos5.6で、LVS環境を構築するにあたり、RPMパッケージとして提供されていない
keepalivedのRPMパッケージを作成する。
管理面からソースからのインストールではなく、RPMパッケージを作成するようにしている。
build環境の準備
先にopenssl-develを入れておく。
$ yum install openssl-devel
ソースダウンロード&RPM作成
- ソースダウンロード&configure
$ cd /usr/src/redhat/SOURCES/
$ wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
$ tar zxvf keepalived-1.2.2.tar.gz
$./configure
〜
Keepalived configuration
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Keepalived version : 1.2.2
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : No
IPVS sync daemon support : No
Use VRRP Framework : Yes
Use Debug flags : No
$
IPVSがサポートされていない。
どうやらkernelディレクトリを指定する必要がある模様。
kernel-develをインストールし、--with-kernel-dirオプションでディレクトリ指定する。
# yum install kernel-devel
$./configure --with-kernel-dir=/usr/src/kernels/2.6.18-274.3.1.el5-x86_64/
〜
Keepalived configuration
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Keepalived version : 1.2.2
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
IPVS use libnl : No
Use VRRP Framework : Yes
Use Debug flags : No
$
今度は、IPVS use libnl が認識されていない。
なので、libnl-develをインストール。
# yum install libnl-devel
$./configure --with-kernel-dir=/usr/src/kernels/2.6.18-274.3.1.el5-x86_64/
〜
Keepalived configuration
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Keepalived version : 1.2.2
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto -lnl
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
IPVS use libnl : Yes
Use VRRP Framework : Yes
Use Debug flags : No
$
ようやく認識された。
- RPM作成
specファイルをSPECSディレクトリにコピーし、rpmbuild。
$ cp -p keepalived.spec ../../SPECS/
$ rpmbuild -ba ../../SPECS/keepalived.spec
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
- cd keepalived-1.2.2
- grep -q 'IPVS_SUPPORT='\''_WITH_LVS_'\''' config.log
- echo 'ERROR: We do not want keeepalived lacking LVS support.'
ERROR: We do not want keeepalived lacking LVS support.
- exit 1
エラー: /var/tmp/rpm-tmp.80338 の不正な終了ステータス (%check)
RPM ビルドエラー:
/var/tmp/rpm-tmp.80338 の不正な終了ステータス (%check)
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
buildエラー...。
kernelとkernel-develのバージョンに差異があるので、kernelのアップデートを行う。
- アップデート前
kernel : 2.6.18-238
kernel-devel: 2.6.18-274.3.1
- kernelアップデート&OS再起動
OS再起動しアップデートしたkernelを認識したところで、改めてrpmbuild。
が、だめ。
$ rpmbuild -ba ../../SPECS/keepalived.spec
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
make: *** [all] エラー 2
エラー: /var/tmp/rpm-tmp.24180 の不正な終了ステータス (%build)
RPM ビルドエラー:
/var/tmp/rpm-tmp.24180 の不正な終了ステータス (%build)
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
自分ではちゃんと調べてないが、この辺の記事内容が原因なのかな?
http://moriya.xrea.jp/tdiary/20110131.html
rpmbuild時のmakeログを見ると
-
- -
ip_vs.h:19:31: error: netlink/genl/genl.h: そのようなファイルやディレクトリはありません
ip_vs.h:20:31: error: netlink/genl/ctrl.h: そのようなファイルやディレクトリはありません
-
- -
とあるから、恐らくそうなのだろう。
build環境のバージョンは、下記になっていた。
なので、keepalived-1.2.1を利用することに。
すんなり作成できた。
$ wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz
$ tar zxvf keepalived-1.2.1.tar.gz
$ cd keepalived-1.2.1/
$ ./configure --with-kernel-dir=/usr/src/kernels/2.6.18-274.3.1.el5-x86_64/
$ cp -p keepalived.spec ../../SPECS/
$ rpmbuild -ba ../../SPECS/keepalived.spec
centos6.0 + MySQL-5.5.15
環境
- OS
- CentOS6.0(on ESXi5)
- master 1台
- slave 1台
- CentOS6.0(on ESXi5)
MySQL設定
事故防止のため、slave側でMySQL再起動などを実施した際は、
明示的にslave startさせるようにしておく。
パラメータ最適化は....後回しの方向で。
- master向けmy.cnf
[client]
port = 3306
[mysqld]
character_set_server = utf8
max_connections = 150
thread_cache_size = 8
sort_buffer_size = 4M
table_open_cache = 4096
max_allowed_packet = 16M
default_storage_engine = InnoDB
server-id = 1
port = 3306
log-bin = mysql-bin
expire_logs_days = 5
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
innodb_buffer_pool_size = 64M
innodb_log_buffer_size = 8M
innodb_log_file_size = 128M
key_buffer_size = 1M
query_cache_type = 1
query_cache_size = 16M
slow_query_log = 1
long_query_time = 1.0
- slave向けmy.cnf
[client]
port = 3306
[mysqld]
character_set_server = utf8
max_connections = 150
thread_cache_size = 8
sort_buffer_size = 4M
table_open_cache = 4096
max_allowed_packet = 16M
default_storage_engine = InnoDB
server-id = 2
port = 3306
relay-log = mysqld-relay-bin
relay-log-index = mysqld-relay-bin
skip-slave-start
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
innodb_buffer_pool_size = 64M
innodb_log_buffer_size = 8M
innodb_log_file_size = 128M
key_buffer_size = 1M
query_cache_type = 1
query_cache_size = 16M
slow_query_log = 1
long_query_time = 1.0
apache-killer対応
はじめに
Apacheの脆弱性(CVE-2011-3192)に関する対応メモ。
(apache-killer対応)
既にapache-killer対応済のRPMパッケージが提供されているので、
未対応パッケージ&パラメータ定義ではなく、対応済パッケージの適用で対策する。
パッケージ取得
CentOS5.7がリリースされるまでの対応として、CR(Continuous Release)リポジトリから、
apache-killer対応済みのパッケージを取得する。
パッケージダウンロード&インストール
- CRリポジトリパッケージについて
情報ソース
http://lists.centos.org/pipermail/centos-announce/2011-August/017689.html
-
- パッケージ取得&インストール
# wget http://mirror.centos.org/centos/5.6/cr/x86_64/RPMS/centos-release-cr-5-6.el5.centos.1.x86_64.rpm
# rpm -ivh centos-release-cr-5-6.el5.centos.1.x86_64.rpm
- apacheパッケージ取得
念のため、現バージョンと新バージョンのRPMパッケージを取得しておく。
その前に yumdownloader を入れておこう。
- apacheパッケージアップデート
設定ファイルは事前に退避しておきましょう。
- パッケージ更新履歴確認
CVE-2011-3192対応されたものか更新履歴で確認しておく。
動作チェック
yamagataさんが公開されている、以下のサイトを利用させて頂く(感謝)
http://yamagata.int21h.jp/tool/apache-killer-checker/
memcached-1.4.5 + repcached のRPM作成
はじめに
rpmbuildする際、CPUコアがシングルコアだと処理が途中で止まってしまう。
2コア以上の環境でbuildすること。
RPM作成まで
- コンパイル用パッケージインストール
- build用ディレクトリ作成
# cd /usr/src/
# cp -rp redhat redhat.org
# mkdir -p /home/daggun/rpm/{BUILD,SRPMS,SPECS,SOURCES,RPMS}
# chown -R daggun:daggun /home/daggun/rpm
# ln -s /home/daggun/rpm redhat
ここから一般ユーザーでの作業。~
- rpmパッケージの定義ファイルを用意しておく(かなり雑)
- memcachedのソースと、repcachedを適用するためのパッチを取得
$ cd /home/daggun/rpm/SOURCES
$ wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
$ wget http://mdounin.ru/files/repcached-2.3-1.4.5.patch.gz
http://mdounin.ru/
- パッチ適用
$ tar zxvf memcached-1.4.5.tar.gz
$ gunzip repcached-2.3-1.4.5.patch.gz
$ patch -p0 -i repcached-2.3-1.4.5.patch
- configure処理
$ cd /home/daggun/rpm/SOURCES/memcached-1.4.5
$ ./configure --enable-64bit --build=x86_64-unknown-linux --enable-replication
$ cp -p memcached.spec ../../SPECS/
- specfile修正(replication対応)
- tarball準備
$ cd ../
$ mv memcached-1.4.5.tar.gz memcached-1.4.5.tar.gz.org
$ tar zcvf memcached-1.4.5.tar.gz memcached-1.4.5
- rpm作成
$ rpmbuild -ba ../SPECS/memcached.spec
- rpmの確認
memcached設定
以下のサーバ構成で動作確認する。
- サーバ1
- OS:centos5.6
- サーバ名:mem_master
- IPアドレス:192.168.1.20/24
- サーバ2
- OS:centos5.6
- サーバ名:mem_slave
- IPアドレス:192.168.1.21/24
memcached定義ファイル
memcached起動時のパラメータ定義ファイルを作成。
レプリケーションポートはデフォルトの11212とする。
レプリケーション方向は mem_master -> mem_slave を想定する。
- mem_masterパラメータ設定
レプリケーション確認
下記のようにsetした値がレプリケーションされている事を確認する。
- mem_master
- 1. setコマンドで値を投入
- 2. getコマンドで値を取得
- mem_slave
- 3. getコマンドでmaster側で投入したキー値を取得
では確認してみる。
- 1. setコマンドで値を投入
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set daggun 0 0 5
world
STORED
-
- 2. getコマンドで値を取得
get daggun
VALUE daggun 0 5
world
END
quit
-
- 3. getコマンドでmaster側で投入したキー値を取得