この記事では、3 ノードの MySQL 5 データベースを構成する方法について説明します。サーバー クラスタ: 2 つのストレージ ノードと 1 つの
管理ノード。
クラスターは、
「ハートビート」 (別のノードが生きているかどうかを確認するために使用) デバイスと
「ldirectord」 (MySQL クラスターのノードにリクエストを分散する)デバイスを提供する Ultra Monkey インストール パッケージを
使用する 2 つのノードで構成される高可用性ロード バランサーです。 。この記事では、各ノードで Debian Sarge Linux システムを使用します。他の Linux ディストリビューションのインストールは若干
異なる場合があります。 MySQL バージョン 5.0.19 を使用します。 MySQL 5 を使用したくない場合は、MySQL 4.1 を使用することもできます
が
、まだテストしていません。この記事は実践的なアプリケーション ガイドであり、理論はあまり含まれていません。クラスタリングに関する理論はオンラインでたくさん見つかります。
あるサーバーでは
、次の Debian サーバーを使用しています。これらはすべて同じネットワーク セグメント上にあります (この例: 192.168.0.x):
sql1.test.com: 192.168.0.101 MySQL Cluster Node 1
sql2.test.com: 192.168。 0.102 MySQL Cluster ノード
2loadb1.test.com: 192.168.0.103 ロード バランシング 1 / MySQL クラスタ管理サーバー
loadb2.test.com: 192.168.0.104 ロード バランシング 2
さらに、仮想 IP アドレス: 192.168.0.105 が必要です。この MySQL クラスターのロード バランシングを調整して、
アプリケーションが統一された単一の IP アドレスを介してクラスターにアクセスできるようにします。
MySQL Cluster で 2 つのノードを使用したい場合でも、3 番目のノードである MySQL Cluster Management Server が必要になります
。これは主な理由の 1 つです。MySQL Cluster ノードの 1 つがダウンし、MySQL Cluster Management Server が実行されていない場合、
その場合、2 つのクラスター ノード上のデータは不整合になります (「スプリット ブレイン」)。 MySQL Cluster を構成するために必要な
ので、通常、インストールには 5 つのマシンが必要です:
2 MySQL Cluster ノード + 1 クラスター管理サーバー + 2 ロード バランサー = 5
クラスター管理サーバーは多くのリソースを使用しないため、システムは空になります。そのため、
最初の
ロード バランサーをそれと同じマシンに配置でき、サーバーが 1 台節約できるため、理想的には 4 台のマシンのみが必要になります。
2. MySQL クラスター管理サーバーを構成します。
まず、MySQL 5.0.19 をダウンロードし、クラスター管理サーバー (ndb_mgmd) とクラスター管理クライアント (ndb_mgm -
クラスターの動作を監視するために使用できます) をインストールする必要があります。手順は、loadb1.test .com (192.168.0.103):
loadb1.test.com:
mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get
にあります。/ダウンロード/ MySQL-5.0/mysql-max-5.0.19-linux-i686-
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql- max-5.0 .19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/ bin/ndb_mg *
cd /usr/src
rm -rf /usr/src/mysql-mgm
次に、クラスター構成ファイル /var/lib/mysql-cluster/config.ini:loadb1.test.com:mkdir を作成する必要があり
ます
。 /var /lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
————-
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# クラスターのセクション管理ノード
[ NDB_MGMD]
# 管理ノード (このシステム) の IP アドレス
HostName=192.168.0.103
# ストレージ ノードのセクション
[NDBD]
# 最初のストレージ ノードの IP アドレス
HostName=192.168.0.101
DataDir= /var/lib/ mysql-cluster
[NDBD]
# 2 番目のストレージ ノードの IP アドレス
HostName=192.168.0.102
DataDir=/var/lib/mysql-cluster
# ストレージ ノードごとに 1 つの [MYSQLD]
[MYSQLD]
[MYSQLD]
———-
実際のアプリケーション、ファイルを変更してください。 の IP アドレスを対応する IP に置き換えてください。
次に、クラスター管理サーバーを起動します。loadb1.test.com
:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
また、サーバーの起動時に管理サーバーを自動的に起動できるようにする必要があるため、次のように作成します。非常に単純な初期化
スクリプトと対応する起動接続:
loadb1.test.com:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini' > /etc/init.d/ndb_mgmd
chmod 755 /etc/init。 d/ ndb_mgmd
update-rc.d ndb_mgmd のデフォルト
3 つの構成 MySQL クラスター ノード (ストレージ ノード)
次に、mysql-max-5.0.19 を sql1.test.com と sql2.test.com にそれぞれインストールします:
sql1.example.com/ sql2 .example.com:
groupadd mysql
useradd -g mysql mysql
cd /usr/local/
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
ln -s mysql - max-5.0.19-linux-i686-glibc23 mysql
cd mysql
scripts/mysql_install_db –user=mysql
chown -R root:mysql .
chown -R mysql data
cp support-files/mysql.server /etc/init.d/
chmod 755 /etc/init.d/mysql.server
update-rc.d mysql.server デフォルト
cd /usr/local/mysql/bin
mv * /usr/bin
cd ../
rm -fr /usr/local/mysql/bin
ln -s /usr/bin /usr/local/mysql/bin
次に、各ノードに MySQL 構成ファイル /etc/my.cnf を作成します。
vi /etc/my.cnf
–
[mysqld]
ndbcluster
# クラスターの IP アドレス管理ノード
ndb-connectstring=192.168.0.103
[mysql_cluster]
# クラスター管理ノードの IP アドレス
ndb-connectstring=192.168.0.103
–
クラスター管理サーバーに正しい IP アドレスを入力していることを確認してください。
次に、データ ディレクトリを作成し、各クラスター ノードで MySQL サーバーを起動します。
sql1.test.com / sql2.test.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
ndbd –Initial
/ etc/init.d/mysql.server start
(覚えておいてください: MySQL は初めて起動するか、loadb1.test.com の /var/lib/mysql-cluster/config.ini が
変更されたときにのみ起動します。ndbd –initial のみを使用してください)
ここで、MySQL root アカウントのパスワードを設定します:
sql1.test.com / sql2.test.com:
mysqladmin -u root password yourrootsqlpassword
サーバーの起動時にクラスター ノードを起動する必要があるため、ndbd 初期化を作成します。スクリプトと対応する
システム起動接続:
sql1.test.com / sql2.test.com:
echo 'ndbd' > /etc/init.d/ndbd
chmod 755 /etc/init.d/ndbd
update-rc d ndbd のデフォルト。
4 MySQL Cluster のテスト
MySQL Cluster の構成は完了しました。今度はそれをテストします。クラスター管理サーバー
(loadb1.test.com) で、クラスター管理クライアント ndb_mgm を実行して、クラスター ノードが接続されているかどうかを確認します。loadb1.test.com
:
ndb_mgm
次のように表示されます。
– MySQL Cluster — 管理クライアント –
ndb_mgm >
コマンド ラインで
「show; show」と入力すると
、出力情報は次のようになります:
ndb_mgm> show;
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node( s)
id= 2 @192.168.0.101 (バージョン: 5.0.19、ノードグループ: 0、マスター)
id=3 @192.168.0.102 (バージョン: 5.0.19、ノードグループ: 0)
[ndb_mgmd(MGM)] 1 ノード)
id=1 @192.168.0.103 (バージョン: 5.0.19)
[mysqld(API)] 2 ノード
id=4 @192.168.0.101 (バージョン: 5.0.19)
id=5 @192.168.0.102 (バージョン: 5.0.19)
ndb_mgm>
すべてのノードが接続されていることがわかります。そうすればすべてがうまくいきます!
「quit;」
と入力して
、ndb_mgm クライアント コンソールを終了します。
次に、sql1.test.com ノードにテスト データベースを作成し、テスト テーブルを作成し、
いくつかのテスト データを入力します。
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE
mysqlclustertesttable (i INT) ENGINE=NDBCLUSTER; ;
INSERT INTO testtable () VALUES (1);
SELECT * FROM testtable;
quit
(上記の CREATE ステートメントを見てください。クラスタ化するすべてのデータベースのテーブルは ENGINE=NDBCLUSTER を使用する必要があります。
他の ENGINE を使用すると、クラスタリングが行われます。機能しません!)
SELECT の結果は
次
のようになります。mysql> SELECT * FROM testtable |
i
+
——
+
1
row in set (0.03 秒)
sql2.test.com ノード上の同じデータベース (はい、まだ作成する必要がありますが、テストテーブルが ENGINE=NDBCLUSTER を使用しているため、データはテストテーブルの作成後に
sql2.test.com にコピーされます
):sql2。 test.com:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
SELECT
*
FROM testtable;
SELECT の結果は、上記の sql1.test.com の結果と同じである必要があります
。 —+
| i |
+——+
| 1 |
+——+
セット内の 1 行 (0.04 秒)
データが sql1.test.com ノードから sql2.example.com ノードにコピーされたことがわかります。ここで、
別の行を testtable に挿入します。
sql2.test.com:
INSERT INTO testtable () VALUES (2);
次に
、sql1.example.com ノードに戻り、新しく挿入された行が表示されるかどうかを確認します。
sql1.example.com:
mysql
-u root -p
USE
mysqlclustertest;
次
のような出力が表示
さ
れ
ます
。
| 2 |
+——+
セット内の 2 行 (0.05 秒)
なので、すべてのクラスター ノードに同じデータが含まれます。
次に、ノード 1 (sql1.example.com) を停止するかどうかを確認します。
sql1.example.com:
killall ndbd
を実行し、
ps aux | grep ndbd | grep -iv grep
をチェックして、すべての ndbd プロセスが終了していることを確認します。まだ ndbd プロセスが表示される場合は、
すべての ndbd プロセスが終了するまでkillall ndbd
を再度実行します。
次に、管理サーバーでクラスター (loadb1.example.com) のステータスを確認します。loadb1.example.com
:
ndb_mgm
ndb_mgm コンソールで
show;
と入力すると、次のように表示されます。
ndb_mgm> show;
localhost で管理サーバーに接続されています。 :1186
クラスター構成
————————
[ndbd(NDB)] 2 ノード
id=2 (未接続、192.168.0.101 からの接続を受け入れます)
id=3 @192.168.0.102 (バージョン: 5.0 .19) 、ノードグループ: 0、マスター)
[ndb_mgmd(MGM)] 1 ノード
id=1 @192.168.0.103 (バージョン: 5.0.19)
[mysqld(API)] 2 ノード
id=4 @192.168 .0.101 (バージョン: 5.0.19)
id=5 @192.168.0.102 (バージョン: 5.0.19)
ndb_mgm>
ご覧のとおり、sql1.example.com ノードは接続されていません。
「終了」
と入力して
、ndb_mgm コンソールを終了します。
sql2.example.com ノードを確認してみましょう:
sql2.example.com:
mysql -u root -p
USE mysqlclustertest;
SELECT * FROM testtable;
quit;
SELECT クエリの結果は次のようになります
。
+— —+
|
+—+
1 |
+—
+
セット内 2 行 (0.17 秒)
さて、sql1.test.com ノードを再度開始します
。 .example .com:
ndbd
5 クラスターを再起動する方法
次に、loadb1.test.com ノードまたはその他の /var/lib/mysql-cluster/config.ini の変更により、
MySQL クラスターを再起動する必要がある
と想像してみましょう。理由。これを行うには、
loadb1.example.com ノードで ndb_mgm クラスター管理クライアントを使用します。loadb1.test.com
:
ndb_mgm
ndb_mgm コンソールで「shutdown」と入力すると
、
次
の
ようなメッセージが表示されます
。: クラスターのシャットダウンが開始されました
。 ノード 2: ノードのシャットダウン
が完了しました。 2 つの MySQL Cluster ノードがシャットダウンされました
。
ndb_mgm>
これは、クラスター ノード sql1.test.com と sql2.test.com がシャットダウンされたことを意味します。クラスタ管理サーバーはすべてシャットダウンされました。
quit を
実行して
ndb_mgm コンソールを終了します。
クラスター管理サーバーを起動するには、loadb1.test.com:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini、sql1.test.com
および sql2.test.com
でこれを実行します。実行場所:
sql1.example.com / sql2.example.com:
ndbd
または、loadb1.test.com の /var/lib/mysql-cluster/config.ini ファイルを変更しました:
ndbd –initial
この後、クラスターが再起動されたかどうかを確認するには、loadb1.test.com をチェックします。loadb1.test.com
:
ndb_mgm
ndb_mgm コンソールで
show と入力し、
クラスターの現在のステータスを表示します。再起動後、すべてのノードが接続されたことを報告するまでに少し時間がかかる場合があります。
「終了」
と入力して
、ndb_mgm コンソールを終了します。
6. 負荷分散の構成
MySQL クラスターが完成し、使用を開始できるようになりました。
ただし、クラスターにアクセスするための
個別の IP
アドレス
がないため、アプリケーションの一部を MySQL Cluster ノード 1 (sql1.test.com) を使用するように構成し、別の部分をノード 2 (sql2.test.com) を使用するように構成する必要があります。もちろん、すべてのアプリケーションは 1 つのノードのみを使用する必要がありますが、
クラスター ノード間で負荷を分散したくない場合、クラスターを 1 つ使用する目的は何でしょ
うか
?ノードがダウンしますか?その場合、このクラスター ノードを使用するアプリケーションはまったく動作できなくなります。
ここでの解決策は、MySQL Cluster の前にロード バランサを構成して、各 MySQL Cluster ノード間の負荷のバランスをとることです。
ロード バランサーはクラスター ノード間で共有仮想 IP アドレスを構成し、すべてのアプリケーションはこの仮想 IP アドレスを使用して
クラスターにアクセスします。ノードの 1 つがダウンしても、ロード バランサーがリクエストを
正常に動作している他のノードに転送するため、アプリケーションは引き続き動作します。
この例では、ロード バランサーがボトルネックになります。このロードバランサーが壊れたらどうなるでしょうか?したがって、
(アクティブ/パッシブ) アクティブ/パッシブ インストール モードで 2 つのロード バランサーを構成します。これは、アクティブなロード バランサーと
ホット スタンバイのロード バランサーが 1 つあり、アクティブなロード バランサーがダウンすると、アクティブになることを意味します。各ロード バランサーはハートビートを使用して他のロード バランサーのアクティビティをチェックします
。また、ロード バランサーはクラスター ノードにトラフィックを分散する役割を担う ldirectord も使用します。
heartbeat と ldirectord は両方とも、これからインストールする Ultra Monkey インストール パッケージに含まれています。
loadb1.test.com ノードとloadb2.test.com ノードのシステム カーネルが IPVS (IP 仮想サーバー) をサポートしていることは非常に重要です。
IPVS は、Linux カーネルのトランスポート層で負荷分散を実行します。
6.1 Ultra Monkey のインストール
OK
、
それでは始めましょう: まず、loadb1.test.com ノードとloadb2.test.com ノードで IPVS を有効
に
し
ます
。
ip_vs_lblcr
modprobe ip_vs_lc
modprobe
ip_vs_nq
modprobe ip_vs_rr modprobe ip_vs_sed
modprobe ip_vs_sh
modprobe ip_vs_wlc
modprobe ip_vs_wrr
起動時に IPVS モジュールを有効にするには、/etc/modules:loadb1.test.com /
のモジュールを列挙します
。vi /etc /
modulesip_vs_dh
ip_vs_ftp
ip_vs
ip_vs_lblc
ip_vs_lblcr
ip_vs_lc
ip_vs_nq
ip_vs_rr
ip_vs_sed
ip_vs_sh
ip_vs_wlc
ip_vs_wrr
次に、/etc/apt/sources.list を編集し、Ultra Monkey のダウンロード ポイントを追加して、Ultra Monkey をインストールします:
loadb1.test .com/loadb2.test.com:
vi /etc/apt/sources.list
deb http://www.ultramonkey.org/download/3/ sarge main
deb-src http://www.ultramonkey.org/download/3 sarge main
apt-get update
apt-get
Ultramonkey libdbi-
perl libdbd-mysql-perllibmysqlclient14
-dev をインストールする
と、次の警告が表示され
ます
。
|
libsensors3 はシステムでは機能しません。
これを有効にする場合は、
カーネル設定の「I2C ハードウェア センサー チップのサポート」
を
参照してください。次の質問に答えてください:
ブート時に IPVS ルールを自動的にロードしますか?
<-- いいえ
デーモン方式を選択します。
<--
なし インストールしたばかりの libdbd-mysql-perl インストール パッケージは MySQL 5 では機能しません。 MySQL Cluster MySQL 5) を使用するため、
最新
の
DBD::mysql Perl インストール パッケージをインストール
し
ます
。
mysql -3.0002
perl Makefile.PL
make
make install
最初にパケット転送を有効にする必要があります:
loadb1.example.com /loadb2.example.com:vi
/etc/sysctl.conf
#パケット転送を有効にするnet.ipv4.ip_forward = 1
6.2 ハートビートの設定 (ハートビート)
3 つのファイル (loadb1.test.com とloadb2.test.com
のファイルはまったく同じである必要があります) を作成してハートビートを構成します
。 /ha .cf
logfacility local0
bcast eth0
mcast eth0 225.0.0.1 694 1 0
auto_failback off
Nodeloadb1
Nodeloadb2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
覚えておいてください: ノード名をリストする必要があります (これはこの例では、loadb1 とloadb2)
uname -n
これら以外には、このファイルに変更を加える必要はありません。
vi /etc/ha.d/haresourcesloadb1
ldirectord::ldirectord.cf
LVSSyncDaemonSwap::master
IPaddr2::192.168.0.105/24/eth0/192.168.0.255
負荷分散ノード名の 1 つを列挙する必要があります (ここでは:
vi /etc/ha.d/authkeys
auth 3
3 md5 somerandomstring
somerandomstring は、
loadb1 とloadb2 がそれぞれを認証するために使用する 2 つのハートビートです
。
その他 デーモンのパスワード。
ここで独自のパスワードを設定します。 3つの暗号化方式から選択できます。私は通常、暗号化に md5 を使用します。
/etc/ha.d/authkeysは
root アカウントに対して読み取り専用である必要があります。 ここでは次のように
し
ます
。
ldirectord 構成ファイルの作成、ロードバランサー:
loadb1.example.com /loadb2.example.com:vi
/etc/ha.d/ldirectord.cf
#グローバル ディレクティブ
checktimeout=10
checkinterval=2
autoreload=no
logfile="local0"
quiescent =はい
仮想 = 192.168.0.105:3306
サービス = mysql
実数 = 192.168.0.101:3306 ゲート
実数 = 192.168.0.102:3306 ゲート
checktype = ネゴシエート
ログイン = "ldirector"
passwd = "ldirectorpassword"
データベース = "ldirectordb"
request = "SELECT * FROM connectioncheck"
スケジューラー = wrr
正しい仮想 IP アドレス (192.168.0.105) と MySQL クラスター ノードの正しい IP アドレス (192.168.0.101 および 192.168.0.102) を入力してください。
3306 は、MySQL の実行時のデフォルトのポートです。また、MySQL ユーザー (ldirector) とパスワード (ldirectorpassword)、データベース (ldirectordb)、および
SQL クエリも指定しました。 ldirectord は、この情報を使用して MySQL クラスター ノードをテストし、それらが常に利用可能であることを確認します。次に、ldirector ユーザーを使用して
ldirectordb データベースを作成します。
ここで、ハートビートに必要な起動接続を作成し、ldirectord
を削除します (ldirectord はハートビート
によって起動さ
れるため)。
75 2 3 4 5 . stop 05 0 1 6 .
update-rc.d -f ldirectord delete
6.4 データベース ldirector の作成
次に、MySQL クラスター ノード sql1.test.com および sql2.test.com に ldirector データベースを作成します。
このデータベースは、MySQL クラスター ノードの可用性を
確認するためにロード バランサーによって使用されます
。sql1.test.com:
mysql -u root -p
GRANT ALL ON ldirectordb.* TO 'ldirector'@'%' IDENTIFIED BY 'ldirectordb'
CREATE
TABLE connectioncheck (i INT)
ENGINE
;
=NDBCLUSTER;
INSERT INTO connectioncheck () VALUES (1)
;
sql2.test.com:
mysql -u root -p
GRANT ALL ON ldirectordb.* TO 'ldirector'@'%' IDENTIFIED BY 'ldirectorpassword'
;
CREATE DATABASE ldirectordb;
quit;
6.4 負荷分散のための MySQL Cluster ノードの準備
最後に、仮想 IP アドレス 192.168.0.105 を受け入れるように MySQL Cluster ノード sql1.test.com を構成する必要があります。
sql1.test.com / sql2.test.com:
apt-get install iproute
/etc/sysctl.conf に次の内容を追加します。
vi /etc/sysctl.conf
# arp_ignore オプションの構成を有効にします
net.ipv4.conf.all 。 arp_ignore = 1
# eth0 で arp リクエストを受信した場合、そのアドレスが # eth0 に設定されている場合にのみ応答します
。特に、アドレスがlo
net.ipv4.conf.eth0.arp_ignore = 1
#
に設定されている場合は応答しません。
eth1 についても同様で、すべての ARPing インターフェイスに追加
#net.ipv4.conf.eth1.arp_ignore = 1
# arp_announce オプションの設定を有効にする
net.ipv4.conf.all.arp_announce = 2
# eth0 経由で ARP リクエストを送信するときは、常に
# このアドレス
が ARP リクエストの送信元アドレスとして eth0 に設定されており
、 # lo 上のアドレスにパケットが eth0 に送信されており
、arp リクエストが必要な場合は、そのアドレスが # 設定されています。 lo が使用されます。
# arp リクエストの送信元 IP アドレスが宛先の ARP キャッシュに入力されるため
、 # この場合、これは
実際の lo のアドレスとしては望ましくありません。サーバーは
# linux-director によってのみ通知される必要があります。
net.ipv4.conf.eth0.arp_announce = 2
# eth1 についても同様で、すべての ARPing インターフェイスに追加します
#net.ipv4.conf.eth1.arp_announce = 2
sysctl -p
は追加します次の段落を /etc/network/interfaces に追加します:
sql1.test.com / sql2.test.com:
vi /etc/network/interfaces
auto lo:0
iface lo:0 inet static
address 192.168.0.105
netmask 255.255.255.255
pre - up sysctl -p > /dev/null
ifup lo:0
7. ロード バランサーを開始してテストします。
次に
、2 つのロード バランサー マネージャーを開始します
。
/etc/init.d/heartbeat start
エラーが表示されない場合は、各ロード バランサーを今すぐ再起動する必要があります:
loadb1.test.com /loadb2.test.com:
shutdown -r now
再起動後、両方のロードが完了したかどうかを確認できます。バランサーは期待通りに動作します:
loadb1.test.com /loadb2.test.com:ip
addr sh eth0
アクティブなロード バランサーには仮想 IP アドレス (192.168.0.105) がリストされるはずです:
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:45:fc:f8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.103/24 brd 192.168.0.255scope global eth0
inet 192.168.0.105/24 brd 192.168.0.255
のロード バランサ
スコープ グローバル セカンダリ eth0パッシブ (ホット スタンバイ) は次のように表示されます。2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:16:c1:4e brd ff:ff:ff :ff:ff:ff
inet 192.168.0.104/24 brd 192.168.0.255scope global eth0
loadb1.test.com /loadb2.test.com:
ldirectord ldirectord.cf status
アクティブなロード バランサーの出力:
ldirectord for /etc/ha .d/ldirectord.cf が実行中ですpid : 1603
パッシブ ロード バランサーの出力:
ldirectord は /etc/ha.d/ldirectord.cf に対して停止しています
loadb1.example.com /loadb2.example.com:
ipvsadm -L - n
アクティブ ロード バランサーの出力:
IP 仮想サーバーのバージョン1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.105:3306 wrr
-> 192.168.0.101:3306 Route 1 0 0
-> 192.168.0.102:3306
出力オンRoute 1 0 0 パッシブ ロード バランサー:
IP 仮想サーバー バージョン 1.2.1 (サイズ = 4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
loadb1.test.com /loadb2.test.com:
/etc/ ha.d/resource.d/LVSSyncDaemonSwap マスター ステータス
アクティブ ロード バランサーの出力:
マスター実行中
(ipvs_syncmaster pid: 1766)
パッシブ ロード バランサーの出力:
マスターが停止しました
(ipvs_syncbackup pid: 1440)
テストがすべて正常であれば、アクセスできるようになります。仮想 IP アドレス 192.168.0.105 を使用して、同じネットワーク (192.168.0.x) 上の他のサーバーから MySQL データベースにアクセスします:
mysql -h 192.168 .0.105 -u ldirector -p
(注意してください: MySQL クライアントは少なくともバージョン 4.1 である必要があります) ; 古いバージョンでは MySQL5 は実行されません。 )
これで、MySQL クラスター ノードの 1 つをシャットダウンしてテストできます。それでも MySQL データベースに接続できるはずです。
8 注
MySQL Cluster を実行する場合、覚えておくべき重要な点がいくつかあります。
– すべてのデータはメモリ内にあります。 したがって、クラスター ノードには大量のメモリが必要です。
各ノードに必要なメモリ容量の計算式
は次のとおりです
:(データベース サイズ SizeofDatabase * レプリカ数 NumberOfReplicas * 1.1 ) / データ ノード数 NumberOfDataNodes
したがって、データベース サイズが 1GB の場合、各ノードに 1.1GB を装備する必要があります。記憶の!
– クラスター管理ノードは、ポート 1186 上のあらゆる接続を待機します。これは、あまり安全ではないことを意味するため、MySQL Cluster を別のネットワークで実行する必要があります。