歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

ubuntu系統:NDB節點配置

NDB節點配置

1.為ldirector創建數據庫

現在,我們來創建ldirectordb數據庫,並把該數據庫的權限賦予ldirector用戶。ldirector將使用該數據庫來檢查兩個數據庫節點的運行狀態。

在mysql-data1.mytest.com上,創建該數據庫:

$ mysql -u root -p

在MySQL命令行界面中,輸入如下命令:

mysql> GRANT ALL ON ldirectordb.* TO 'ldirector'@'%' IDENTIFIED BY 'ldirectorpassw ord';

mysql> FLUSH PRIVILEGES;

mysql> CREATE DATABASE ldirectordb;

mysql> USE ldirectordb;

mysql> CREATE TABLE connectioncheck (Status INT) ENGINE=NDBCLUSTER;

mysql> INSERT INTO connectioncheck () VALUES (1);

mysql> quit

然後,在mysql-data2.mytest.com上創建該數據庫,數據會自動從mysql-data1上復制過來:

$ mysql -u root -p

在MySQL命令行界面中,輸入如下命令:

mysql> GRANT ALL ON ldirectordb.* TO 'ldirector'@'%' IDENTIFIED BY 'ldirectorpassw ord';

mysql> FLUSH PRIVILEGES;

mysql> CREATE DATABASE ldirectordb;

mysql> quit

2.設置IP路由

我們需要讓兩台數據庫服務器mysql-data1.mytest.com和mysql-data2.mytest.com能夠通過虛擬IP地址192.168.1.15連接起來。

在mysql-data1和mysql-data2上分別執行下列操作。

首先,安裝iproute軟件包:

$ sudo apt-get install iproute

修改/etc/sysctl.conf:

$ sudo nano /etc/sysctl.conf

加入如下內容:

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.eth0.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.eth0.arp_announce = 2

加入後,執行sysctl -p使之立即生效:

$ sudo sysctl -p

3.設置虛擬IP地址

在mysql-data1和mysql-data2上分別執行下列操作。

修改/etc/network/interfaces,添加虛擬IP地址:

$ sudo nano /etc/network/interfaces

在文件末尾添加如下內容:

auto lo:0

iface lo:0 inet static

address 192.168.1.15

netmask 255.255.255.255

pre-up sysctl -p > /dev/null

然後啟用它:

$ sudo ifup lo:0

現在,我們來啟動負載均衡服務。

在mysql-lb1.mytest.com 和mysql-lb2.mytest.com上,執行下列命令:

$ sudo /etc/init.d/ldirectord stop

$ sudo /etc/init.d/heartbeat start

如果沒有任何錯誤,則說明一切配置正確。

現在,重新啟動mysql-lb1 和mysql-lb2:

$ sudo reboot

重啟後,再做下面的測試。

1.ldirectord狀態檢查

在mysql-lb1和mysql-lb2上,執行下面的命令:

$ ldirectord ldirectord.cf status

在mysql-lb1上,其輸出應為:

ldirectord for /etc/ha.d/ldirectord.cf is running with pid: 4584

在mysql-lb2上,其輸出應為:

ldirectord is stopped for /etc/ha.d/ldirectord.cf

2.虛擬IP狀態檢查

在mysql-lb1和mysql-lb2上,執行下面的命令:

$ ip addr sh eth0

在msyql-lb1(負載均衡“主服務器”)上,應該會列出虛擬IP地址192.168.1.15。其輸出結果應為:

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.1.11/24 brd 192.168.0.255 scope global eth0

inet 192.168.1.15/24 brd 192.168.0.255 scope global secondary eth0

在msyql-lb2(負載均衡“從服務器”)上,其輸出結果應為:

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.1.12/24 brd 192.168.0.255 scope global eth0

3.IPVS狀態檢查

在mysql-lb1和mysql-lb2上,執行下面的命令:

$ sudo ipvsadm -L -n

在mysql-lb1上,其輸出應為:

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.1.15:3306 wrr

-> 192.168.1.13:3306 Route 1 0 0

-> 192.168.1.14:3306 Route 1 0 0

在mysql-lb2上,其輸出應為:

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

在mysql-lb1和mysql-lb2上,執行下面的命令:

$ sudo /etc/ha.d/resource.d/LVSSyncDaemonSwap master status

在mysql-lb1上,其輸出應為:

master running

(ipvs_syncmaster pid: 4704)

在mysql-lb2上,其輸出應為:

master stopped

(ipvs_syncbackup pid: 1440)

4.MySQL測試

在192.168.1.0網絡內的某台機器上,通過虛擬IP地址192.168.1.15連接我們的負載均衡服務器試試看:

$ mysql -h 192.168.1.15 -u ldirector -p

在正常情況下,你應該可以順利連接到MySQL。

5.故障模擬測試

現在,可以將負載均衡的“主服務器”停掉,看看“從服務器”能不能很快變成“主服務器”。

測試的方法有很多,我們使用簡單的ping命令。在某台機器上,ping負載均衡的虛擬IP地址192.168.1.15,觀察ping命令的輸出結果;然後將mysql-lb1服務器上的heartbeat服務停掉,這時從ping命令的輸出看,應該ping不到192.168.1.15,幾秒鐘後,又能夠重新ping到192.168.1.15(說明mysql-lb2成功地接替mysql-lb1,進入工作狀態了):

◆注意事項

數據庫引擎問題

如果你要將現有的數據庫轉移到MySQL集群中,那麼請將數據表的格式由MyISAM或InnoDB改為NDBCLUSTER。轉換的方法,請閱讀MySQL的官方文檔:

http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-multi-load-data-queries.html

否則,可能會遇到意想不到的問題,比如要添加MySQL用戶,就必須在每個NDB節點上添加,等等。

內存問題

NDB把所有數據存放在內存中,所以你需要為NDB節點配備較大的內存。

一般情況下,換算比例為1:1.1,也就是說,如果你有1GB數據庫,至少要配備1.1GB內存;如果你的數據庫會增長到8GB,就需要至少為服務器配備8.8GB內存。而且每個NDB節點都要做如此配置。

安全問題

該集群的MGM節點,其管理服務運行在1186端口上;NDB節點的MySQL運行在3306端口上。建議你使用防火牆將各個相關端口的訪問權限做一下限制。比如NDB節點的3306端口,只允許192.168.1.15訪問,等等。

Copyright © Linux教程網 All Rights Reserved