自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Lvs+Keepalived+MySQL Cluster架設(shè)高可用負(fù)載均衡Mysql集群

開發(fā) 架構(gòu) 前端
MySQL Cluster 是MySQL適合于分布式計(jì)算環(huán)境的高實(shí)用、高冗余版本。它采用了NDB Cluster存儲(chǔ)引擎,允許在1個(gè)Cluster中運(yùn)行多個(gè)MySQL服務(wù)器。在MyQL5.0 及以上的二進(jìn)制版本中、以及與最新的Linux版本兼容的RPM中提供了該存儲(chǔ)引擎。

一、前言

MySQL Cluster 是MySQL適合于分布式計(jì)算環(huán)境的高實(shí)用、高冗余版本。它采用了NDB Cluster存儲(chǔ)引擎,允許在1個(gè)Cluster中運(yùn)行多個(gè)MySQL服務(wù)器。在MyQL5.0 及以上的二進(jìn)制版本中、以及與***的Linux版本兼容的RPM中提供了該存儲(chǔ)引擎。MySQL Cluster 是一種技術(shù),該技術(shù)允許在無共享的系統(tǒng)中部署“內(nèi)存中”數(shù)據(jù)庫的 Cluster。通過無共享體系結(jié)構(gòu),系統(tǒng)能夠使用廉價(jià)的硬件,而且對(duì)軟硬件無特殊要求。此外,由于每個(gè)組件有自己的內(nèi)存和磁盤,不存在單點(diǎn)故障。MySQL Cluster由一組計(jì)算機(jī)構(gòu)成,每臺(tái)計(jì)算機(jī)上均運(yùn)行著多種進(jìn)程,包括MySQL服務(wù)器,NDB Cluster的數(shù)據(jù)節(jié)點(diǎn),管理服務(wù)器,以及(可能)專門的數(shù)據(jù)訪問程序。

二、MySQL Cluster基本概念 

NDB是一種“內(nèi)存中”的存儲(chǔ)引擎,它具有可用性高和數(shù)據(jù)一致性好的特點(diǎn)。MySQL  Cluster能夠使用多種故障切換和負(fù)載平衡選項(xiàng)配置NDB存儲(chǔ)引擎,但在Cluster 級(jí)別上的存儲(chǔ)引擎上做這個(gè)最簡單。MySQL Cluster的NDB存儲(chǔ)引擎包含完整的數(shù)據(jù)集,僅取決于Cluster本身內(nèi)的其他數(shù)據(jù)。 

目前,MySQL Cluster的Cluster部分可獨(dú)立于MySQL服務(wù)器進(jìn)行配置。在MySQL Cluster中,Cluster

的每個(gè)部分被視為1個(gè)節(jié)點(diǎn)。 

管理(MGM)節(jié)點(diǎn):這類節(jié)點(diǎn)的作用是管理MySQL  Cluster內(nèi)的其他節(jié)點(diǎn),如提供配置數(shù)據(jù)、啟動(dòng)并停止節(jié)點(diǎn)、運(yùn)行備份等。由于這類節(jié)點(diǎn)負(fù)責(zé)管理其他節(jié)點(diǎn)的配置,應(yīng)在啟動(dòng)其他節(jié)點(diǎn)之前首先啟動(dòng)這類節(jié)點(diǎn)。MGM節(jié)點(diǎn)是用命令“ndb_mgmd”啟動(dòng)的。 

數(shù)據(jù)(NDB)節(jié)點(diǎn):這類節(jié)點(diǎn)用于保存Cluster的數(shù)據(jù)。數(shù)據(jù)節(jié)點(diǎn)的數(shù)目與副本的數(shù)目相關(guān),是片段的倍數(shù)。例如,對(duì)于兩個(gè)副本,每個(gè)副本有兩個(gè)片段,那么就有4個(gè)數(shù)據(jù)節(jié)點(diǎn)。不過沒有必要設(shè)置多個(gè)副本。數(shù)據(jù)節(jié)點(diǎn)是用命令“ndbd”啟動(dòng)的。 

客戶(SQL)節(jié)點(diǎn):這是用來訪問Cluster數(shù)據(jù)的節(jié)點(diǎn)。對(duì)于MySQL Cluster,客戶端節(jié)點(diǎn)是使用NDB Cluster 存儲(chǔ)引擎的傳統(tǒng)MySQL服務(wù)器。通常,SQL節(jié)點(diǎn)是使用命令“mysqld -ndbcluster”啟動(dòng)的,或?qū)?ldquo;ndbcluster”添加到“my.cnf”后使用“mysqld”啟動(dòng)。 

注釋:在很多情況下,術(shù)語“節(jié)點(diǎn)”用于指計(jì)算機(jī),但在討論MySQL Cluster時(shí),它表示的是進(jìn)程。在單臺(tái)計(jì)算機(jī)上可以有任意數(shù)目的節(jié)點(diǎn),為此,我們采用術(shù)語“Cluster主機(jī)”。 

管理服務(wù)器(MGM節(jié)點(diǎn))負(fù)責(zé)管理Cluster配置文件和Cluster日志。Cluster中的每個(gè)節(jié)點(diǎn)從管理服務(wù)器檢索配置數(shù)據(jù),并請(qǐng)求確定管理服務(wù)器所在位置的方式。當(dāng)數(shù)據(jù)節(jié)點(diǎn)內(nèi)出現(xiàn)新的事件時(shí),節(jié)點(diǎn)將關(guān)于這類事件的信息傳輸?shù)焦芾矸?wù)器,然后將這類信息寫入Cluster日志。

三、環(huán)境

系統(tǒng):CentOS6.4 32位   9臺(tái)

軟件包(可以去mysql官網(wǎng)下載http://dev.mysql.com/downloads/cluster/):

MGM:

MySQL-Cluster-gpl-management-7.1.31-1.el6.i686.rpm

MySQL-Cluster-gpl-tools-7.1.31-1.el6.i686.rpm

SQL節(jié)點(diǎn):

MySQL-Cluster-gpl-client-7.1.31-1.el6.i686.rpm

MySQL-Cluster-gpl-server-7.1.31-1.el6.i686.rpm

NDB節(jié)點(diǎn):

MySQL-Cluster-gpl-storage-7.1.31-1.el6.i686.rpm

拓?fù)鋱D:

wKiom1OFwSTzvSc9AAGGtl899xs417.jpg

IP規(guī)劃:

wKioL1OFw-Gwy2L8AAGxWiLB-iU586.jpg

四、配置(請(qǐng)先卸載掉與mysql有關(guān)的所有RPM包

1.LB-Master及LB-Backup配置

(1)LB-Master及LB-Backup安裝keepalived和ipvsadm

  1. # yum groupinstall "Additional Development"         //安裝開發(fā)工具   
  2. # yum groupinstall "Development tools"   
  3. # tar -zxvf keepalived-1.2.1.tar.gz -C /usr/local/src/   
  4. # cd /usr/local/src/keepalived-1.2.1   
  5. # ./cnfigure   
  6. Keepalived configuration   
  7. ------------------------   
  8. Keepalived version       : 1.2.1   
  9. Compiler                 : gcc   
  10. Compiler flags           : -g -O2   
  11. Extra Lib                : -lpopt -lssl -lcrypto    
  12. Use IPVS Framework       : No    //配置出現(xiàn)錯(cuò)誤   
  13. IPVS sync daemon support : No   
  14. Use VRRP Framework       : Yes   
  15. Use Debug flags          : No   
  16. 解決方法:   
  17. # yum install kernel-devel ipvsadm   
  18. # ln -s /usr/src/kernels/2.6.32-358.el6.i686/ /usr/src/linux   
  19. # ./cnfigure                    //再次配置環(huán)境   
  20. # make                          //編譯   
  21. # make install                  //安裝   
  22.       
  23. # cd /usr/local/etc             //keepalived默認(rèn)安裝路徑   
  24. # ll   
  25. drwxr-xr-x. 3 root root 4096 May 24 00:37 keepalived   
  26. drwxr-xr-x. 3 root root 4096 May 24 00:29 rc.d   
  27. drwxr-xr-x. 2 root root 4096 May 24 00:29 sysconfig   
  28.        
  29. 配置以系統(tǒng)方式service啟動(dòng)   
  30. # cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/    
  31. # cp /usr/local/etc/sysconfig/keepalived  /etc/sysconfig/   
  32. # mkdir /etc/keepalived   
  33. # cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/   
  34. # cp /usr/local/sbin/keepalived /usr/sbin/ 

(2)LB-Master及LB-Backup的keepalived主配置文檔

  1. # cat /etc/keepalived/keepalived.conf   
  2. #guration File for keepalived   
  3. #global define   
  4. global_defs {   
  5.         router_id HaMySQL_1   
  6.         }   
  7. vrrp_sync_group VGM {   
  8.         group {   
  9.         VI_MYSQL   
  10.         }   
  11. }   
  12. vrrp_instance VI_MYSQL {   
  13.         state MASTER             //LB-Backup設(shè)置為BACKUP   
  14.         interface eth0   
  15.         lvs_sync_daemon_inteface eth0   
  16.         virtual_router_id 55   
  17.         priority 100             //LB-Backup設(shè)置為90   
  18.         advert_int 5   
  19.         authentication {   
  20.                 auth_type PASS   
  21.                 auth_pass 123456   
  22.         }   
  23.         virtual_ipaddress {   
  24.                 192.168.2.200/24 dev eth0   
  25.         }   
  26. }   
  27. ##########  LVS  MySQL Start   ###########   
  28. virtual_server 192.168.2.200 3306 {   
  29.         delay_loop 6   
  30.         lb_algo rr   
  31.         lb_kind DR   
  32.         persistence_timeout 6   
  33.         protocol TCP   
  34.     
  35.         real_server 192.168.2.50 3306 {   
  36.                 weight 100   
  37.                 TCP_CHECK {   
  38.                         connect_timeout 3   
  39.                         nb_get_retry 3   
  40.                         delay_before_retry 3   
  41.                         connect_port 3306   
  42.                 }   
  43.         }   
  44.         real_server 192.168.2.60 3306 {   
  45.                 weight 100   
  46.                 TCP_CHECK {   
  47.                         connect_timeout 3   
  48.                         nb_get_retry 3   
  49.                         delay_before_retry 3   
  50.                         connect_port 3306   
  51.                 }   
  52.         }   
  53. }   
  54. ##########  LVS MySQL END   ############# 

2.MGM配置

(1)安裝管理節(jié)點(diǎn)

  1. # rpm -ivh MySQL-Cluster-gpl-management-7.1.31-1.el6.i686.rpm   
  2. # rpm -ivh MySQL-Cluster-gpl-tools-7.1.31-1.el6.i686.rpm    
  3. # mkdir /etc/mysql-cluster 

(2)配置管理節(jié)點(diǎn)

  1. # vim /etc/mysql-cluster/config.ini     //添加以下內(nèi)容   
  2. [ndbd default]   
  3. NoOfReplicas=2   
  4. DataMemory=80M   
  5. IndexMemory=18M   
  6. # TCP/IP options:   
  7. [tcp default]   
  8. portnumber=2202   
  9. # Management process options:   
  10. [ndb_mgmd]   
  11. id=1   
  12. hostname=192.168.2.10   
  13. datadir=/var/lib/mysql-cluster  
  14. # Options for data node   
  15. [ndbd]   
  16. id=2   
  17. hostname=192.168.2.30   
  18. datadir=/var/lib/mysql  
  19. [ndbd]   
  20. id=3   
  21. hostname=192.168.2.40   
  22. datadir=/var/lib/mysql  
  23. [mysqld]   
  24. id=4   
  25. hostname=192.168.2.50   
  26. [mysqld]   
  27. id=5   
  28. hostname=192.168.2.60 

(3)啟動(dòng)管理節(jié)點(diǎn)

  1. # mkdir /var/lib/mysql-cluster   
  2. # ndb_mgmd -f /etc/mysql-cluster/config.ini    
  3. MySQL Cluster Management Server mysql-5.1.73 ndb-7.1.31   
  4. # netstat -tupln   
  5. tcp     0     0    0.0.0.0:1186   0.0.0.0:*   LISTEN     17629/ndb_mgmd 

3.數(shù)據(jù)節(jié)點(diǎn)(NDB1和NDB2)配置

(1)安裝數(shù)據(jù)節(jié)點(diǎn)

  1. # rpm -ivh MySQL-Cluster-gpl-storage-7.1.31-1.el6.i686.rpm   
  2. # mkdir /var/lib/mysql 

(2)配置數(shù)據(jù)節(jié)點(diǎn)

  1. # vim /etc/my.cnf   
  2. [mysqld]   
  3. datadir=/var/lib/mysql  
  4. socket=/var/lib/mysql/mysql.sock   
  5. user=mysql   
  6. # Disabling symbolic-links is recommended to prevent assorted security risks   
  7. symbolic-links=0   
  8.     
  9. [mysqld_safe]   
  10. log-error=/var/log/mysqld.log   
  11. pid-file=/var/run/mysqld/mysqld.pid   
  12.     
  13. [mysql_cluster]   
  14. ndb-connectstring=192.168.2.10 

(3)啟動(dòng)數(shù)據(jù)節(jié)點(diǎn)

  1. # ndbd --initial       //NDB1   
  2. 2014-05-28 00:32:17 [ndbd] INFO     -- Angel connected to '192.168.2.10:1186' 
  3. 2014-05-28 00:32:17 [ndbd] INFO     -- Angel allocated nodeid: 2   
  4. # ndbd --initial       //NDB2   
  5. 2014-05-28 00:33:08 [ndbd] INFO     -- Angel connected to '192.168.2.10:1186' 
  6. 2014-05-28 00:33:08 [ndbd] INFO     -- Angel allocated nodeid: 3 

#p#

4.SQL節(jié)點(diǎn)(SQL1和SQL2)配置

網(wǎng)卡及屏蔽ARP設(shè)置

在現(xiàn)有網(wǎng)卡基礎(chǔ)上添加一塊lo:0網(wǎng)卡

wKioL1OF0K-jcWeNAADMjF9kAk4318.jpg

  1. # vim /etc/sysctl.conf                  //添加以下兩行   
  2. net.ipv4.conf.all.arp_announce = 2   
  3. net.ipv4.conf.all.arp_ignore = 1   
  4. # sysctl -p 

(1)安裝SQL節(jié)點(diǎn)

  1. # rpm -ivh MySQL-Cluster-gpl-client-7.1.31-1.el6.i686.rpm   
  2. # rpm -ivh MySQL-Cluster-gpl-server-7.1.31-1.el6.i686.rpm //如出錯(cuò),卸載與mysql有關(guān)的rpm包 

(2)配置SQL節(jié)點(diǎn)

  1. # The MySQL server    
  2. [mysqld]   
  3. port = 3306   
  4. socket=/var/lib/mysql/mysql.sock   
  5. ndbcluster   
  6. default-storage-engine=NDBCLUSTER   
  7. skip-name-resolve   
  8. [mysql_cluster]   
  9. ndb-connectstring=192.168.2.10 

(3)啟動(dòng)SQL節(jié)點(diǎn)

  1. # service mysql start        //SQL1   
  2. Starting MySQL.. SUCCESS!    
  3. # service mysql start        //SQL2,如無法啟動(dòng),執(zhí)行pkill -9 mysql再啟動(dòng)   
  4. Starting MySQL SUCCESS!    
  5. # netstat -tupln |grep mysql   
  6. tcp     0     0   0.0.0.0:3306        0.0.0.0:*     LISTEN      3475/mysqld 

(4)配置遠(yuǎn)程連接(SQL1和SQL2配置一致)

  1. # mysql   
  2. mysql> grant all on *.* to 'nuo'@'%' identified by '123';   
  3. mysql> flush privileges; 

啟動(dòng)順序一定要遵循:MGM→NDB→SQL

五、查看狀態(tài)

 

1.查看MGM狀態(tài)

  1. # ndb_mgm   
  2. -- NDB Cluster -- Management Client --   
  3. ndb_mgm> show   
  4. Connected to Management Server at: localhost:1186   
  5. Cluster Configuration   
  6. ---------------------   
  7. [ndbd(NDB)] 2 node(s)   
  8. id=2    @192.168.2.30  (mysql-5.1.73 ndb-7.1.31, Nodegroup: 0, *)   
  9. id=3    @192.168.2.40  (mysql-5.1.73 ndb-7.1.31, Nodegroup: 0)   
  10.     
  11. [ndb_mgmd(MGM)] 1 node(s)   
  12. id=1    @192.168.2.10  (mysql-5.1.73 ndb-7.1.31)   
  13.     
  14. [mysqld(API)]   2 node(s)   
  15. id=4    @192.168.2.50  (mysql-5.1.73 ndb-7.1.31)   
  16. id=5    @192.168.2.60  (mysql-5.1.73 ndb-7.1.31

2.查看LB-Master狀態(tài)

  1. # service keepalived start   
  2. Starting keepalived:                                       [  OK  ]   
  3. # ip addr   
  4. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN    
  5.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00   
  6.     inet 127.0.0.1/8 scope host lo   
  7.     inet6 ::1/128 scope host    
  8.        valid_lft forever preferred_lft forever   
  9. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000   
  10.     link/ether 00:0c:29:22:3d:01 brd ff:ff:ff:ff:ff:ff   
  11.     inet 192.168.2.20/24 brd 192.168.2.255 scope global eth0   
  12.     inet 192.168.2.200/24 scope global secondary eth0   
  13.     inet6 fe80::20c:29ff:fe22:3d01/64 scope link    
  14.        valid_lft forever preferred_lft forever   
  15. # ipvsadm   
  16. IP Virtual Server version 1.2.1 (size=4096)   
  17. Prot LocalAddress:Port Scheduler Flags   
  18.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   
  19. TCP  192.168.2.200:mysql rr persistent 6   
  20.   -> 192.168.2.50:mysql           Route   100    0          0            
  21.   -> 192.168.2.60:mysql           Route   100    0          0 

3.查看LB-Backup狀態(tài)

  1. # service keepalived start   
  2. Starting keepalived:                                       [  OK  ]   
  3. # ip addr   
  4. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN    
  5.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00   
  6.     inet 127.0.0.1/8 scope host lo   
  7.     inet6 ::1/128 scope host    
  8.        valid_lft forever preferred_lft forever   
  9. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000   
  10.     link/ether 00:0c:29:27:e1:98 brd ff:ff:ff:ff:ff:ff   
  11.     inet 192.168.2.21/24 brd 192.168.2.255 scope global eth0   
  12.     inet6 fe80::20c:29ff:fe27:e198/64 scope link    
  13.        valid_lft forever preferred_lft forever   
  14. # ipvsadm   
  15. IP Virtual Server version 1.2.1 (size=4096)   
  16. Prot LocalAddress:Port Scheduler Flags   
  17.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   
  18. TCP  192.168.2.200:mysql rr persistent 6   
  19.   -> 192.168.2.50:mysql           Route   100    0          0            
  20.   -> 192.168.2.60:mysql           Route   100    0          0 

六、測(cè)試

1.客戶端1(CentOS6.4 32位,IP:192.168.2.80/24)

  1. # yum install mysql   
  2. # mysql -h 192.168.2.200 -u nuo -p   
  3. Enter password:   
  4. mysql> show databases;   
  5. +--------------------+   
  6. | Database           |   
  7. +--------------------+   
  8. | information_schema |   
  9. | mysql              |   
  10. | ndbinfo            |   
  11. | test               |   
  12. +--------------------+   
  13. mysql> create database t;   
  14. mysql> use t;   
  15. mysql> create table t2(id int);   
  16. mysql> insert into t2 values(10);   
  17. mysql> insert into t2 values(20); 

2.LB-Master查看連接狀態(tài)

  1. # ipvsadm   
  2. IP Virtual Server version 1.2.1 (size=4096)   
  3. Prot LocalAddress:Port Scheduler Flags   
  4.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn   
  5. TCP  192.168.2.200:mysql rr persistent 6   
  6.   -> 192.168.2.50:mysql           Route   100    1          0            
  7.   -> 192.168.2.60:mysql           Route   100    0          0            
  8. # ipvsadm -lcn   
  9. IPVS connection entries   
  10. pro expire state       source             virtual            destination   
  11. TCP 14:48  ESTABLISHED 192.168.2.80:49993 192.168.2.200:3306 192.168.2.50:3306   
  12. TCP 00:54  NONE        192.168.2.80:0     192.168.2.200:3306 192.168.2.50:3306 

3.客戶端2(CentOS6.4 32位,IP:192.168.2.81/24)

  1. # yum install mysql   
  2. # mysql -h 192.168.2.200 -u nuo -p   
  3. Enter password:   
  4. mysql> show databases;   
  5. +--------------------+   
  6. | Database           |   
  7. +--------------------+   
  8. | information_schema |   
  9. | mysql              |   
  10. | ndbinfo            |   
  11. | t                  |   
  12. | test               |   
  13. +--------------------+   
  14. mysql> use t;   
  15. mysql> select * from t2;   
  16. +------+   
  17. | id   |   
  18. +------+   
  19. |   20 |   
  20. |   10 |   
  21. +------+ 

4.LB-Master查看連接狀態(tài)

  1. # ipvsadm -lcn   
  2. IPVS connection entries   
  3. pro expire state       source             virtual            destination   
  4. TCP 00:36  NONE        192.168.2.81:0     192.168.2.200:3306 192.168.2.60:3306   
  5. TCP 14:18  ESTABLISHED 192.168.2.81:42435 192.168.2.200:3306 192.168.2.60:3306 

總結(jié):在客戶端1上插入數(shù)據(jù)后,服務(wù)器顯示客戶端1連接的是SQL1(192.168.2.50),在客戶端2上進(jìn)行查詢,能查詢到客戶端1輸入的數(shù)據(jù),服務(wù)器顯示客戶端2連接的是SQL2(192.168.2.60),所以,數(shù)據(jù)是同步的,并且是一致性的。

51CTO博客:http://yinuoqianjin.blog.51cto.com/8360868/1418711

責(zé)任編輯:林師授 來源: 51cto博客
相關(guān)推薦

2012-02-15 00:01:34

2014-05-15 09:54:40

heartbeatlvs集群

2019-12-24 14:28:00

KeepalivedNginxTomcat

2010-06-21 14:37:18

2019-10-09 16:02:16

NginxKeepalivedLvs

2013-10-28 01:44:56

mysql載均衡高可用環(huán)境

2023-10-13 18:57:22

2012-05-07 10:20:12

LVS集群

2015-03-18 14:56:58

負(fù)載均衡服務(wù)器集群

2018-08-24 08:51:10

haproxykeepalived均衡器

2019-07-02 08:38:45

NginxTomcatKeepalived

2024-11-11 16:29:54

負(fù)載均衡器系統(tǒng)

2014-05-08 14:58:42

高可用集群負(fù)載均衡集群

2025-03-31 10:40:52

2010-04-22 14:19:21

LVS負(fù)載均衡集群

2010-04-22 11:47:58

集群負(fù)載均衡

2021-09-17 07:51:24

Keepalived服務(wù)高可用

2023-11-09 07:58:50

2019-07-30 10:18:06

NginxKeepalived

2018-01-12 14:20:37

數(shù)據(jù)庫MySQL高可用架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)