システム統合監視Zabbix2.2の構築手順
■システム統合監視Zabbix2.2の構築手順目次 ・SELinuxを無効化
・zabbixのyumリポジトリ追加登録
・Zabbixインストール
・MySQL基本設定
・Zabbix用DBとアカウント作成
・Zabbix用のDBスキーマとデータをインポート
・ZabbixのMySQL接続設定
・ZabbixのHTTPSアクセス対応
・Zabbixの起動
事前作業・インストール
SELinuxはセキュリティ上有効にして適切に設定すべきであるが、ここでは無効化しておく。# setenforce 0・再起動後もSELinuxを無効化する
# vi /etc/sysconfig/selinux
#SELINUX=enforcing をコメントアウト SELINUX=disabled
# cd /usr/local/src/ # wget http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm # wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm # wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
# rpm -ivh zabbix-release-2.2-1.el6.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm # rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
# cd /etc/yum.repos.d
# vi zabbix.repo
# vi epel.repo
# vi rpmforge.repo
# yum --enalberepo=epel install fping # yum --enablerepo=rpmforge install iksemel # yum --enablerepo=zabbix install zabbix-agent zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-get # yum install mysql-server
MySQL設定
■MySQL設定ファイル(my.cnf)のバックアップ# cd /etc # cp my.cnf my.cnf.yyyymmdd
# vi /etc/my.cnf
[mysql] #デフォルトutf8 default-character-set=utf8 [mysqld] default-character-set=utf8 #innodb_file_per_table を追加する。 default-storage-engine=innodb #必要に応じてdatadirを以下に変更する。 datadir=/data/db/mysql/zabbix-data [mysqld_safe] #log-errorを以下に変更する。 log-error=/data/db/mysql/log/mysqld.log※編集箇所のみ抜粋
# cp /etc/init.d/mysqld /etc/init.d/mysqld.yyyymmdd
# vi /etc/init.d/mysqld
#get_mysql_option mysqld datadirを以下に変更する。 get_mysql_option mysqld datadir "/data/db/mysql/zabbix-data" #get_mysql_option mysqld_safe log-errorを以下に変更する。 get_mysql_option mysqld_safe log-error "/data/db/mysql/log/mysqld.log"※編集箇所のみ抜粋
# service mysql start・MySQLのセキュリティ初期設定
# mysql_secure_installation
# mysql -u root -p > create database zabbix character set utf8; > grant all privileges on zabbix.* to zabbix@localhost identified by '<パスワード>'; > FLUSH PRIVILEGES; > exit
# mysql -uroot -p zabbix < /usr/share/doc/zabbix-server-mysql-2.2.4/create/schema.sql # mysql -uroot -p zabbix < /usr/sharless e/doc/zabbix-server-mysql-2.2.4/create/images.sql # mysql -uroot -p zabbix < /usr/share/doc/zabbix-server-mysql-2.2.4/create/data.sql
Zabbix基本設定
・zabbix_server.confのバックアップ# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.yyyymmdd
# vi zabbix_server.conf
DBPassword=<パスワード>
# cd /etc/httpd # mkdir sec # cd sec # openssl genrsa 2048 > server.key # openssl req -new -key server.key > server.csr # openssl x509 -days 3650 -req -signkey server.key < server.csr > server.pem
# cd /etc/httpd/conf.d # cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.yyyymmdd # sed -e "/^#/d" -e "/^$/d" -e "/^ #/d" ssl.conf.yyyymmdd > ssl.conf
# vi /etc/httpd/conf.d/ssl.conf
#ログ出力設定を以下に変更 CustomLog "| /usr/local/sbin/cronolog /var/log/httpd/%Y%m/zabbix_ssl_access.%Y%m%d.log" combined ErrorLog "| /usr/local/sbin/cronolog /var/log/httpd/%Y%m/zabbix_ssl_error.%Y%m%d.log" #証明書設定を以下に変更 SSLCertificateFile /etc/httpd/sec/server.pem SSLCertificateKeyFile /etc/httpd/sec/server.key #ディレクティブ内に追加 php_value date.timezone Asia/Tokyo
# cp zabbix.conf zabbix.conf.yyyymmdd
# vi zabbix.conf
#ディレクティブ内に追加 php_value date.timezone Asia/Tokyo #既存設定を全てコメントアウトする。 #以下を追加(httpsに書き換え) <VirtualHost *:80> RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteCond %{SERVER_NAME} !localhost RewriteRule ^(.*)?$ https://%{HTTP_HOST}$1 [R,L] </VirtualHost>
# service zabbix-server start # service zabbix-agent start # service httpd restart
# chkconfig zabbix-server on # chkconfig zabbix-agent on # chkconfig mysqld on # chkconfig --list
Zabbixの管理画面
ブラウザで https://{Zabbixサーバ}/zabbix/ にアクセス a.Welcome画面でNextをクリック
b.全てOKである事を確認し、Nextをクリック
c.接続するDB情報を入力し、Test connectionをクリック
エラーが出なければNextをクリック
d.Host、Portを入力し、Nextをクリック
e.設定情報を確認し、Nextをクリック
f.Finishをクリック
おすすめZabbix書籍
改訂版 Zabbix統合監視実践入門 ~障害通知、傾向分析、可視化による省力運用 |
Zabbix統合監視徹底活用 ~複雑化・大規模化するインフラの一元管理 |
統合監視ソフトウェアMIRACLE ZBX/Zabbixシステム管理 |
Nginxのロードバランサー構築
■Nginxのロードバランサー設定の目次NginxのRPMパッケージからインストール
■nginx.org提供のリポジトリからnginxのパッケージをインストール# wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm # rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=0
# yum install --enablerepo=nginx nginx
Nginxの基本設定
Nginxの設定ファイルについて
■設定ファイル内容coreモジュールの設定 events { eventモジュールの設定 } http { httpモジュールの設定 } mail { mailモジュールの設定 }
http { httpモジュールの設定 server { サーバ毎の設定 location PATH { URI毎の設定 } location PATH { URI毎の設定 } ... } server { ... } }
# vi /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
#ログフォーマット設定
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#ロードバランサー設定は別ファイルで定義
include /etc/nginx/conf.d/lb.conf;
}
Nginx基本設定の説明
■ログフォーマットlog_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
# vi /etc/nginx/conf.d/lb.conf
server {
listen 80;
server_name www.hoge.co.jp;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
#バックエンドサーバへのクライアントIP引渡し
# クライアントの IP アドレス($proxy_add_x_forwarded_for;)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
location / {
proxy_pass http://backend;
}
}
#ロードバランサ設定
upstream backend {
ip_hash;
server 172.20.1.201:80 max_fails=3 fail_timeout=30s ;
server 172.20.1.202:80 max_fails=3 fail_timeout=30s ;
server 127.0.0.1:8080 down;
}
Nginxの仮想サイト設定の説明
■仮想ホストerror_page 500 502 503 504 /error.html; location = /error.html { root /data/www/www.hoge.co.jp/error/; }※/data/www/www.hoge.co.jp/error/error.htmlをSorryページの内容にしておく。
proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # クライアントの IP アドレス proxy_set_header X-Forwarded-Host $host; # オリジナルのホスト名。クライアントが Host リクエストヘッダで渡す。 proxy_set_header X-Forwarded-Server $host; # プロキシサーバのホスト名 proxy_set_header X-Real-IP $remote_addr;※X-Forwarded-ForをApacheのログフォーマットに追加する設定は後述する。
proxy_pass http://backend; upstream backend
セッション維持 | ソースIPによるセッション維持 ※1 |
---|---|
メンバーサーバ | 172.20.1.201:80 172.20.1.202:80 |
サーバオプション | 失敗回数:3回 TimeOut:30秒 |
Sorryサーバ | 127.0.0.1:8080 |
upstream backend { ip_hash; server 172.20.1.201:80 max_fails=3 fail_timeout=30s ; server 172.20.1.202:80 max_fails=3 fail_timeout=30s ; server 127.0.0.1:8080 down; }
Serverオプション | 概要 |
---|---|
weight | (初期値=1) 全サーバーのweight値の合計を分母(但しbackupサーバは除く)にし、ここで分子を指定することで、この比率がサーバー群の中の対応サーバーの分散比率とする |
max_fails | 接続失敗時の最大チャレンジ回数 |
fail_timeout | 30s 接続失敗を判断するタイムアウト時間。 但し proxy_connect_timeout と proxy_read_timeout によっても関係する。 |
down | 常にダウンしているサーバーに指定。但しip_hash指定があればハッシュは作成される |
backup | backup指定がない通常サーバーがすべてダウンした時にこのサーバーに接続する |
Nginxのログローテート
RPMでインストールした場合、下記の設定がすでにされている。# cat /etc/logrotate.d/nginx
/var/log/nginx/*.log { daily missingok rotate 52 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript }
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{X-Forwarded-For}i" combined
WEBサーバの関連記事
・Apache構築手順【基本設定】Nginxおすすめ書籍
マスタリングNginx |
ハイパフォーマンスHTTPサーバ Nginx入門 |
# pcs property set stonith-enabled=false # pcs property set no-quorum-policy=ignore # pcs property set crmd-transition-delay=2s■自動フェイルバックなし、同一サーバでリソースの再起動を試みる回数を 1 回に設定します。
# pcs resource defaults resource-stickiness="INFINITY" migration-threshold="1"■VIP監視
# pcs resource create res-chk-vip1 ocf:heartbeat:VIPcheck \ target_ip=10.96.146.30 count=1 wait=10 \ op start interval=0s timeout=90s on-fail=restart start-delay=4s■VIP設定
# pcs resource create res-vip1 ocf:heartbeat:IPaddr2 ip=10.96.146.30 cidr_netmask=24 op monitor interval=30s■メール送信
# pcs resource create res-mailto ocf:heartbeat:MailTo \ params email="hoge_system@ml01.hoge.hoge.jp" subject="Pacemaker FailOver" \ op monitor interval="10s" timeout="10s" \ op start interval="0" timeout="10s" \ op stop interval="0" timeout="10s" \ meta target-role="started"■ping監視
# pcs resource create res-ping ocf:pacemaker:ping \ params name="default_ping_set" host_list="10.96.146.39 10.96.146.40 10.96.146.41" multiplier="100" dampen="50" \ op monitor interval="10s" timeout="20s" \ op start interval="0" timeout="90s" \ op stop interval="0" timeout="100s"
# pcs resource clone res-ping※「ocf:pacemaker:pingd」は古いので「ocf:pacemaker:ping」を利用すること。「ocf:pacemaker:pingd」はフェイルオーバできないなどバグがある。
#pcs cluster standby dbserver-02MySQLリソースの設定
# pcs resource create res-mysql ocf:heartbeat:mysql binary=/usr/bin/mysqld_safe pid=/var/run/mysqld/mysqld.pid \ datadir="/data/db/mysqld/daito-data" config="/etc/my.cnf" user="mysql" group="mysql" log="/data/db/mysqld/log/mysqld.log" \ test_user="chk_user" test_passwd="helthpasswd" test_table="chk_db.chk_tbl" \ replication_user=repl replication_passwd=slavepasswd \ op start interval=0 timeout=120s \ op stop interval=0 timeout=120s \ op monitor interval=10s role=Master timeout=30s on-fail="restart" \ op monitor interval=30s role=Slave timeout=30s on-fail="restart" \ op promote interval=0 timeout=120s \ op demote interval=0 timeout=120s \ op notify interval=0 timeout=90s■Master/Slaveセットを作成します。
# pcs resource master ms-mysql res-mysql master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true■リソースグループ
# pcs resource group add grp-network res-chk-vip1 res-vip1 res-mailto■同居制約
# pcs constraint colocation add grp-network ms-mysql INFINITY with-rsc-role=Master # pcs constraint colocation add master ms-mysql with res-ping■起動順序
# pcs constraint order promote ms-mysql then start grp-network # pcs constraint order start res-ping-clone then promote ms-mysql # pcs constraint order start res-chk-vip1 then start res-vip1※on-fail="xxx"の設定に応じた動作を行う。指定できる動作には以下のものがある。
block | 故障したリソースの管理を停止し待機する。 |
---|---|
fence | リソース故障が発生したメンバーノードをSTONITHによって再起動し、フェールオーバする。 |
ignore | 何の処理も行わない。 |
stop | 故障したリソースを停止し、他のメンバーノードへフェールオーバさせない。 |
restart | 故障したリソースを他のメンバーノードへフェールオーバする(デフォルト)。 |
Pacemaker+MySQLレプリケーション構築【目次】
Pacemaker+MySQLレプリケーション構築【環境/基本情報】おすすめ書籍
インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門]トラブルシューティングガイド |
[24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用 |