Artikel ini akan memberi tahu Anda cara mengkonfigurasi database MySQL 5 tiga node cluster server. :Dua node penyimpanan dan satu
node manajemen.
Cluster adalahpenyeimbang beban ketersediaan tinggi
yang terdiri dari dua node menggunakan paket instalasi Ultra Monkey
yang menyediakan perangkat "heartbeat" (digunakan untuk memeriksa apakah node lain masih hidup) dan
"ldirectord" (mendistribusikan permintaan ke node cluster MySQL) .Pada artikel ini, setiap node kami menggunakan sistem Debian Sarge Linux. Instalasi distribusi Linux lainnya mungkin sedikit
berbeda. Kami menggunakan MySQL versi 5.0.19. Jika Anda tidak ingin menggunakan MySQL 5, Anda juga bisa menggunakan MySQL 4.1,
meskipun
saya belum mengujinya.Artikel ini adalah panduan aplikasi praktis; tidak melibatkan terlalu banyak teori. Anda dapat menemukan banyak teori tentang pengelompokan secara online.
Untuk satu server
saya menggunakan server Debian berikut, semuanya berada di segmen jaringan yang sama (contoh ini: 192.168.0.x):
sql1.test.com: 192.168.0.101 MySQL Cluster Node 1
sql2.test.com: 192.168. 0.102 MySQL Cluster node 2
loadb1.test.com: 192.168.0.103 Loadbalancing 1 / Server manajemen cluster MySQL
loadb2.test.com: 192.168.0.104 Loadbalancing 2
Selain itu, kita memerlukan alamat IP virtual: 192.168.0.105. Ini akan mengatur penyeimbangan beban untuk cluster MySQL ini sehingga
aplikasi dapat mengakses cluster melalui satu alamat IP tunggal.
Meskipun kita ingin menggunakan dua node di MySQL Cluster, kita masih memerlukan node ketiga yaitu MySQL Cluster Management Server
, karena satu alasan utama: jika salah satu node MySQL Cluster down dan MySQL Cluster Management Server tidak berjalan, maka
Maka data pada kedua node cluster akan menjadi tidak konsisten (“otak terbelah”). Kita membutuhkannya untuk mengkonfigurasi Cluster MySQL.
Jadi instalasi kita umumnya memerlukan lima mesin:
2 node Cluster MySQL + 1 Server Manajemen Cluster + 2 Load Balancer = 5
Karena Server Manajemen Cluster tidak menggunakan banyak sumber daya, sistem akan kosong Tidak melakukan apa pun, sehingga kita dapat menempatkan penyeimbang beban
pertama
kita pada mesin yang sama, sehingga menghemat satu server, jadi idealnya kita hanya memerlukan empatmesin.
2. Konfigurasikan server manajemen cluster MySQL.
Pertama kita perlu mengunduh MySQL 5.0.19 dan menginstal server manajemen cluster (ndb_mgmd) dan klien manajemen cluster (ndb_mgm - yang
dapat digunakan untuk memantau pengoperasian cluster). langkah-langkahnya ada di 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 /Unduhan/ 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
Selanjutnya, kita harus membuat file konfigurasi cluster, /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]
# Bagian untuk cluster node manajemen
[ NDB_MGMD]
# Alamat IP dari node manajemen (sistem ini)
HostName=192.168.0.103
# Bagian untuk node penyimpanan
[NDBD]
# Alamat IP dari node penyimpanan pertama
HostName=192.168.0.101
DataDir= /var/lib/ mysql-cluster
[NDBD]
# alamat IP dari node penyimpanan kedua
HostName=192.168.0.102
DataDir=/var/lib/mysql-cluster
# satu [MYSQLD] per node penyimpanan
[MYSQLD]
[MYSQLD]
———-
Dalam aplikasi sebenarnya , silakan ubah file Ganti alamat IP dengan IP Anda yang sesuai.
Kemudian kita memulai server manajemen cluster:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Kita juga harus dapat memulai server manajemen secara otomatis ketika server dimulai, jadi kita buat
skripInisialisasi yang sangat sederhana
dan koneksi startup yang sesuai:
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
Tiga konfigurasi node cluster MySQL (node penyimpanan)
Sekarang kita akan menginstal mysql-max-5.0.19 masing-masing di sql1.test.com dan 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
skrip mysql
/mysql_install_db –user=mysql
chown
-R root:mysql
.
755 /etc/init.d/mysql.server
update-rc.d mysql.server default
cd /usr/local/mysql/bin
mv * /usr/bin
cd ../
rm -fr /usr/local/mysql/bin
ln -s /usr/bin /usr/local/mysql/bin
Kemudian kita buat file konfigurasi MySQL /etc/my.cnf pada setiap node:
vi /etc/my.cnf
–
[mysqld]
ndbcluster
# Alamat IP cluster node manajemen
ndb-connectstring=192.168.0.103
[mysql_cluster]
# Alamat IP node manajemen cluster
ndb-connectstring=192.168.0.103
–
Pastikan Anda memasukkan alamat IP yang benar di server manajemen cluster.
Selanjutnya kita membuat direktori data dan memulai server MySQL di setiap node cluster:
sql1.test.com / sql2.test.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
ndbd – inisial
/ etc/init.d/mysql.server start
(Harap diingat: kami hanya memulai MySQL untuk pertama kali atau ketika /var/lib/mysql-cluster/config.ini di loadb1.test.com
berubah. Hanya gunakan ndbd –initial)
Sekarang, saatnya mengatur kata sandi untuk akun root MySQL:
sql1.test.com / sql2.test.com:
mysqladmin -u kata sandi root yourrootsqlpassword
Kita perlu memulai node cluster ketika server dimulai, jadi kita membuat inisialisasi ndbd skrip dan
koneksi startup sistem yang sesuai:
sql1.test.com / sql2.test.com:
echo 'ndbd' > /etc/init.d/ndbd
chmod 755 /etc/init.d/ndbd
update-rc
4 Menguji Cluster MySQL
Konfigurasi Cluster MySQL kita sudah selesai, sekarang saatnya untuk mengujinya. Di server manajemen cluster
(loadb1.test.com), jalankan klien manajemen cluster ndb_mgm untuk memeriksa apakah node cluster terhubung:
loadb1.test.com:
ndb_mgm
Anda akan melihat ini:
– NDB Cluster — Klien Manajemen –
ndb_mgm >
Di Enter show;
tampilkan di baris perintah;
informasi keluarannya harus seperti ini:
ndb_mgm> tampilkan;
Terhubung ke Server Manajemen di: localhost:1186
Konfigurasi Cluster
———————
[ndbd(NDB)] 2 node( s)
id= 2 @192.168.0.101 (Versi: 5.0.19, Nodegroup: 0, Master)
id=3 @192.168.0.102 (Versi: 5.0.19, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node )
id=1 @192.168.0.103 (Versi: 5.0.19)
[mysqld(API)] 2 node
id=4 @192.168.0.101 (Versi: 5.0.19)
id=5 @192.168.0.102 (Versi: 5.0.19)
ndb_mgm>
Jika Anda melihat semua node Anda terhubung. Maka semuanya berjalan dengan baik!
Masukkan
exit;
untuk keluar dari konsol klien ndb_mgm.
Sekarang kita membuat database pengujian pada node sql1.test.com, membuat tabel pengujian, dan
mengisi
beberapa data pengujian:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE mysqlclustertest;
;
INSERT INTO testtable () VALUES (1);
SELECT * FROM testtable;
quit;
(Lihat pernyataan CREATE di atas: tabel semua database yang ingin kita cluster harus menggunakan ENGINE=NDBCLUSTER!
Jika Anda menggunakan ENGINE lain, maka Clustering akan tidak berfungsi!)
Hasil dari SELECT seharusnya:
mysql> SELECT * FROM testtable;
+
—
+
|
.
+——+
|
database yang sama pada node sql2.test.com (ya, kita masih harus membuatnya, tetapidata akan disalin ke sql2.test.com
setelah tabel pengujian dibuat
, karena tabel pengujian menggunakan ENGINE=NDBCLUSTER):sql2. test.com:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE mysqlclustertest;
SELECT * FROM testtable;
Hasil SELECT harus sama dengan hasil sql1.test.com di atas:
mysql> SELECT * FROM testtable
; —+
|.i |.
+——+
|.1 |.
+——+
1 baris dalam set (0,04 detik)
Kita melihat bahwa data telah disalin dari node sql1.test.com ke node sql2.example.com. Sekarang kita
masukkan baris lain ke dalam tabel yang diuji:
sql2.test.com:
INSERT INTO testtable () VALUES (2);
Sekarang
mari kita kembali ke node sql1.example.com dan periksa apakah kita dapat melihat baris yang baru disisipkan:
sql1.example.com:
mysql
-u root -p
USE mysqlclustertest;
SELECT * FROM testtable;
keluar
;
Anda
akan melihat output seperti ini:
mysql> SELECT * FROM testtable
;
|.2 |.
+—+
2 baris dalam set (0,05 detik)
sehingga setiap node cluster memiliki data yang sama!
Sekarang mari kita lihat apakah kita menghentikan node 1 (sql1.example.com): jalankan
sql1.example.com:
killall ndbd
dan periksa
ps aux | grep ndbd |
. Jika Anda masih melihat proses ndbd, jalankan
kembalikillall ndbd
hingga semua proses ndbd dihentikan.
Sekarang di servermanajemen
kami, periksa status cluster (loadb1.example.com):
loadb1.example.com:
ndb_mgm
Ketikshow;
di konsol ndb_mgm
Anda akan melihat ini:
ndb_mgm> show;
:1186
Konfigurasi Cluster
————————
[ndbd(NDB)] 2 node id
=2 (tidak terhubung, menerima koneksi dari 192.168.0.101)
id=3 @192.168.0.102 (Versi: 5.0 .19 , Nodegroup: 0, Master)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.103 (Versi: 5.0.19)
[mysqld(API)] 2 node(s)
id=4 @192.168 .0.101 (Versi: 5.0.19)
id=5 @192.168.0.102 (Versi: 5.0.19)
ndb_mgm>
Soalnya, node sql1.example.com tidak terhubung.
Masuk:
keluar;
keluar dari konsol ndb_mgm.
Mari kita periksa node sql2.example.com:
sql2.example.com:
mysql -u root -p
USE
mysqlclustertest;
SELECT
* FROM testtable;exit
;
++
—+
|
.
+
——
+
|
.
.example .com:
ndbd
5 Cara Restart Cluster
Sekarang mari kita bayangkan bahwa Andaperlu me-restart cluster MySQL
karena modifikasi /var/lib/mysql-cluster/config.ini pada node loadb1.test.com
atau lainnya alasan.Untuk melakukan ini, Anda menggunakan
klien manajemen cluster ndb_mgm pada node loadb1.example.com:
loadb1.test.com
:
ndb_mgm
Di konsol ndb_mgm, Anda mengetik
shutdown;
Anda akan melihat pesan seperti ini:
ndb_mgm> shutdown ;
: Shutdown cluster dimulai
Node 2: Shutdown node selesai.
2 node NDB Cluster telah dimatikan.
Server manajemen NDB Cluster
telah
dimatikan
.server manajemen cluster semuanya telah dimatikan.
Jalankan
keluar;
keluar dari konsol ndb_mgm.
Untuk memulai server manajemen cluster, lakukan ini di loadb1.test.com:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
dan di sql1.test.com dan sql2.test.com Jalankan di:
sql1.example.com / sql2.example.com:
ndbd
Atau, Anda baru saja memodifikasi file /var/lib/mysql-cluster/config.ini di loadb1.test.com:
ndbd –initial
Setelah ini, Anda
dapat memeriksa loadb1.test.com untuk melihat apakahcluster
telah dimulai ulang:
loadb1.test.com:
ndb_mgm
Di konsol ndb_mgm, masukkan
show;
Mungkin perlu beberapa saat bagi semua node untuk melaporkan bahwa mereka terhubung setelah memulai ulang.
Masuk:
keluar;
keluar dari konsol ndb_mgm.
6. Mengkonfigurasi Load Balancing
Cluster MySQL kami sekarang telah selesai dan Anda sekarang dapat mulai menggunakannya.
Namun, kami tidak memilikialamat
IP terpisahuntuk mengakses cluster
, yang berarti Anda harus mengkonfigurasi sebagian aplikasi untuk menggunakan MySQL Cluster Node 1 (sql1.test.com), dan bagian lain untuk menggunakan Node 2 (sql2. test.com).Tentu saja semua aplikasi hanya perlu menggunakan satu node, namun jika
tidak ingin membagi beban antar node cluster, lalu apa gunanya memiliki cluster
? simpul turun? Maka aplikasi yang menggunakan node cluster ini tidak akan bisa bekerja sama sekali.
Solusinya di sini adalah mengkonfigurasi load balancer di depan MySQL Cluster untuk menyeimbangkan beban antara setiap node MySQL Cluster.
Penyeimbang beban mengonfigurasi alamat IP virtual bersama di antara node kluster, dan semua aplikasi Anda menggunakan alamat IP virtual ini untuk
mengakses kluster. Jika salah satu node down, aplikasi Anda akan tetap berfungsi karena load balancer akan mentransfer permintaan
ke node lain yang berfungsi dengan baik.
Dalam contoh ini, penyeimbang beban menjadi penghambatnya. Bagaimana jika penyeimbang beban ini rusak? Jadi kita akan
mengkonfigurasi dua penyeimbang beban dalam mode instalasi aktif/pasif (aktif/pasif). Artinya kita punya satu load balancer yang aktif dan satu lagi yang
hot standby, dan ketika yang aktif turun, maka akan menjadi aktif. Setiap penyeimbang beban menggunakan detak jantung untuk memeriksa
aktivitas penyeimbang beban lainnya, dan penyeimbang beban juga menggunakan ldirectord, yang bertanggung jawab untuk mendistribusikan lalu lintas ke node cluster.
Baik detak jantung maupun ldirectord sudah termasuk dalam paket instalasi Ultra Monkey yang akan kita instal.
Sangat penting bahwa kernel sistem node loadb1.test.com dan loadb2.test.com mendukung IPVS (IP Virtual Server).
IPVS melakukan penyeimbangan beban pada lapisan transport kernel Linux.
6.1 Instal Ultra Monkey
Oke, sekarang mari kita mulai: Pertama kita aktifkan IPVS pada node loadb1.test.com dan 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
Untuk mengaktifkan modul IPVS saat startup, kami menghitung modul di /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
Sekarang kita edit /etc/apt/sources.list, tambahkan titik download Ultra Monkey, lalu kita instal 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 install ultramonkey libdbi-perl libdbd-mysql-perl libmysqlclient14-dev
SekarangUltra
Monkey telah diinstal, jika Anda melihat peringatan berikut:
| libsensors3 tidak berfungsi
|
.
libsensors3 tidak akan berfungsi di sistem Anda.
|.
|. Jika Anda ingin mengaktifkannya,
lihat "
Dukungan Chip Sensor Perangkat Keras I2C |.
Jawab pertanyaan berikut:
Apakah Anda ingin memuat aturan IPVS secara otomatis saat boot?
<-- Tidak
Pilih metode daemon
<-- tidak ada
Paket instalasi libdbd-mysql-perl yang baru saja saya instal tidak berfungsi di MySQL 5 (kami berada di dalam Cluster MySQL Menggunakan MySQL 5),
jadi kita instal paket instalasi Perl DBD::mysql terbaru:
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
Pertama-tama kita harus mengaktifkan penerusan paket:
loadb1.example.com / loadb2.example.com:
vi /etc/sysctl.conf
# Mengaktifkan penerusan paketnet.ipv4.ip_forward = 1
6.2 Konfigurasi detak jantung ( detak jantung )
Kami mengkonfigurasi detak jantung dengan membuat tiga file (file loadb1.test.com dan loadb2.test.com harus sama persis):
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 off
node loadb1
node loadb2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
Ingat: Anda harus mencantumkan nama node (ini Pada contoh, loadb1 dan loadb2)
uname -n
Selain itu, kita tidak perlu melakukan modifikasi apa pun pada file ini.
vi /etc/ha.d/haresources
loadb1
ldirectord::ldirectord.cf
LVSSyncDaemonSwap::master
IPaddr2::192.168.0.105/24/eth0/192.168.0.255
Anda harus menyebutkan salah satu nama node penyeimbang beban (di sini: loadb1), dan mencantumkan
alamat IP virtual (192.168.0.105) dan alamat siaran (192.168.0.255).
vi /etc/ha.d/authkeys
auth 3
3 md5 somerandomstring
somerandomstring adalah dua detak jantung yang digunakan oleh loadb1 dan loadb2 untuk mengautentikasi masing-masing. lainnya.Kata sandi untuk daemon.
Tetapkan kata sandi Anda sendiri di sini. Anda dapat memilih dari 3 metode enkripsi. Saya biasanya menggunakan md5 untuk enkripsi.
/etc/ha.d/authkeys harus bersifat read-only untuk akun root. Di sini kita melakukan ini:
loadb1.test.com / loadb2.test.com:
chmod 600 /etc/ha.d/authkeys
6.3 Mengonfigurasi ldirectord
Sekarang kita buat untuk file Konfigurasi ldirectord, penyeimbang beban:
loadb1.example.com / loadb2.example.com:
vi /etc/ha.d/ldirectord.cf
# Petunjuk Global
checktimeout=10
checkinterval=2
autoreload=no
logfile="local0"
diam =ya
virtual = 192.168.0.105:3306
service = mysql
real = 192.168.0.101:3306 gate
real = 192.168.0.102:3306 gate
checktype = negosiasi
login = "ldirector"
passwd = "ldirectorpassword"
database = "ldirectordb"
request = "PILIH * FROM connectioncheck"
scheduler = wrr
Silakan isi alamat IP virtual yang benar (192.168.0.105) dan alamat IP node cluster MySQL yang benar (192.168.0.101 dan 192.168.0.102).
3306 adalah port default saat MySQL sedang berjalan. Kami juga menentukan pengguna MySQL (ldirector) dan kata sandi (ldirectorpassword), database (ldirectordb) dan
query SQL. ldirectord menggunakan informasi ini untuk menguji node cluster MySQL untuk memeriksa apakah node tersebut selalu tersedia. Selanjutnya kita akan menggunakan pengguna ldirector untuk
membuat database ldirectordb.
Sekarang kita membuat koneksi startup yang diperlukan untuk detak jantung dan menghapus ldirectord (karena ldirectord akan dimulai dengan detak jantung):
loadb1.test.com / loadb2.test.com:
update-rc.d -f detak jantung hapus
pembaruan-rc.d detak jantung mulai 75 2 3 4 5 . stop 05 0 1 6 .
update-rc.d -f ldirectord hapus
6.4 Membuat database ldirector
Selanjutnya kita membuat database ldirector pada node cluster MySQL sql1.test.com dan sql2.test.com. Basis data ini akan digunakan oleh penyeimbang beban kami untuk memeriksa
ketersediaan node cluster MySQL.
sql1.test.com:
mysql -u root -p
GRANT ALL ON ldirectordb.* UNTUK 'ldirector'@'%' DIIDENTIFIKASI OLEH 'ldirectorpassword';
FLUSH
PRIVILEGES;
BUAT DATABASE ldirectordb
;
=NDBCLUSTER;
INSERT INTO connectioncheck () NILAI (1);
keluar;
sql2.test.com:
mysql -u root -p
GRANT ALL ON ldirectordb.* KE 'ldirector'@'%' DIIDENTIFIKASI OLEH 'ldirectorpassword'
;
BUAT DATABASE ldirectordb;
6.4
Mempersiapkan Node Cluster MySQL untuk Load Balancing
Akhirnya kita harus mengkonfigurasi node Cluster MySQL sql1.test.com dan sql2.test.com untuk menerima alamat IP virtual 192.168.0.105.
sql1.test.com / sql2.test.com:
apt-get install iproute
Tambahkan konten berikut di /etc/sysctl.conf:
vi /etc/sysctl.conf
# Aktifkan konfigurasi opsi arp_ignore
net.ipv4.conf.all . arp_ignore = 1
# Ketika permintaan arp diterima di eth0, hanya tanggapi jika alamat tersebut
# dikonfigurasi di eth0. Khususnya, jangan merespons jika alamat tersebut
# dikonfigurasi di lo
net.ipv4.conf.eth0.arp_ignore = 1
# Sama halnya dengan eth1, tambahkan untuk semua antarmuka ARPing
#net.ipv4.conf.eth1.arp_ignore = 1
# Aktifkan konfigurasi opsi arp_announce
net.ipv4.conf.all.arp_announce = 2
# Saat membuat permintaan ARP yang dikirim melalui eth0 Selalu gunakan alamat yang
# dikonfigurasi di eth0 sebagai alamat sumber permintaan ARP. Jika
# ini tidak disetel, dan paket dikirim keluar eth0 untuk alamat yang ada di
# lo, dan permintaan arp diperlukan, maka alamat di lo akan digunakan.
# Karena alamat IP sumber dari permintaan arp dimasukkan ke dalam cache ARP di
# tujuan, ini mempunyai efek mengumumkan alamat ini
# tidak diinginkan dalam hal ini sebagai alamat di lo pada yang sebenarnya -. server harus
# diumumkan hanya oleh direktur linux
net.ipv4.conf.eth0.arp_announce = 2
# Hal yang sama untuk eth1, tambahkan untuk semua antarmuka ARPing
#net.ipv4.conf.eth1.arp_announce = 2
sysctl -p
akan Tambahkan paragraf berikut ke /etc/network/interfaces:
sql1.test.com / sql2.test.com:
vi /etc/network/interfaces
auto lo:0
iface lo:0 inet
alamat statis 192.168.0.105
netmask 255.255.255.255
pra - up sysctl -p > /dev/null
ifup lo:0
7. Mulai penyeimbang beban dan uji
Sekarang kita mulai dua pengelola penyeimbang beban:
loadb1.test.com / loadb2.test.com:
/etc/init.d /ldirectord stop
/etc/init.d/heartbeat start
Jika Anda tidak melihat kesalahan, Anda perlu memulai ulang setiap penyeimbang beban sekarang:
loadb1.test.com / loadb2.test.com:
shutdown -r now
Setelah memulai ulang, kita dapat memeriksa apakah Keduanya memuat penyeimbang berfungsi seperti yang diharapkan:
loadb1.test.com / loadb2.test.com:
ip addr sh eth0
Penyeimbang beban aktif harus mencantumkan alamat IP virtual (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 scope global eth0
inet 192.168.0.105/24 brd
Penyeimbang beban untuk
192.168.0.255 scope global sekunder eth0 pasif (hot standby) akan muncul sebagai berikut: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 scope global eth0
loadb1.test.com / loadb2.test.com:
ldirectord ldirectord.cf status
Output pada penyeimbang beban aktif:
ldirectord untuk /etc/ha .d/ldirectord.cf sedang berjalan dengan pid: 1603
Output pada penyeimbang beban pasif:
ldirectord dihentikan untuk /etc/ha.d/ldirectord.cf
loadb1.example.com / loadb2.example.com:
ipvsadm -L - nOutput
pada penyeimbang beban aktif:
versi IP Virtual Server 1.2.1 (ukuran=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
Output aktif Penyeimbang beban pasif rute 1 0 0:
IP Virtual Server versi 1.2.1 (ukuran=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
loadb1.test.com / loadb2.test.com:
/etc/ ha.d/resource.d/LVSSyncDaemonSwap status master
Output pada penyeimbang beban aktif:
master berjalan
(ipvs_syncmaster pid: 1766)
Output pada penyeimbang beban pasif:
master dihentikan
(ipvs_syncbackup pid: 1440)
Jika pengujian Anda semuanya normal, Anda sekarang dapat mengakses database MySQL dari server lain di jaringan yang sama (192.168.0.x) menggunakan alamat IP virtual 192.168.0.105:
mysql -h 192.168 .0.105 -u ldirector -p
(Harap diingat: klien MySQL Anda setidaknya harus versi 4.1 ; versi lama tidak akan menjalankan MySQL5. )
Sekarang Anda dapat mematikan salah satu node cluster MySQL untuk diuji; Anda masih dapat terhubung ke database MySQL.
8 Catatan
Saat menjalankan Cluster MySQL, berikut beberapa hal penting yang perlu diingat:
– Semua data ada di memori! Oleh karena itu Anda memerlukan memori dalam jumlah besar pada node cluster Anda. Berikut
rumus perhitungan kapasitas memori yang dibutuhkan setiap node:
(Ukuran database SizeofDatabase * Jumlah replika NumberOfReplicas * 1.1 ) / Jumlah node data NumberOfDataNodes
Jadi jika Anda memiliki ukuran database 1GB, sebaiknya lengkapi setiap node dengan 1.1GB memori!
–Node manajemen cluster mendengarkan koneksi apa pun pada port 1186. Artinya ini tidak terlalu aman, jadi Anda harus menjalankan MySQL Cluster di jaringan terpisah.