投稿

8月, 2014の投稿を表示しています

MariaDB, MySQLの冗長化、負荷分散の構成を考える

イメージ
WordPressのデータベースを複数サーバーで冗長化して、負荷分散しながら管理しやすく、将来的にも拡張しやすい構成を考えたときの覚書。調査した関連技術MariaDB Serverスタンドアローン版。
他のサーバーとはレプリケーション機能で冗長化する。
10.0からは並列レプリケーションが実装されて同期スピードが速くなったらしい。
更新はマスターに。参照はスレーブからというのが一般的。MariaDB Galera Cluster複数のサーバーでお互いを監視して同期してくれる。
マスター、スレイブの概念がない。
全てのノードに対して更新/参照が可能で、一つのノードへの更新が全てに伝搬される。
ノードの追加・削除は自動でやってくれる。
負荷分散(ロードバランス)の仕組みは別途用意しないといけない。MySQL Cluster管理ノード、データノード、SQLノードでクラスタを実現する。
データノードがデータの一部を持ち合うこと(シャーディング)で負荷分散になる。その分ネットワークがボトルネックになりやすい。
MySQL Cluster 構築・運用バイブル」が分かりやすいSpider Storage Engine複数サーバー間でデータを分散させるシャーディングを実現可能なストレージエンジン。
分散されたデータの管理はSpiderが行うため、使う側は通常のテーブルと同じように扱える。
MariaDB 10.0.4からバンドルされている。MySQL ProxyMySQL専用のロードバランサー。
MariaDBとの組み合わせで動作するのかな?
参考:漢(オトコ)のコンピュータ道: MySQL Clusterへの接続方法PHP mysqlnd_msmysqlnd(MySQL Native Driver)のプラグイン。
設定に従いロードバランスしてくれる。情報少ない。
参考:PHP: mysqlndプラグイン と MySQL Proxyの比較 - Manual
参考:PHP: mysqlnd_ms - ManualLinux Vertual Server
(LVS)Linuxの負荷分散ソリューションの仕組み。
LinuxカーネルにはIPVSというロードバランスソフトウェアが組み込まれているので、管理ツール「ipvsadm」から設定することで簡単にロードバランサになれる。
特定のポートを監視すればMySQLのロードバラン…

CentOS6にRedmine2.5をInstallして2.4から移行

イメージ
新しいサーバーにRedmineをインストールしてデータ移行したときの覚書。環境: CentOS 6.5, Ruby 2.1.2, Redmine 2.5.2, MariaDB 10.0.13目次バックアップRubyのインストールRedmineのインストールRedmineの初期設定とデータベースのテーブル作成Railsサーバー「unicorn」のインストールnginxにリバースプロキシの設定を記述データを移行1.バックアップphpMyAdminでエクスポートしとく2.Rubyのインストール公式サイトのドキュメントを参考に。Redmine 2.5をCentOS 6.5にインストールする手順 | Redmine.JP Blogビルドに必要なパッケージをインストール。
# yum install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel# yum install ImageMagick ImageMagick-develRuby 2.1にも対応したらしいので最新のRuby 2.1.2をダウンロードしてインストールする。# wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz
# tar xzvf ruby-2.1.2.tar.gz
# cd ruby-2.1.2
# ./configure --disable-install-doc
# make
# make installbundlerのインストール。
# gem install bundler --no-rdoc --no-ri3.RedmineのインストールphpMyAdminでRedmine用のデータベースを作っておく。文字コードは「utf8mb4」にした。redmine専用のユーザーも作成。Redmineをダウンロードして設置。# cd ..
# wget http://www.redmine.org/releases/redmine-2.5.2.tar.gz
# tar xzvf redmine-2.5.2.tar.gz
# mv redmine-2.5.2 /opt/redmine
# cd /opt/redmine/データベース接続設定
# vi config/datab…

【CentOS】さくらVPSサーバーの初期設定

イメージ
さくらVPSの初期設定を覚書。環境: CentOS6.5 x86_64, Tera Term 4.83目次SSHの鍵認証設定 Firewall設定 起動サービス設定 ホスト名変更1.SSHの鍵認証設定初期のパスワード認証から鍵認証に切り替える。まずは鍵を生成。Tera Termで簡単に作れる。Tera Termのメニューの Setup → SSH KeyGenerator...RSAを選択して「Generate」。「パスフレーズ」を入力してpublic keyとprivate keyを保存。生成した公開鍵をサーバーに設定する。# cd
# mkdir .ssh
# vi .ssh/authorized_keys公開鍵をエディタで開いてコピペする。他のユーザーが閲覧出来ないように権限変更
# chmod 600 .ssh/authorized_keysSSHの設定を開いて、鍵認証を「有効」、パスワード認証を「無効」にする。
# vi /etc/ssh/sshd_configPubkeyAuthentication yes
PasswordAuthentication no再起動。今の接続は切断されないから大丈夫。
# /etc/rc.d/init.d/sshd restart別コンソールから今までのパスワード認証で接続できないのを確認。今度は秘密鍵とパスフレーズを設定して接続できることを確認。下記のようなエラーが出るときは大抵パスフレーズを指定してないとき。read error SSH2 private key file
error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decryptTeraTerm Menuの場合はパスワードの欄にパスフレーズを入力する。< 2014/09/18 Modified >
SSHで日本語表示すると文字化けするので、システム言語をUTF8対応にする。
# vi /etc/sysconfig/i18nLANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"2.Firewallの設定ファイヤーウォール(iptables)の設定はツールを使う。とりあえずSSHだけ有効に。
# system-c…

さくらVPSを複数台借りてローカルIPを割り振る

イメージ
さくらVPSでサーバーを複数台借りたあと、ローカルネットワークを設定したときの覚書。環境: CentOS 6.5 x86_64さくらVPSは同じリージョン内のサーバー同士を無料でローカルネットワーク化できる。スイッチの追加、設定方法は公式ドキュメントを参考に。ローカルネットワーク接続|さくらのVPS|さくらインターネット公式サポートサイトスイッチをeth1に追加したあとOSに認識させる必要がある。# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-eth1
# vi ifcfg-eth1DEVICE="eth1"
IPADDR="192.168.0.1"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Ethernet"
IPV6INIT="no"
IPV6_ROUTER="no"ネットワーク再起動
# /etc/rc.d/init.d/network restart確認
# ifconfig他のサーバーも同様にIPADDRだけ変えて設定。それぞれローカルIPで接続出来るか確認する。
# ping 192.168.0.1< Related Posts >【Linux】IPアドレスを追加する安くて汎用性のあるサーバーホスティング会社を探す

[Titanium]AndroidでTextFieldのhintTextの色を設定

イメージ
TextFieldのhintTextの色を設定したくて調べたときの覚書。Androidは色が濃いので入力してあるのか判断しづらい。環境:Titanium SDK 3.3.0.GA, Android前にカーソル(キャレット)の色を変えたときと同じ方法で出来た。カスタムスタイルを定義するXMLファイルを用意して色を指定する。$ vi platform/android/res/values/styles.xml<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
        <item name="android:textColorHint">#ccc</item>
    </style>
</resources>Android公式ドキュメントも参考に。R.attr | Android Developers< Related Posts >[Titanium] TextFieldにカーソル(キャレット)が表示されないTitaniumを使ったアプリと苦労した事とかのまとめ2013年