keepalived+mysql-cluster实现mysql的高可用和负载均衡群集_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2239 | 回复: 0   主题: keepalived+mysql-cluster实现mysql的高可用和负载均衡群集        下一篇 
小洋
注册用户
等级:新兵
经验:66
发帖:3
精华:0
注册:2014-3-12
状态:离线
发送短消息息给小洋 加好友    发送短消息息给小洋 发消息
发表于: IP:您无权察看 2014-12-24 15:38:26 | [全部帖] [楼主帖] 楼主

作者:曲宝全

实验环境:本环境一共七台服务器,操作系统均为CentOS 5.3 x86_64

有4 种角色,分别为keepalived 负载均衡器,sql 节点,数据节点,集群管理节

其中数据库版本为mysql-cluster-gpl-7.0.8a-linux-x86_64-glibc23.tar.gz,一

管理节点2 个存储节点,2 个sql 节点

2 台负载均衡器的版本为keepalived-1.1.17.tar.gz,ipvsadm-1.24.tar.gz

整个架构对外只提供vip 的服务,采用的rr 轮询的方式来访问sql 节点,同时实

现了负载均衡和高可用

ip 的对应关系如下:

Manage node:192.168.10.187

Data node-1:192.168.10.184

Data node-2:192.168.10.186

Sql node-1:192.168.10.175

Sql node-2:192.168.10.183

Keepalived_1:192.168.10.170

Keepalived_2:192.168.10.176

VIP:192.168.10.60

具体搭建过程如下:

1. 首先配置数据库集群环境

管理的节点

(1)安装管理节点

[root@qubaoquan local]# tar zvxf

mysql-cluster-gpl-7.1.4b-linux-x86_64-glibc23.tar.gz

[root@qubaoquan local]# mv mysql-cluster-gpl-7.1.4b-linux-x86_64-glibc23 mysql

[root@qubaoquan local]# cd /usr/local/

[root@qubaoquan local]# chown -R mysql:mysql mysql

[root@qubaoquan local]# cd mysql

[root@qubaoquan mysql]# ./scripts/mysql_install_db --user=mysql

[root@qubaoquan mysql]# mkdir mysql-cluster

(2)配置

[root@qubaoquan mysql]# cd mysql-cluster/

[root@qubaoquan mysql-cluster]# vi config.ini(内容如下)

[tcp default]

PortNumber= 63132

[ndbd default]

NoOfReplicas= 2

MaxNoOfConcurrentOperations= 10000

DataMemory= 80M

IndexMemory= 24M

TimeBetweenWatchDogCheck= 30000

DataDir= /usr/local/mysql/data

MaxNoOfOrderedIndexes= 512

[ndb_mgmd]

Id= 1

HostName= 192.168.10.187

DataDir= /usr/local/mysql/data

[ndbd]

Id= 2

HostName= 192.168.10.184

DataDir= /usr/local/mysql/data

[ndbd]

Id= 3

HostName= 192.168.10.186

DataDir= /usr/local/mysql/data

[mysqld]

Id= 4

HostName= 192.168.10.175

[mysqld]

Id= 5

HostName= 192.168.10.183

[root@inas-3 mysql]# chown -R mysql:mysql /usr/local/mysql

数据节点(2 个节点的安装和配置完全一致)

安装

[root@qubaoquan local]# tar zvxf

mysql-cluster-gpl-7.1.4b-linux-x86_64-glibc23.tar.gz

[root@qubaoquan local]# mv mysql-cluster-gpl-7.1.4b-linux-x86_64-glibc23 mysql

[root@qubaoquan local]# cd /usr/local/

[root@qubaoquan local]# chown -R mysql:mysql mysql

[root@qubaoquan local]# cd mysql

[root@qubaoquan mysql]# ./scripts/mysql_install_db --user=mysql

[root@inas-3 mysql]# chown -R mysql:mysql /usr/local/mysql

(2)配置

[root@inas-3 mysql]# cp support-files/my-medium.cnf /etc/my.cnf

[root@inas-3 mysql]# vi /etc/my.cnf(加到文件末尾)

################ cluster #########################

datadir=/usr/local/mysql/data/

ndbcluster

ndb-connectstring=192.168.10.187

[ndbd]

connect-string=192.168.10.187

[mysql_cluster]

ndb-connectstring=192.168.10.187

[ndb_mgm]

connect-string=192.168.10.187

[ndb_mgmd]

config-file=/usr/local/mysql/mysql-cluster/config.ini

Sql 节点

安装

[root@qubaoquan local]# tar zvxf

mysql-cluster-gpl-7.1.4b-linux-x86_64-glibc23.tar.gz

[root@qubaoquan local]# mv mysql-cluster-gpl-7.1.4b-linux-x86_64-glibc23 mysql

[root@qubaoquan local]# cd /usr/local/

[root@qubaoquan local]# chown -R mysql:mysql mysql

[root@qubaoquan local]# cd mysql

[root@qubaoquan mysql]# ./scripts/mysql_install_db --user=mysql

(2)配置

[root@inas-3 mysql]# cp support-files/my-medium.cnf /etc/my.cnf

[root@inas-3 mysql]# cp support-files/mysql.server /etc/init.d/mysqld

[root@inas-3 mysql]# chkconfig --add mysqld

[root@inas-3 mysql]# chkconfig --levles mysqld on

[root@gs173 mysql]# vi /etc/my.cnf(添加到mysqld 标签内)

############# cluster #################

ndbcluster

ndb-connectstring=192.168.10.187

分别启动服务

启动管理节点

[root@qubaoquan bin]# ./ndb_mgmd -f /usr/local/mysql/mysql-cluster/config.ini

[root@qubaoquan bin]# netstat -nltp |grep 1186

tcp 0 0 0.0.0.0:1186 0.0.0.0:*

LISTEN 11846/ndb_mgmd

启动数据节点

[root@inas-3 bin]# ./ndbd –initial

[root@inas-3 bin]# netstat -nltp |grep 63132

tcp 0 0 192.168.10.184:63132 0.0.0.0:*

LISTEN 1589/ndbd

启动sql 节点

[root@googleserver177 mysql]# /etc/init.d/mysqld start

[root@googleserver177 mysql]# netstat -nltp |grep 3306

tcp 0 0 :::3306 :::*

LISTEN 13193/mysqld

备注:

(1)启动管理节点:ndb_mgmd --initial -f /usr/local/mysql/mysql-cluster/config.ini

(first

time)

ndb_mgmd -f /usr/local/mysql/mysql-cluster/config.ini (not first time)

(2)启动数据节点:bin/ndbd --initial (first time)

bin/ndbd (not firest time)

//以下方式也可启动数据节点

bin/ndbd --initial -c localhost:1186

bin/ndbd --initial -c ip:1186

bin/ndbd --defaults-file=/etc/my.cnf --initial

(3)关闭管理节点: ndb_mgm -e shutdown

( 4 ) 查看工作状态:

在管理节点上运行[root@qubaoquan bin]# /usr/local/mysql/bin/ndb_mgm

例如:

[root@qubaoquan bin]# /usr/local/mysql/bin/ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=2 @192.168.10.184 (mysql-5.1.44 ndb-7.1.4, Nodegroup: )

id=3 @192.168.10.186 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @192.168.10.187 (mysql-5.1.44 ndb-7.1.4)

[mysqld(API)] 2 node(s)

id=4 @192.168.10.175 (mysql-5.1.44 ndb-7.1.4)

id=5 @192.168.10.183 (mysql-5.1.44 ndb-7.1.4)

ndb_mgm>

2. keepalived 的安装和配置,如下操作都在两个负载均衡节点

上操作

主控制节点的配置

(1) 首先连接内核文件

[root@master srv]# ln -s /usr/src/kernels/2.6.18-128.el5-x86_64/ /usr/src/linux/

(2) 安装ipvs 核心

[root@master srv]# tar vzxf libnet-1.1.2.1.tar.gz

[root@master srv]# cd libnet

[root@master libnet]# ./configure

[root@master libnet]# make

[root@master libnet]# make install

[root@master srv]# tar zvxf ipvsadm-1.24.tar.gz

[root@master srv]# cd ipvsadm-1.24

[root@master ipvsadm-1.24]#

[root@master ipvsadm-1.24]# make

[root@master ipvsadm-1.24]# make install

(3) 安装和配置keepalived

[root@master ipvsadm-1.24]# cd ..

[root@master srv]# tar vzxf keepalived-1.1.17.tar.gz

[root@master srv]# cd keepalived-1.1.17

[root@master keepalived-1.1.17]# ./configure ¨Cprefix=/usr/local/keepalive

[root@master keepalived-1.1.17]# make

[root@master keepalived-1.1.17]# make install

[root@master keepalived-1.1.17]# mkdir -p /etc/keepalived/

[root@master keepalived-1.1.17]# vi /etc/keepalived/keepalived.conf(内容如下)

#global define

global_defs {

    router_id 1

}

vrrp_sync_group test {

group {

    test_1

}

}

################################################################

# vvrp_instance define #

################################################################

vrrp_instance test_1 {

    state MASTER

    interface eth0

    lvs_sync_daemon_inteface eth0

    virtual_router_id 10

    priority 180

    advert_int 5

    authentication {

    auth_type PASS

    auth_pass 1111

    }

    virtual_ipaddress {

    192.168.10.60

    }

}

######################################################################

#####################################################

# virtual machine setting #

##############################################################

# setting port 3306 forward

virtual_server 192.168.10.60 3306 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    # persistence_timeout 20

    protocol TCP

    real_server 192.168.10.175 3306 {

    weight 100

    TCP_CHECK {

    connect_timeout 3

    nb_get_retry 3

    delay_before_retry 3

    connect_port 3306

    }

    }

    real_server 192.168.10.183 3306 {

    weight 100

    TCP_CHECK {

    connect_timeout 3

    nb_get_retry 3

    delay_before_retry 3

    connect_port 3306

    }

    }

}

(4)注册为系统服务

[root@master keepalived-1.1.17]# cp keepalived/etc/init.d/keepalived.rh.init /etc/init.d/keepalived

[root@master keepalived-1.1.17]# chmod +x /etc/init.d/keepalived

[root@master keepalived-1.1.17]# chkconfig --add keepalived

[root@master keepalived-1.1.17]# chkconfig --levels 2345 keepalived on

[root@master keepalived-1.1.17]# cp /usr/local/keepalive/sbin/keepalived /usr/bin

辅助控制节点的配置

(1)首先连接内核文件

[root@master srv]# ln -s /usr/src/kernels/2.6.18-128.el5-x86_64/ /usr/src/linux/

(2) 安装ipvs 核心

[root@master srv]# tar vzxf libnet-1.1.2.1.tar.gz

[root@master srv]# cd libnet

[root@master libnet]# ./configure

[root@master libnet]# make

[root@master libnet]# make install

[root@master srv]# tar zvxf ipvsadm-1.24.tar.gz

[root@master srv]# cd ipvsadm-1.24

[root@master ipvsadm-1.24]#

[root@master ipvsadm-1.24]# make

[root@master ipvsadm-1.24]# make install

(3) 安装和配置keepalived

[root@master ipvsadm-1.24]# cd ..

[root@master srv]# tar vzxf keepalived-1.1.17.tar.gz

[root@master srv]# cd keepalived-1.1.17

[root@master keepalived-1.1.17]# ./configure ¨Cprefix=/usr/local/keepalive

[root@master keepalived-1.1.17]# make

[root@master keepalived-1.1.17]# make install

[root@master keepalived-1.1.17]# mkdir -p /etc/keepalived/

[root@master keepalived-1.1.17]# vi /etc/keepalived/keepalived.conf(内容如下)

#global define

global_defs {

    router_id 2

}

vrrp_sync_group test {

group {

    test_1

}

}

######################################################################

#########################################################

# vrrp_instance setting #

################################################################

vrrp_instance test_1 {

    state BACKUP

    interface eth0

    lvs_sync_daemon_inteface eth0

    virtual_router_id 20

    priority 150

    advert_int 5

    authentication {

    auth_type PASS

    auth_pass 1111

    }

    virtual_ipaddress {

    192.168.10.60

    }

}

##############################################################

# virtual server setting #

##############################################################

# setting port 3306 forward

virtual_server 192.168.10.60 3306 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    # persistence_timeout 50

    protocol TCP

    real_server 192.168.10.175 3306 {

    weight 100

    TCP_CHECK {

    connect_timeout 3

    nb_get_retry 3

    delay_before_retry 3

    connect_port 3306

    }

    }

    real_server 192.168.10.183 3306 {

    weight 100

    TCP_CHECK {

    connect_timeout 3

    nb_get_retry 3

    delay_before_retry 3

    connect_port 3306

    }

    }

}

(4)注册为系统服务

[root@master keepalived-1.1.17]# cp keepalived/etc/init.d/keepalived.rh.init /etc/init.d/keepalived

[root@master keepalived-1.1.17]# chmod +x /etc/init.d/keepalived

[root@master keepalived-1.1.17]# chkconfig --add keepalived

[root@master keepalived-1.1.17]# chkconfig --levels 2345 keepalived on

[root@master keepalived-1.1.17]# cp /usr/local/keepalive/sbin/keepalived /usr/bin

}3. realserver的配置,如下操作都在两个sql节点上操作(操作完

全相同本处只以sql_1为例)

[root@localhost ~]# vi /etc/init.d/realserver(内容如下)

#!/bin/bash

#description : start realserver

# chkconfig: 37 22 80

VIP=192.168.10.60

/etc/rc.d/init.d/functions

case "$1" in

start)

echo " start LVS of REALServer"

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

;;

stop)

/sbin/ifconfig lo:0 down

echo "close LVS Directorserver"

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

[root@localhost ~]# chmod +x /etc/init.d/realserver

[root@localhost ~]# chkconfig --add realserver

[root@localhost ~]# chkconfig --levels 2345 realserver on

启动服务

(1) 启动两个realserver的脚本

[root@localhost ~]# /etc/init.d/realserver start

start LVS of REALServer

在sql节点上查看虚拟ip是否已经出现

[root@localhost ~]# ifconfig -a

eth0 Link encap:Ethernet HWaddr 00:14:85:EC:F7:52

inet addr:192.168.10.183 Bcast:192.168.10.255

Mask:255.255.255.0

inet6 addr: fe80::214:85ff:feec:f752/64 Scope:Link

UP BROADCAST RUNNING MULTICAST

MTU:1500 Metric:1

RX packets:310359 errors:0 dropped:0 overruns:0

frame:0

TX packets:160995 errors:0 dropped:0 overruns:0

carrier:0

collisions:0 txqueuelen:1000

RX bytes:28207983 (26.9 MiB) TX bytes:16492745

(15.7 MiB)

Interrupt:169

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:48727 errors:0 dropped:0 overruns:0

frame:0

TX packets:48727 errors:0 dropped:0 overruns:0

carrier:0

collisions:0 txqueuelen:0

RX bytes:3776120 (3.6 MiB) TX bytes:3776120 (3.6

MiB)

lo:0 Link encap:Local Loopback

inet addr:192.168.10.6 Mask:255.255.255.255

UP LOOPBACK RUNNING MTU:16436 Metric:1

sit0 Link encap:IPv6-in-IPv4

NOARP MTU:1480 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0

frame:0

TX packets:0 errors:0 dropped:0 overruns:0

carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

[root@localhost ~]#

(2)启动两个控制节点的服务

[root@qubaoquan ~]# /etc/init.d/keepalived start

在控制节点上查看虚拟ip是否已经出现

[root@master keepalived-1.1.17]# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500

qdisc pfifo_fast qlen 1000

link/ether 00:14:85:ec:f2:81 brd ff:ff:ff:ff:ff:ff

inet 192.168.10.170/24 brd 192.168.10.255 scope global eth0

inet 192.168.10.60/32 scope global eth0

inet6 fe80::214:85ff:feec:f281/64 scope link

valid_lft forever preferred_lft forever

3: sit0: <NOARP> mtu 1480 qdisc noop

link/sit 0.0.0.0 brd 0.0.0.0

在控制节点上查看主机列表

[root@master keepalived-1.1.17]# ipvsadm -L

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight

ActiveConn InActConn

TCP 192.168.10.60:mysql rr

-> 192.168.10.183:mysql Route 100 0 0

-> 192.168.10.175:mysql Route 100 0 0

}

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论