ستخبرك هذه المقالة بكيفية تكوين قاعدة بيانات MySQL 5 ثلاثية العقد مجموعة الخادم: عقدتان للتخزين
وعقدة إدارة واحدة.
المجموعة عبارةعن موازن تحميل عالي التوفر
يتكون من عقدتين باستخدام حزمة تثبيت Ultra Monkey
التي توفر جهاز "نبض القلب" (يستخدم للتحقق مما إذا كانت عقدة أخرى على قيد الحياة) وجهاز
"ldirectord" (توزيع الطلبات على عقد مجموعة MySQL). .في هذه المقالة، تستخدم كل عقدة من عقدنا نظام Debian Sarge Linux. قد يكون تثبيت توزيعات Linux الأخرى
مختلفًا بعض الشيء. نحن نستخدم MySQL الإصدار 5.0.19. إذا كنت لا تريد استخدام MySQL 5، فيمكنك أيضًا استخدام MySQL 4.1،
على الرغم من
أنني لم أختبر ذلك بعد.هذه المقالة عبارة عن دليل تطبيقي عملي، ولا تتضمن الكثير من النظرية. يمكنك العثور على الكثير من النظريات حول التجميع عبر الإنترنت.
بالنسبة لخادم واحد،
أستخدم خادم دبيان التالي، وجميعهم على نفس مقطع الشبكة (هذا المثال: 192.168.0.x):
sql1.test.com: 192.168.0.101 MySQL Cluster Node 1
sql2.test.com: 192.168. 0.102 عقدة كتلة MySQL 2
تحميل b1.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، إلا أننا لا نزال بحاجة إلى عقدة ثالثة، MySQL Cluster Management Server
، لسبب رئيسي واحد: إذا تعطلت إحدى عقد MySQL Cluster ولم يكن MySQL Cluster Management Server قيد التشغيل، إذن
عندها ستكون البيانات الموجودة على العقدتين العنقوديتين غير متناسقة ("الدماغ المنقسم"). نحن بحاجة إليها لتكوين MySQL Cluster،
لذا يتطلب التثبيت بشكل عام خمس أجهزة:
2 عقدة MySQL Cluster + 1 خادم إدارة الكتلة + 2 موازن تحميل = 5
نظرًا لأن خادم إدارة المجموعة لا يستخدم الكثير من الموارد، فسيكون النظام فارغًا ولا يفعل شيئًا. حتى نتمكن من وضع موازن التحميل
الأول
لدينا على نفس الجهاز الذي يستخدمه، مما يوفر لنا خادمًا واحدًا، لذلك نحتاج بشكل مثالي إلى أربعةأجهزة فقط.
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 /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
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]
# عنوان IP لعقدة التخزين الثانية
HostName=192.168.0.102
DataDir=/var/lib/mysql-cluster
# واحد [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 defaults
ثلاث عقد مجموعة 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:
mysqlchown -R mysql data
cp support-files/mysql.server /etc/init.d/
chmod
.755 /etc/init.d/mysql.server
update-rc.d mysql.server defaults
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 – الأولي
/ يبدأ etc/init.d/mysql.server
(يرجى تذكر: نحن نبدأ MySQL فقط للمرة الأولى أو عندما
يتغير /var/lib/mysql-cluster/config.ini علىloadb1.test.com. استخدم فقط ndbd –initial)
الآن، حان الوقت لتعيين كلمة المرور لحساب جذر MySQL:
sql1.test.com / sql2.test.com:
mysqladmin -u كلمة مرور الجذر yourrootsqlpassword
نحتاج إلى بدء عقدة الكتلة عند بدء تشغيل الخادم، لذلك نقوم بإنشاء تهيئة ndbd البرنامج النصي واتصال بدء تشغيل النظام المقابل
:
sql1.test.com / sql2.test.com:
echo 'ndbd' > /etc/init.d/ndbd
chmod 755 /etc/init.d/ndbd
update-rc
4 اختبار مجموعة MySQL
اكتمل تكوين مجموعة MySQL لدينا، والآن حان وقت اختبارها. على خادم إدارة المجموعة
(loadb1.test.com)، قم بتشغيل عميل إدارة المجموعة ndb_mgm للتحقق مما إذا كانت عقد المجموعة متصلة:
loadb1.test.com:
ndb_mgm
سترى هذا:
- NDB Cluster - Management Client -
ndb_mgm >
في عرض Enter؛
يجب
أن تكون معلومات الإخراج على النحو التالي:
ndb_mgm> show؛
متصل بخادم الإدارة على: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 عقدة( s)
id= 2 @192.168.0.101 (الإصدار: 5.0.19، Nodegroup: 0، Master)
id=3 @192.168.0.102 (الإصدار: 5.0.19، Nodegroup: 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>
إذا رأيت أن جميع العقد الخاصة بك متصلة. ثم كل شيء يسير على ما يرام!
أدخل
إنهاء؛
للخروج من وحدة تحكم العميل ndb_mgm.
نقوم الآن بإنشاء قاعدة بيانات اختبارية على عقدة sql1.test.com، وإنشاء جدول اختبار،
وملء
بعض بيانات الاختبار:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE mysqlclustertest;
;
INSERT INTO testtable () VALUES (1);
SELECT * FROM testtable;
(
انظر إلى عبارة CREATE أعلاه: يجب أن تستخدم جداول جميع قواعد البيانات التي نريد تجميعها ENGINE=NDBCLUSTER!
إذا كنت تستخدم محركًا آخر، فسيتم استخدام محرك آخر). لا تعمل!)
يجب
أن
تكون نتيجة SELECT:
mysql> SELECT * FROM testtable
;.
+
——
+
|
نفس قاعدة البيانات على العقدة sql2.test.com (نعم، لا يزال يتعين علينا إنشاؤها، ولكنسيتم نسخ البيانات إلى sql2.test.com
بعد إنشاء جدول الاختبار
، لأن جدول الاختبار يستخدم ENGINE=NDBCLUSTER):sql2. test.com:
mysql -u root -p
CREATEDATABASE
mysqlclustertest;
USE mysqlclustertest;
SELECT
*FROM
testtable;
—+
|.i |.
+——+
|. 1 +
——+
صف واحد في المجموعة (0.04 ثانية)
نرى أنه تم نسخ البيانات من عقدة sql1.test.com إلى عقدة sql2.example.com. نقوم الآن
بإدراج صف آخر في جدول الاختبار:
sql2.test.com:
INSERT INTO testtable () VALUES (2)؛
والآن
دعونا نعود إلى عقدة sql1.example.com ونتحقق مما إذا كان بإمكاننا رؤية الصف المدرج حديثًا:
sql1.example.com:
mysql -u root -p
USE
mysqlclustertest;
SELECT * FROM testtable;
يجب
أن
ترى الإخراج مثل هذا:
mysql
> SELECT * FROM testtable
;
|.2 |.
+——+
صفين في المجموعة (0.05 ثانية)
بحيث تحتوي كل عقدة على نفس البيانات!
الآن دعونا نرى ما إذا كنا سنوقف العقدة 1 (sql1.example.com): قم بتشغيل
sql1.example.com:
killall ndbd
وتحقق من
ps aux | grep -iv grep
لمعرفة أن جميع عمليات ndbd قد انتهت. إذا كنت لا تزال ترى عمليات ndbd، فقم بتشغيل
killall ndbd
مرة أخرىحتى يتم إنهاء جميع عمليات ndbd.
الآن على خادم الإدارة لدينا، تحقق من حالة المجموعة (loadb1.example.com):
loadb1.example.com:
ndb_mgm
اكتبshow؛
على
وحدة التحكم ndb_mgm،
يجب أن ترى هذا:
ndb_mgm> show؛
:1186
تكوين المجموعة
————————
[ndbd(NDB)] معرف العقدة (العقدتين)
= 2 (غير متصل، قبول الاتصال من 192.168.0.101)
المعرف = 3 @192.168.0.102 (الإصدار: 5.0 .19) ، Nodegroup: 0، Master)
[ndb_mgmd(MGM)] 1 معرف العقدة
= 1 @192.168.0.103 (الإصدار: 5.0.19)
[mysqld(API)] 2 معرف العقدة
= 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;
+— —+
|.i
+——+
|. 1 |
. 2 |.
+——+
صفين في المجموعة (0.17 ثانية)
حسنًا، جميع الاختبارات طبيعية، والآن دعونا نبدأ عقدة sql1.test.com مرة أخرى
: .example .com:
ndbd
5 كيفية إعادة تشغيل المجموعة
الآن دعونا نتخيل أنكبحاجة إلى إعادة تشغيل مجموعة MySQL
بسبب تعديل /var/lib/mysql-cluster/config.ini على عقدةloadb1.test.com
أو غيرها الأسباب.للقيام بذلك، استخدم
عميل إدارة المجموعة ndb_mgm على العقدةloadb1.example.com:loadb1.test.com
:
ndb_mgm
في وحدة التحكمndb_mgm
، اكتب
Shutdown،
وسترى رسالة مثل هذه:
ndb_mgm> Shutdown ؛
: بدأ إيقاف تشغيل المجموعة
العقدة 2: تم
إيقاف تشغيل العقدة (عقدة) مجموعة NDB
.
ndb_mgm>
هذا يعني أن عقدتي الكتلة sql1.test.com وsql2.test.com، تم إيقاف جميع خوادم إدارة المجموعة.
قم بتشغيل
إنهاء؛
اخرج من وحدة التحكم 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
أو، قمت للتو بتعديل الملف /var/lib/mysql-cluster/config.ini علىloadb1.test.com:
ndbd –initial
بعد ذلك، يمكن التحقق من Loadb1.test.com لمعرفة ما إذا كان قد تم إعادة تشغيل المجموعة:
Loadb1.test.com:
ndb_mgm
في وحدة التحكم ndb_mgm، أدخل
show
لعرض الحالة الحالية للمجموعة. قد يستغرق الأمر بعض الوقت حتى تبلغ جميع العقد عن اتصالها بعد إعادة التشغيل.
أدخل:
إنهاء؛
الخروج من وحدة التحكم ndb_mgm.
6. تكوين موازنة التحميل
اكتملت الآن مجموعة MySQL الخاصة بنا ويمكنك الآن البدء في استخدامها.
ومع ذلك، ليس لديناعنوان
IP منفصلللوصول إلى المجموعة
، مما يعني أنه يتعين عليك تكوين جزء من التطبيق لاستخدام MySQL Cluster Node 1 (sql1.test.com)، وجزء آخر لاستخدام Node 2 (sql2. test.com).بالطبع، تحتاج جميع التطبيقات إلى استخدام عقدة واحدة فقط، ولكن إذا كنت
لا ترغب في تقسيم الحمل بين العقد العنقودية، فما هو الغرض من وجود مجموعة واحدة
؟ العقدة تنخفض؟ ثم لن تتمكن التطبيقات التي تستخدم عقدة الكتلة هذه من العمل على الإطلاق.
الحل هنا هو تكوين موازن التحميل أمام MySQL Cluster لموازنة التحميل بين كل عقدة MySQL Cluster.
يقوم موازن التحميل بتكوين عنوان IP ظاهري مشترك بين عقد المجموعة، وتستخدم كافة تطبيقاتك عنوان IP الظاهري هذا للوصول
إلى المجموعة. إذا تعطلت إحدى العقد، فسيظل تطبيقك يعمل لأن موازن التحميل سينقل الطلبات
إلى العقدة الأخرى التي تعمل بشكل صحيح.
الآن في هذا المثال يصبح موازن التحميل هو عنق الزجاجة. ماذا لو تعطل موازن التحميل هذا؟ لذلك، سنقوم
بتكوين موازنين للأحمال في وضع التثبيت النشط/السلبي (النشط/السلبي). هذا يعني أن لدينا موازن تحميل نشطًا وآخر في
وضع الاستعداد السريع، وعندما ينخفض موازن التحميل النشط، يصبح نشطًا. يستخدم كل موازن تحميل نبضات القلب للتحقق من
نشاط موازن التحميل الآخر، ويستخدم موازن التحميل أيضًا ldirectord، وهو المسؤول عن توزيع حركة المرور إلى عقد المجموعة.
تم تضمين كل من Heartbeat وldirectord في حزمة تثبيت Ultra Monkey التي سنقوم بتثبيتها.
من المهم جدًا أن تدعم نواة النظام الخاصة بعقد Loadb1.test.com وloadb2.test.com IPVS (IP Virtual Server).
يقوم IPVS بإجراء موازنة التحميل في طبقة النقل الخاصة بنواة Linux.
6.1 قم بتثبيت Ultra Monkey
حسنًا، لنبدأ الآن: أولاً نقوم بتمكين IPVS على العقدتينloadb1.test.com وloadb2.test.com:loadb1.example.com
/loadb2.example.com:
modprobe ip_vs_dh
modprobe ip_vs_ftp
modprobe ip_vs
modprobe ip_vs_lblc
modprobe 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
/loadb2.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 :
السادس /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-perl libmysqlclient14-dev
الآن
تم
تثبيت Ultra Monkey، إذا رأيت التحذير التالي
:
|
لن يعمل libsensors3 على نظامك
|
.إذا كنت تريد تمكينه، قم بإلقاء نظرة على "
دعم شريحة أجهزة الاستشعار I2C" في تكوين kernel الخاص بك
.
أجب عن السؤال التالي:
هل تريد تحميل قواعد IPVS تلقائيًا عند التمهيد؟
<-- لا
حدد طريقة خفية
<-- لا شيء
حزمة تثبيت libdbd-mysql-Perl التي قمت بتثبيتها للتو لا تعمل على MySQL 5 (نحن في مرحلة التشغيل). MySQL Cluster باستخدام MySQL 5)،
لذلك قمنا بتثبيت أحدث حزمة تثبيت DBD::mysql Perl:
loadb1.test.com /loadb2.test.com:
cd /tmp
wget
tar xvfz DBD-mysql-3.0002.tar.gz
cd DBD- mysql -3.0002
perl Makefile.PL
make
make install
يجب علينا أولاً تمكين إعادة توجيه الحزم:
Loadb1.example.com /loadb2.example.com:
vi /etc/sysctl.conf
# Enables packetwardingnet.ipv4.ip_forward = 1
6.2 تكوين نبضات القلب ( نبضات القلب )
نقوم بتكوين نبضات القلب عن طريق إنشاء ثلاثة ملفات (ملفات Loadb1.test.com وloadb2.test.com يجب أن تكون متطابقة تمامًا):
loadb1.test.com /loadb2.test.com:
vi /etc/ha.d /ha .cf
logfacility local0
bcast eth0
mcast eth0 225.0.0.1 694 1 0
auto_failback offnodeloadb1nodeloadb2
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
يجب عليك تعداد أحد أسماء عقد موازنة التحميل (هنا: Loadb1)، ويسرد
عنوان IP الظاهري (192.168.0.105) وعنوان البث (192.168.0.255)
vi /etc/ha.d/authkeys
auth 3
3 md5 somerandomstring
somerandomstring هما نبضات القلب المستخدمة بواسطة Loadb1 وloadb2 لمصادقة كل منهما. أخرى كلمة المرور للشيطان.
قم بتعيين كلمة المرور الخاصة بك هنا. يمكنك الاختيار من بين 3 طرق التشفير. عادةً ما أستخدم md5 للتشفير.
يجب أن يكون /etc/ha.d/authkeys للقراءة فقط للحساب الجذر. هنا نقوم بذلك:
loadb1.test.com /loadb2.test.com:
chmod 600 /etc/ha.d/authkeys
6.3 تكوين ldirectord
الآن نحن إنشاء ملف تكوين 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 بوابة
اختيارية = تفاوض
على تسجيل الدخول = "ldirector"
passwd = قاعدة بيانات "ldirectorpassword"
=طلب
"ldirectordb"
= "SELECT"* FROM Connectioncheck"
جدولة = wrr
يرجى ملء عنوان IP الظاهري الصحيح (192.168.0.105) وعنوان IP الصحيح لعقدة نظام MySQL (192.168.0.101 و192.168.0.102).
3306 هو المنفذ الافتراضي عند تشغيل MySQL. لقد حددنا أيضًا مستخدم MySQL (ldirector) وكلمة المرور (ldirectorpassword)، وقاعدة بيانات (ldirectordb)
واستعلام SQL. يستخدم ldirectord هذه المعلومات لاختبار عقد مجموعة MySQL للتأكد من أنها متاحة دائمًا. بعد ذلك سوف نستخدم مستخدم ldirector لإنشاء
قاعدة بيانات ldirectordb.
نقوم الآن بإنشاء اتصالات بدء التشغيل اللازمة لنبضات القلب وإزالة ldirectord (لأن ldirectord سيتم تشغيله بواسطة نبضات القلب):
Loadb1.test.com /loadb2.test.com:
update-rc.d -f heartbeat Remove
update-rc.d heartbeat start 75 2 3 4 5 . stop 05 0 1 6 .
update-rc.d -f ldirectord Remove
6.4 إنشاء قاعدة بيانات ldirector
بعد ذلك نقوم بإنشاء قاعدة بيانات ldirector على العقد العنقودية MySQL sql1.test.com وsql2.test.com. سيتم استخدام قاعدة البيانات هذه بواسطة موازن التحميل الخاص بنا للتحقق
من توفر عقد مجموعة MySQL.
sql1.test.com:
mysql
-u root -p
منح
كل
شيء
على ldirectordb.* إلى 'ldirector'@'%' المعرّف بواسطة محرك 'ldirectorpassword'؛
=
NDBCLUSTER
؛
إنشاء قاعدة بيانات ldirectordb؛
6.4
إعداد عقد مجموعة MySQL لموازنة التحميل
وأخيرًا، يجب علينا تكوين عقد مجموعة MySQL sql1.test.com وsql2.test.com لقبول عنوان IP الظاهري 192.168.0.105.
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
# عند تلقي طلب arp على eth0، استجب فقط إذا كان هذا العنوان
# مهيأ على 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
# عند إرسال طلب ARP عبر eth0، استخدم دائمًا العنوان الذي
# تم تكوينه على eth0 كعنوان المصدر لطلب ARP إذا
لم يتم تعيين هذا #، وتم إرسال الحزم إلى eth0 لعنوان موجود على
# lo، وكان طلب arp مطلوبًا، فسيتم تشغيل العنوان. سيتم استخدام lo.
# نظرًا لأنه يتم إدخال عنوان IP المصدر لطلبات arp في ذاكرة التخزين المؤقت لـ ARP على
الوجهة، فإن هذا يكون له تأثير الإعلان عن هذا العنوان. وهذا
غير مرغوب فيه في هذه الحالة كعناوين على lo حقيقية -. يجب أن يتم الإعلان عن الخوادم
بواسطة مدير Linux فقط
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
عنوان ثابت 192.168.0.105
قناع الشبكة 255.255.255.255
pre - up sysctl -p > /dev/null
ifup lo:0
7. ابدأ موازن التحميل والاختبار
الآن نبدأ مديري موازنة التحميل:
loadb1.test.com /loadb2.test.com:
/etc/init.d /ldirectord stop
/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.255 النطاق العالمي 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.255 نطاق global eth0
Loadb1.test.com /loadb2.test.com:
حالة ldirectord ldirectord.cf
الإخراج على موازن التحميل النشط:
ldirectord لـ /etc/ha .d/ldirectord.cf قيد التشغيل مع معرف المنتج: 1603
الإخراج على موازن التحميل السلبي:
تم إيقاف ldirectord لـ /etc/ha.d/ldirectord.cfloadb1.example.com
/loadb2.example.com:
ipvsadm -L - nOutput
على موازن التحميل النشط:
إصدار IP Virtual Server 1.2.1 (الحجم = 4096)
Prot LocalAddress: إشارات جدولة المنفذ
-> RemoteAddress: وزن المنفذ الأمامي ActiveConn InActConn
TCP 192.168.0.105:3306 wrr
-> 192.168.0.101:3306 المسار 1 0 0
-> 192.168.0.102:3306
تشغيل الإخراج المسار 1 0 0 موازن التحميل السلبي:
إصدار IP Virtual Server 1.2.1 (الحجم = 4096)
Prot LocalAddress: إشارات جدولة المنفذ
-> RemoteAddress: وزن المنفذ الأمامي ActiveConn InActConnloadb1.test.com
/loadb2.test.com:
/etc/ ha.d/resource.d/LVSSyncDaemonSwap الحالة الرئيسية
الإخراج على موازن التحميل النشط:
التشغيل الرئيسي
(ipvs_syncmaster pid: 1766)
الإخراج على موازن التحميل السلبي:
توقف الرئيسي
(ipvs_syncbackup pid: 1440)
إذا كانت جميع اختباراتك طبيعية، فيمكنك الآن الوصول قاعدة بيانات MySQL من خوادم أخرى على نفس الشبكة (192.168.0.x) باستخدام عنوان IP الظاهري 192.168.0.105:
mysql -h 192.168 .0.105 -u ldirector -p
(يرجى تذكر: يجب أن يكون عميل MySQL لديك الإصدار 4.1 على الأقل لن تعمل الإصدارات الأقدم على MySQL5. )
يمكنك الآن إيقاف تشغيل إحدى عقد مجموعة MySQL للاختبار؛ ولا يزال بإمكانك الاتصال بقاعدة بيانات MySQL.
8 ملاحظات
عند تشغيل مجموعة MySQL، إليك بعض الأشياء المهمة التي يجب تذكرها:
– جميع البيانات موجودة في الذاكرة! لذلك تحتاج إلى قدر كبير من الذاكرة على عقد المجموعة الخاصة بك. فيما يلي
صيغة حساب سعة الذاكرة المطلوبة لكل عقدة:
(حجم قاعدة البيانات SizeofDatabase * عدد النسخ المتماثلة NumberOfReplicas * 1.1) / عدد عقد البيانات NumberOfDataNodes
لذا إذا كان لديك حجم قاعدة بيانات 1 جيجابايت، فيجب عليك تجهيز كل عقدة بـ 1.1 جيجابايت من الذاكرة!
– تستمع عقدة إدارة المجموعة لأي اتصال على المنفذ 1186. وهذا يعني أنها ليست آمنة جدًا، لذا يجب عليك تشغيل MySQL Cluster على شبكة منفصلة.