忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

DCとAWS間で、MySQLのレプリケーションを試してみたら、レプリケーションがうまくいかなかった。無通信状態が1時間続くと接続がきれてしまいます。
現象発生時にマスター側、スレーブ側で以下のような確認をしましたが、正常そうに見えました。

確認内容
・マスター側でshow slave hostsを実行すると、1時間経過した時点でエントリーが消える。
・この時 スレーブ側でshow slave statusを実行すると、IOスレッドの稼働状況はYesになっている。
・両方でnetstat -atnを実行すると、スレーブ側ではEstablishedになっているが、マスター側には対応するセッションがない。

最後のnetstatsの結果から途中経路にあるNW機器が原因かと辺りをつけて、両方のMySQLサーバでパケットキャプチャしてみると、30分おきにマスターから スレーブに対してpushフラグのついたパケットが投げられていましたが、途中経路にあるYamaha RTX1200がリセットフラグのついた応答を返していました。
どうやら、RTX1200のNatテーブル保持期間がデフォルトで900秒だったため、Natテーブルからレコードが消えていたため通信に失敗していました。
このため、マスターからスレーブへパケットを投げる間隔を60秒にしてやったところ、問題は解決しました。

変更するためには、  スレーブ側で以下のコマンドを実行します。
mysql> change master to MASTER_HEARTBEAT_PERIOD=60;
PR
Fedora19をvirt-installでKVM上にインストールしたら、コンソールが表示されなかった。しかもgrub2に代わってコンソール設定も迷ったので対処方法のメモ。

(1)/etc/default/grubに以下の行を追加する。
GRUB_TERMINAL_OUTPUT=serial
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"
(2)grub.cfgの再作成
# grub2-mkconfig -o /boot/grub2/grub.cfg
GRUB_TERMINAL_OUTPUTがないと、シリアルに関する設定がgrub.cfgに入らないところで、少し戸惑った。
今までTomcatを複数台用意して運用していましたが、はっきりいって管理が面倒でした。
そこで代替品を探していたら、Glassfishというフリーのアプリケーションサーバに出会いました。
こいつがまた、管理用Webから一元管理ができて、クラスターの拡張も簡単という、とてもイカす奴でした。

運用するからには監視が必要ということで、ZabbixでGlassfishクラスタの各インスタンスのリソース監視をするためのPythonスクリプトを作りました。

これ → zabbix_server.tgz

【環境】
 ・監視サーバ  Zabbix 1.8系
 ・監視対象  CentOS6 Python2.6系 Zabbix 1.8系(Zabbix-JP配布のRPM)

使用方法

■Glassfish管理ノード側作業
(1)pythonスクリプトをGlassfish管理ノードに配置する。
  配置先 /etc/zabbix/customscripts/glassfish_monitor.py
  実行権限をつけ忘れないように。
(2)pythonスクリプトの編集
  ・das_userにDASのログインユーザ、パスワードを記述する。
    デフォルトだと、admin:admin
  ・zabbix_serverにZabbixサーバのDNS名を記述する。
(3)userparameter_glassfish.confを/etc/zabbix/zabbix_agentd.dに配置し、zabbix_agenを再起動する。
■Zabbixサーバ側作業
(1)テンプレートをZabbixサーバにインポートする。
(2)監視したいインスタンス(Javaプロセスのこと)をZabbixサーバに登録する。
  登録する際、以下のように入力する。
   DNS名:Glassfish DASのサーバ名
   接続方法:DNS名
   マクロ:{$node} => インスタンス名 (クラスタに定義されているインスタンス名)

JDKのバージョンによって、GCの種類が変わってくるので、スクリプト中の以下の箇所を編集する必要があるかもしれません。

menu={"os":"/jvm/operating-system","compiler":"/jvm/compilation-system","runtime":"/jvm/runtime","thread":"/jvm/thread-system","memory":"/jvm/memory","majorgc":"/jvm/garbage-collectors/PS%20MarkSweep","minorgc":"/jvm/garbage-collectors/PS%20Scavenge","class":"/jvm/class-loading-system"}
GlassfishのRESTチャネルを使って値をとってきているので、https://hoge.glassfish.manage.server:4848/monitoring/domain/ にブラウザでアクセスすれば何に変更すればいいかわかると思います。
仕事で使ってるサーバの大半はCentOSなんですが、たまにFedoraが混じってたりします。
Fedoraの場合、サービス管理にはsystemdを経由しますが、こいつがたまに思った通りに動いてくれません。

CentOS用に作ったkyototycoonのRPMパッケージを、Fedora用にパッケージし直し、いざ起動するとすぐ停止してしまいます。
kyototycoonのログを見ると、起動した形跡はあるが、直後にシャットダウンされている模様。
起動直後に、ステータスみると確かに殺されている。

# /etc/init.d/ktserver status
ktserver.service - LSB: KyotoTycoon Server
          Loaded: loaded (/etc/rc.d/init.d/ktserver)
          Active: deactivating (stop) since Fri, 07 Dec 2012 12:03:05 +0900; 1s ago
         Process: 32573 ExecStart=/etc/rc.d/init.d/ktserver start (code=exited, status=0/SUCCESS)
        Main PID: 32578 (code=exited, status=0/SUCCESS); Control: 32581 (ktserver)
          CGroup: name=systemd:/system/ktserver.service
                  t 32580 /usr/bin/ktserver -port 1978 -dmn -li -log /var/log/ktserver.log -pid /var/run/ktserver.pid -th 64 -sid 2 -mhost taudience01.hogehoge.com -mport 1978 -rts /data/ktser...
                  t 32581 /bin/bash /etc/rc.d/init.d/ktserver stop
                  m 32650 sleep 1
同じパッケージを入れている別のサーバではおきなかったりして、今のところ原因不明です。

とりあえず回避方法として、systedを経由せずに起動させています。
やり方は簡単で、起動スクリプト中に以下のシェル変数を定義すればOKです。

【変数】
  SYSTEMCTL_SKIP_REDIRECT=yes

値は便宜上yesにしましたが、何でもOKです。
 
ZABBIXサーバってエージェントに接続する度に、DNSに問い合わせを投げてるみたいです。
1年以上ZABBIXを運用していて、今まで気づかなかったのは恥ずかしい限りです。
障害対応の際にZABBIXサーバのプライマリDNSを切り替えた前後のトラフィックが、劇的に変化したので気づきました。
内部ホストのレコードなんてそうそう変わらないので、DNSキャッシュを立てたら帯域の節約になる、ってことでnscdを起動したら、こんなに変わりました。

HOME  → NEXT
Copyright (C) 2017 技ブロ All Rights Reserved.
Photo by 戦場に猫 Template Design by kaie
忍者ブログ [PR]