MySQLのslaveでDuplicate entryエラーが出た時の対処
...こんにちは。小宮です。
このまえ出たエラーの記録です。・エラーログ
>show slave status\G Last_Error: Error 'Duplicate entry '1133523-2013-08-18 05:03:01' for key 'PRIMARY'' on query. Default database: '*****'. Query: 'INSERT INTO `event_****_logs` ...時刻がプライマリキーになってるから重複してる感じのエラーなような。
ログとかセッションとか重複しやすい感じがします。念のためmysqldumpのオプションをみたものの、
--skip-optは入ってないのでoptが勝手について–add-drop-tableは有効なはず。MYDUMP_PAR='--single-transaction --dump-slave=2 --routines --include-master-host-port --all-databases'http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html
データ投入後にreset slaveしてログファイルとポジション合わせてstart slaveするなど手順には問題がないように見えました。
お客さまに重複エントリは全部skipしていいか確認いただいたところ
Insertでプライマリキーが被ってるのは大丈夫なのかは別途開発側で確認でとりあえずskipという話に。
(対象がサービスで使用していないいので復旧優先ということだったと思います。不整合が気になるならマスタからdump撮り直すのが良いです。)・エラーのクエリをskipする方法
1つだけなら、SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;ですがいっぱいでてくる場合は
Last_SQL_Errno: 1062
こちらのエラー番号を指定してスキップ。重複エントリを全部スキップするということです。Chefで書いたレシピをテストする(serverspec)
...こんにちは。小宮です。
今回で最終回です。
前回までにご紹介したレシピのテストするところをご紹介します。Serverspecを用います。なぜServerspecがいいかというのは以下リンクにも書いてますが、以下の点がよいと思います。
・Chefのテストツールでなく外部のツールなので依存関係がない(puppetでも使える)
・設計思想がシンプル簡単に使えるものということで、手間があんまりなくて簡単につかえた参考:
Serverspec at hbstudy #45
入門Chef Solo落ち穂拾い
kayac/newbie-training
「入門Puppet」
resource_typeのマニュアル
advanced_tips
ncstudy#05 ハンズオン資料
parallel_tests・セットアップ
バージョン0.3と0.6だとテストの書き方が若干違う感じだったので、マニュアルに沿ってる新しいほうを推奨します。
[shell]# yum install rubygemsgem install serverspec rake
serverspec-init
Select a backend type: 1) SSH 2) Exec (local) Select number: 1 Vagrant instance y/n: y Input vagrant instance name: 10.0.0.241 + spec/10.0.0.241/ + spec/10.0.0.241/httpd_spec.rb[/shell] <br> コマンドの実行が終わると、上記のようにいくつかのファイルが作成されます。<br>[shell]# serverspec-init ~略~ Input target host name: 10.0.0.240 + spec/10.0.0.240/ + spec/10.0.0.240/httpd_spec.rb[/shell]
SSHを指定し、ターゲットホストを入力すると、ホスト毎のディレクトリが作成されました。Chefで既存手順のレシピを書く5(munin、zabbix)
...おつかれさまです。小宮です。
前回に引き続き、munin,zabbixの手順のレシピをご紹介します。レシピはこの記事でおしまいです。
記事の最後にはレシピの適用方法を記載します。・muninのレシピ
# cd /opt/src/rpms # mkdir -p /root/chef-repo/site-cookbooks/munin/files/default/rpms # mkdir -p /root/chef-repo/site-cookbooks/munin/files/default/var/www/html/munin # mkdir /root/chef-repo/site-cookbooks/munin/files/default/etc/munin/plugin-conf.d # cp -p /etc/munin/munin.conf /root/chef-repo/site-cookbooks/munin/files/default/etc/munin/ # scp -Cp xxx-web01:/etc/munin/munin-node.conf /root/chef-repo/site-cookbooks/munin/files/default/etc/munin/ # cp -p /var/www/html/munin/.htaccess /root/chef-repo/site-cookbooks/munin/files/default/var/www/html/munin/ # cp -p /etc/munin/plugin-conf.d/munin-node /root/chef-repo/site-cookbooks/munin/files/default/etc/munin/plugin-conf.d/ # tar cf /root/chef-repo/site-cookbooks/munin/files/default/rpms/munin-node-rpm.tar ./munin-node-rpm/ # tar tf /root/chef-repo/site-cookbooks/munin/files/default/rpms/munin-node-rpm.tar ./munin-node-rpm/ # tar cf /root/chef-repo/site-cookbooks/munin/files/default/rpms/munin-serv-rpm.tar ./munin-serv-rpm/ # tar tf /root/chef-repo/site-cookbooks/munin/files/default/rpms/munin-serv-rpm.tar ./munin-serv-rpm/ # cd /root/chef-repo/site-cookbooks/munin/recipes # touch munin-node.rb munin-server.rb munin-node-db.rb munin-node-web.rb # vi munin-node.rb filename = "munin-node-rpm.tar" cookbook_file "/tmp/#{filename}" do source "rpms/#{filename}" mode 0644 end package "perl-DBI" do not_if "rpm -qa|grep perl-DBI" action :install end script "install_munin-node" do not_if 'ls /etc/munin/munin-node.conf' interpreter "bash" user "root" code <<-EOL cd /tmp tar xf /tmp/#{filename} rpm -i /tmp/munin-node-rpm/perl-Dig* rpm -i /tmp/munin-node-rpm/perl-{C*,H*,I*,L*,N*,X*,li*} rpm -i /tmp/munin-node-rpm/perl-DBD-Pg* rpm -i /tmp/munin-node-rpm/munin-* cp -p /etc/munin/munin-node.conf{,.org} EOL end cookbook_file "/etc/munin/munin-node.conf" do source "etc/munin/munin-node.conf" mode 0644 end script "link_plugins" do not_if 'ls /etc/munin/plugins/tcp' interpreter "bash" user "root" code <<-EOL rm -f /etc/munin/plugins/* ln -s /usr/share/munin/plugins/cpu /etc/munin/plugins/cpu ln -s /usr/share/munin/plugins/if_err_ /etc/munin/plugins/if_err_eth0 ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_eth0 ln -s /usr/share/munin/plugins/iostat /etc/munin/plugins/iostat ln -s /usr/share/munin/plugins/load /etc/munin/plugins/load ln -s /usr/share/munin/plugins/memory /etc/munin/plugins/memory ln -s /usr/share/munin/plugins/tcp /etc/munin/plugins/tcp ln -s /usr/share/munin/plugins/df /etc/munin/plugins/df EOL end service "munin-node" do supports :status => true, :restart => true action [ :enable, :start ] end # vi munin-server.rb filename = "munin-serv-rpm.tar" cookbook_file "/tmp/#{filename}" do source "rpms/#{filename}" mode 0644 end script "install_munin-serv" do not_if 'ls /etc/munin/munin.conf' interpreter "bash" user "root" code <<-EOL tar xf /tmp/#{filename} rpm -i /tmp/munin-serv-rpm/* cp -p /etc/munin/munin.conf{,.org} EOL end cookbook_file "/etc/munin/munin.conf" do source "etc/munin/munin.conf" mode 0644 end service "munin-node" do supports :status => true, :restart => true action [ :enable, :start ] end cookbook_file "/var/www/html/munin/.htaccess" do source "var/www/html/munin/.htaccess" mode 0644 end # vi munin-node-web.rb script "link_plugins_web" do not_if 'ls /etc/munin/plugins/apache_accesses' interpreter "bash" user "root" code <<-EOL ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes EOL end service "munin-node" do supports :status => true, :restart => true action [ :enable, :restart ] end # vi munin-node-db.rb script "link_plugins_db" do not_if 'ls /etc/munin/plugins/mysql_threads' interpreter "bash" user "root" code <<-EOL ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads EOL end cookbook_file "/etc/munin/plugin-conf.d/munin-node" do source "etc/munin/plugin-conf.d/munin-node" mode 0644 end service "munin-node" do supports :status => true, :restart => true action [ :enable, :restart ] endrole毎にちがうコマンド実行するとかひとつのレシピ内でやる方法ってあるのかが気になります。ifとかでできるんでしょうか。
今回はそんな方法はわからなかったので、webとdbそれぞれ用のレシピを分けて作りました。
roleに適用する順序は、munin-node.rbを最初にしないとプラグインが最初全部消される仕様です。(レシピは上から順に実行されます)Chefで既存手順のレシピを書く4(DBサーバ)
...おつかれさまです。小宮です。
前回に引き続きdbserverのレシピについて書いていきます。
のこってるのはmunin、zabbxとserverspecでのテストだけです。もうすこしの辛抱です。webと同じくバージョン固定インストールなので、外部レシピは基本的に使わない方向とする
・mysqlのインストールと起動と自動起動の有効化
[shell]# cd /root/chef-repo/site-cookbooks/mysqld/recipes
mkdir -p /root/chef-repo/site-cookbooks/mysqld/files/default/usr/local/src/rpms
mkdir -p ../templates/default/etc/init.d
mkdir -p ../files/default/etc/init.d
mkdir -p ../files/default/root
mkdir -p /root/chef-repo/site-cookbooks/mysqld/files/default/etc/logrotate.d
mkdir -p /root/chef-repo/site-cookbooks/mysqld/files/default/opt/{backup,bin}
scp -Cp xxx-db02:/opt/bin/mysql-back.sh /root/chef-repo/site-cookbooks/mysqld/files/default/opt/bin/
cp -p /etc/logrotate.d/mysqld /root/chef-repo/site-cookbooks/mysqld/files/default/etc/logrotate.d/
scp -Cp xxx-db01:/etc/init.d/mysqld ../files/default/etc/init.d/
scp -Cp xxx-db02:/etc/my.cnf ../templates/default/etc/
cp -p /root/.path_to_file ../files/default/root/
cd /opt/src/rpms/
tar czf /root/chef-repo/site-cookbooks/mysqld/files/default/usr/local/src/rpms/db-rpm.tar.gz ./db-rpm/
tar czf /root/chef-repo/site-cookbooks/mysqld/files/default/usr/local/src/rpms/db-tools-rpm.tar.gz ./db-tools-rpm/
tar tzf /root/chef-repo/site-cookbooks/mysqld/files/default/usr/local/src/rpms/db-rpm.tar.gz
vi ../templates/default/etc/my.cnf
diff /etc/my.cnf ../templates/default/etc/my.cnf
53c53
Chefで既存手順のレシピを書く3(WEBサーバ)
...こんにちは。プラットフォームの小宮です。
前回に引き続き既存手順のレシピ化をすすめていきます。あと3回くらいだと思われるので気長におつきあいください。今回はWEBサーバのレシピになります。
特別なことは特にしていなくて普通のwebサーバだと思いますが、一応何してるか書いておきますと、
apache2.2+php5.3系で中間コードキャッシュにAPCを使っていてwordpressとそのsshプラグインつかっておりAWSのS3にmountしています。
s3mountに使うfuseが最新版からソースコードで入れる必要があり、バージョン固定のphpのパッケージが18個くらいとかありまして
一つ一つpackageリソース書くのが面倒だったこともありましてscriptつかいました。
scriptつかうときはnot_if忘れるとmakeとか何回も実行されて困るので注意が必要です。
あとcd書き忘れると展開場所が認識してるとこに出ないのでその後の手順でファイルが存在しないエラーがでました。・httpdのレシピを書く
設定ファイルの準備をする
[shell]# mkdir -p /root/chef-repo/site-cookbooks/httpd/files/default/rpms # tar cf /root/chef-repo/site-cookbooks/httpd/files/default/rpms/web-rpm.tar ./web-rpm/ # tar tf /root/chef-repo/site-cookbooks/httpd/files/default/rpms/web-rpm.tar ./web-rpm/ # cd /root/chef-repo/site-cookbooks/httpd/recipes # mkdir -p /root/chef-repo/site-cookbooks/httpd/files/default/etc/httpd/{conf,conf.d} # cp -p /opt/src/config/web/httpd.conf /root/chef-repo/site-cookbooks/httpd/files/default/etc/httpd/conf/ # vi /root/chef-repo/site-cookbooks/httpd/files/default/etc/httpd/conf/httpd.conf # mkdir -p /root/chef-repo/site-cookbooks/httpd/files/default/etc/php.d # cp -p /opt/src/config/php/php.ini /root/chef-repo/site-cookbooks/httpd/files/default/etc/ # cd /root/chef-repo/site-cookbooks/httpd/files/default/rpms # wget http://rpms.famillecollet.com/enterprise/5/olds/x86_64/php-pecl-apc-3.1.13-3.el5.remi.x86_64.rpm # cp -p /etc/php.d/apc.ini /root/chef-repo/site-cookbooks/httpd/files/default/etc/php.d/ # wget http://rpms.famillecollet.com/enterprise/5/remi/x86_64/php-pecl-ssh2-0.11.3-2.el5.remi.x86_64.rpm[/shell]
apacheのインストールと基本設定
[shell]# vi httpd-server.rb cookbook_file “/tmp/web-rpm.tar” do source “rpms/web-rpm.tar” mode 0644 endMysqlのHAとトラブル事例
...久しぶりの更新になります。プラットフォームの宮下です。
先日開催されました、July Tech Festa2013というイベントの中の1コマで何と私が発表をさせて頂きました。
その時使用した資料をアップしますので興味のある方は是非一読下さい。[slideshare id=24320385&doc=mysqlha-130716215401-phpapp02]
mysqlのHA構成のデザインパターン紹介を経験談を交えて話させて頂きました。
とても緊張してしまって肝心のトラブル事例がお話出来ませんでした。このブログでは、包み隠さずトラブルのレポートが出来ればと思います。
今回のテーマは、小宮先生のレポートを多分に活用させて頂いています。
次回こそは、私の成果を発表したいもんです。それではまた近いうちに更新します。
Chefで既存手順のレシピを書く2(ユーザ作成)
...こんにちは。プラットフォームの小宮です。
前回に引き続きChefの記事で失礼します。
data_bagsでユーザ管理の用意をします。
一応、以前にこちらに書いてるのですが、関連情報がまとまってるほうがいいと思うので部分的に再掲します。
data_bagsとはldapのような機能をもったデータ検索など管理ができるもの。
chef-server使う場合はサーバと通信してデータ取ってきて反映することが可能。
今回はChef-soloなので、ローカルのファイルにデータを用意して反映させる方法をとります。参考:
もしユーザ数が多くて頻繁にアカウントが追加変更される場合、以下リンクのようにdata_bagsで有効無効も管理するのもよさそうです。
chef-data-bag活用法[shell]# cd ;cd chef-repo/data_bags # mkdir users;cd users # vi xxx-op.json // xxx-op.json { “id” : “xxx-op”, “groups”: [ “xxx-op”,“wheel” ], “uid”: 1000, “username” : “xxx-op”, “home” : “/home/xxx-op”, “shell” : “/bin/bash”, “password” : “$1$Ka.Mw69U$TT5HRfSe7xxxxx” }
# vi yyy-op.json // yyy-op.json { “id” : “yyy-op”, “groups”: [ “yyy-op”,“wheel” ], “uid”: 500, “username” : “yyy-op”, “home” : “/home/yyy-op”, “shell” : “/bin/bash”, “password” : “$1$Ka.Mw69U$TT5HRfSe78Pxxxxx” }
Chef-Soloでレシピを書く前の環境について(Vagrantfile,role,node,data_bags)
...こんにちは。小宮です。
いつのまにか今年の前半が終了しました。宇治金時がおいしい季節になってしまったようです。
それはともかく前回の続きです。 今回はChef-Soloのレシピを書く前の環境の定義などまでを書きます。Chef用語などは軽く解説してる、今日から使い始めるChefを見ていただくか定番の入門Chef Soloを見ていただくのが早いんではないかと思います。
Automated infrastructure is on the menuも英語ですがわかりやすいです。
やりたいこととしては以下のとおりです。
Vagrantfileを書いて仮想インスタンスをたてる
chefレポジトリを作る
chefクックブックを作る
nodeを定義する
roleを定義する
data_bagsを定義する
★今回はここまで★
レシピを書く
レシピをノードに適用する
serverspecテストを書く
テストを実環境に実行するテストの構成:
chef-solo元のadmserver:10.0.0.93
knife-solo適用クライアントwebserver:10.0.0.240
knife-solo適用クライアントdbserver:10.0.0.241
全てCentOS5.8です。・AWSの環境変数を定義
AWSのVPC上なので適宜定義しておきます
[shell]# cd # vi .ec2 export AWS_ACCESS_KEY_ID=****** export AWS_SECRET_ACCESS_KEY=******* export AWS_KEYPAIR_NAME=xxx-key export AWS_PRIVATE_KEY_PATH=/root/.ssh/xxx-key # source .ec2[/shell]・VagrantFileを書く
vagrant initを実行するとVagrantfileができますのでそれを編集し、
VPC上で仮想インスタンスを起動するための設定を書きます。Chefで既存手順のレシピを書く1(初期設定)
...こんにちは。プラットフォームの小宮です。
前回はChefでレシピを書く前のroleやdata_bagsなどの環境定義について書きました。
今回は既存手順のレシピ化ということで淡々と地味に書いていきたいと思います。注意:
scriptリソースを使うときはnot_ifまたはonly_ifを必ず書くこと(複数回実行されないように)
bash内でcdを書き忘れるとtarの解凍先パスがその後のコマンドの指定と一致しなくなるので注意
scriptリソースを使うとエラーがまともに出ないので自分でコマンドをたたいて状況を確認する必要がある
リソースのマニュアルを熟読推奨。クックブック名とその内容は以下の通り。
base_setting 初期設定など ★今回ご紹介するレシピはこちらのみです。
login-users ログインユーザ作成
httpd web関連設定
mysqld db関連設定
munin 統計グラフ設定
zabbix 監視設定レシピを書く
・base_settingのレシピを書く
使いまわしやすさを意識した結果細かく分割して書くことにしました。
☆バックアップディレクトリ作成レシピ
[shell]# cd site-cookbooks/base_setting/recipes/ # for i in bkup_dir hosts sysctl disable ntpd ntpdate mail logrotate ;do touch $i.rb ;done # vi bkup_dir.rb directory ‘/etc/.backup/’ do owner ‘root’ group ‘root’ mode ‘0755’ action :create end[/shell]Chef-SoloとVagrantの導入(VPC環境)
...こんにちは。プラットフォームの小宮です。
最近chef流行ってますね。
せっかくだからこの波に乗ってプロダクト環境に合わせてやってみよう的な記事を書こうかと思います。
さっさとServerspecまでたどり着きたいんですが、今回は導入のみの記事でレシピなどはまた次回以降に。
やってみよう的なレベルなのでリファクタリングし甲斐のあるレシピになる予感がします。さて今回Chef化を試みる環境はVPC上に移行する話になってます。(構成はweb2、db2、stg1、nat1です。ELB利用。soloで十分な感じ。)
Vagrant-awsでVPCつかう方法が可能なようなので、Vagrantを使用して構成管理を行いつつKnife-soloも使うことにします。
vagrantとsahara連携でOSの状態を保存してロールバックということが可能となります。
knife-soloだと/sbin等の下のrubyを消して入れ替えようとしてしまうことがあるらしいので、アプリケーションにおいてrubyを使用しないことを確認しておきます。vagrantを入れるのでruby1.8.7より上のバージョンをrbenvで入れます。
(CentOS5系の場合。6系や他のディストリビューションでは別途ruby -vで確認してください)実は、Chef-Clientを/opt/chefの下に入れた段階で以下のようにPATHを通しておけばrubyのバージョンは気にしなくてもよいかもしれません。
[shell]# curl -L https://www.opscode.com/chef/install.sh | bash # export PATH=$PATH:/opt/chef/embedded/bin/ # vi ~/.bashrc PATHをとおしておく[/shell] gemでchefを入れるのは古いやりかたみたいですね。・最初にOracleVirtualBoxを導入
入れる理由はVagrant-awsでインスタンスの起動と管理を行うため。
[shell]cat /etc/redhat-release CentOS release 5.8 (Final) yum install libXmu libXt mesa-libGL qt qt-x11 SDLwget http://download.virtualbox.org/virtualbox/4.2.12/VirtualBox-4.2-4.2.12_84980_el5-1.x86_64.rpm rpm -ivh VirtualBox-4.2-4.2.12_84980_el5-1.x86_64.rpm[/shell]
・ruby-1.8.7より新しいバージョンを導入(必要な場合)
[shell]yum -y install zlib-devel readline-devel openssl-devel yum install ruby ruby-devel rdoc irb rubygems yum install git –enablerepo=rpmforge[/shell]
rbenvのインストール
[shell]git clone git://github.com/sstephenson/rbenv.git ~/.rbenv[/shell]
rbenvのパスを設定する為に以下2行追記
[shell]vi ~/.bashrc export PATH="$HOME/.rbenv/bin:$PATH" eval “$(rbenv init -)” source ~/.bashrc[/shell] ここでのPATHは各環境に合わせてください(rbenvで入れない場合は/opt/chef/embedded/binに通す等)AmazoneSESを使ってメール送信する(SMTPリレー)
...こんにちは。プラットフォームの小宮です。 ちょっと前にAmazoneSESを使ってSMTPリレーでメール送信の設定をしたのでその記録を公開させていただきます。
※SDKでなくSMTPリレーのほうを試します。(SDKつかうにはサーバにruby入っていてruby使う必要があるため。)
★SESの申し込みをする SESのサービスダッシュボードに「RequestProductionAccess」というボタンがあるのでそれを押すと お問い合わせ画面が出てくるので、必要な内容を入力する (名前とサービスドメインとメールアドレスとメールの用途など) Request Production Access to Simple Email Service(お問い合わせ) 入力送信すると、 リクエストありがとう、1日も早く使えるように審査するからマニュアル読んでお待ちください と英文メッセージが出る。
申請の翌日SESのダッシュボードを確認したところ、以下の標記になっていた
Your Amazon SES Sending Limits Sending Quota: send 10000 emails per 24 hour period Quota Used: 0% as of 2013-03-08 10:53 UTC+9 Max Send Rate: 5 emails/second24時間に10000通まで送ることが可能 現在の使用率は0% 最大送信レートは秒間5通
送信元は以下と教えていただいた → 会員登録時「no_reply@hoge.jp」というメールを送信、 問合せ時「support@hoge.jp」というメールを受信(転送)、
WordPressサイトを簡単に他国語化できるプラグイン
...
図1: qTranslate プラグインWordPressはGNUのGettextを取り入れて多言語対応しているものの、実際に1つのサイトで多国語化を実現しようとすると、色々と困難な問題に突き当たる。とある開発案件にて多国語化の要望があったので、色々と言語系のプラグインなどを調べていたところ、見つけたのが「qTranslate」プラグインだ。
このプラグイン、サイト全体の言語管理と各投稿毎(コンテンツ毎)の言語管理を一括で行えるという優れもののプラグインである。
図2: 管理パネルのメニュー
管理パネルのメニューにてプラグインで指定した複数の言語を切り替えられるようになる(図2参照)のは序の口で、サイトのフロントエンド側からも言語を切り替えられる(切り替えのUIは別途作る必要はあるが…)。切り替え方も、ブラウザの言語設定に応じて自動化したり、訪問者の手動切り替えや、URLパラメータによる一時的な切り替えなど、色々と選べる。
そして、極めつけが、それぞれ個別の投稿に対して別言語によるコンテンツを同時に投稿できる点が素晴らしい機能である。サイトの多国語化対応に際して一番大きな障壁が、サイトのメニューやフッター、ボタンといった共用コンテンツは言語ファイルにて他国語化できても投稿等のコンテンツはそれぞれ個別に管理しなければならないという点だ。例えば、日本語でアップした投稿と英語でアップした投稿はそれぞれ個別のコンテンツであり、それらを同じ一つのコンテンツとして管理するためには別の仕組みが必要だった。投稿のUI的にも同時に複数言語の記事が書けないことがネックとなって、サイトの保守性や利便性に難があったのだが、このプラグインはそれらの問題を一挙に解決してくれるのだ。
ということで、モノは試しに、この記事を日本語と英語両方で投稿してみた。英語版を見てみる場合はこのリンクをクリックしてみて欲しい。
図3: プラグイン設定画面「qTranslate」プラグインは2013年6月19日現在のバージョンが2.5.34であり、同梱されている日本語翻訳ファイルが古く、一部翻訳されない部分があったので、私の方で最新バージョンに合わせた翻訳を行ってみた。
※ 下記でダウンロードできた .mo ファイルを qTranslate プラグインの lang フォルダ内に入れてやる(上書きする)ことで最新の翻訳が反映されます。
qTranslate プラグイン 日本語化ファイル
- MO形式:qtranslate-ja.mo (27KB)
動作確認:WordPress 3.5.1 / qTranslate 2.5.34
裏セグメントからyumやwget等したい場合の設定
...裏セグメントのホスト(たとえばVPCのEIPついてないのとかDBやNASなど裏においときたいやつ) から名前解決とかメールとかyumとかwgetとか時刻同期とかメールしたい! という場合の設定についてざっくりまとめさせていただきます。
とりあえず2パターンあります。 NATする(AWSの場合NATインスタンスを使う)パターンと、 グローバル通信できる管理サーバにソフトウェアを入れて解決するパターン。
★NATする(AWSの場合NATインスタンスを使う)パターン
db側はInternetGatewayつけてなくてパブリックでなくローカルなルーティングな場合、 名前解決をはじめ外に出られないです。(※) NATインスタンスを作るのも勿体ないと、複数NICがついたwebをnat化しようとしたところ、 マルチインタフェースなインスタンスはNATの出口に出来ない模様でした。 (※)最近新しくとったアカウントはVPCオンリーになっていてそちらだとグローバルIPがどんどん勝手に振られるようです。。(EIPつけざるをえない仕様)
NATインスタンス作成方法は以下URLから Amazon VPCトレーニング-NATインスタンスの作成方法 VPC詳細 -ほぼ週刊AWSマイスターシリーズ第7回- Amazon VPCでNATを使ってPublic SubnetとPrivate Subnetを分ける
一番上のスライドのとおりでnatインスタンスを作成可能。 ざっくりいうと、 VPCサブネットをつくり、 “ami-vpc-nat"AMIでNATインスタンスを作成し、 NATインスタンスの"Change Source/DestCheck"をDisableにし、 NATインスタンスにEIPをアソシエートし、 PublicSubnetのRouterTableにNATインスタンスのIDを追加し、 必要に応じてNATインスタンスのSecurityGroupを設定する
そのほか、一般的なルータ化設定方法と同様に、 インスタンス作成後にiptablesでnatのルール設定が必要になる模様。
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/16 -j MASQUERADE service iptables save iptables --list -t nat上記スライドのとおりNATインスタンスをデフォルトゲートウェイにするルーティング設定も必要 forwardingの設定も必要
muninのデータを引き継ぐ方法
...こんにちわ。 プラットフォーム担当の宮下です。
今回は、オープンソースのモニタリングツール「munin」でホスト名を変更した時に
今までのデータもそのまま移行する方法を説明します。
なお使用するmuninのバージョンは、1.4.5を使います。1)RRDのデータを移す。
muninのグラフ描写を行っている「RRD tool」のデータを移行します。
[shell] # cd /var/lib/munin/DIR # rename test01 test01-old ./test01-* [/shell]
格納場所に移動して、ファイルを一括で変換してしまいます。
2)HTMLファイルを移す。
[shell] # cd /var/www/html/munin/DIR # mkdir test01-old # chown munin:munin test01-old # cp -pfR test01/* test01-old/ [/shell]
生成されているHTMLと画像ファイルをまとめて移動します。
移動先のディレクトリが既にある場合は、mkdirとchownは飛ばして下さい。
またOSによってはaliasで「cp -i」が入っているかも知れません。
その時は、バックスラッシュを使って一括移動をします。[shell] # \cp -pfR test01/* test01-old/ [/shell]
これで次の収集間隔から新しいホスト名でデータが更新されていきます。
地味な作業ですが、過去のデータを捨ててしまうのはもったいない気がします。
そんな時はデータも一緒に移動してあげて下さい。