Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7593273
  • 博文数量: 368
  • 博客积分: 9600
  • 博客等级: 上校
  • 技术积分: 18875
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-01 00:00
文章分类

全部博文(368)

文章存档

2017年(9)

2016年(19)

2015年(3)

2014年(6)

2013年(8)

2012年(78)

2011年(66)

2010年(135)

2009年(44)

分类: Mysql/postgreSQL

2011-04-01 14:14:43

            Keepalived+LVS+Mysql-Cluster(7.1.10)的安装配置



NDB Cluster的硬件需求:

管理节点:对硬件没什么要求,差 一点的机器完全能够胜任

数据节点:可以选择大内存,cpu也相对来讲不错 的,尤其是以后ndbmtd对多核Cpu的支持

Mysql节 点:对cpu要求较高,选择多核,高频CPU较好


环境:

Role                IP                OS                  Cpu                 Mem
管理节点(LVS)    192.168.100.223    CentOS 5.5 64bit    E5405  @ 2.00GHz    3G
Ndb节点1           192.168.100.231    CentOS 5.5 64bit    E5506  @ 2.13GHz    16G
Ndb节点2           192.168.100.232    CentOS 5.5 64bit    E5506  @ 2.13GHz    16G
Mysql节点1         192.168.100.225    CentOS 5.5 64bit    E5506  @ 2.13GHz    16G
Mysql节点2         192.168.100.226    CentOS 5.5 64bit    E5506  @ 2.13GHz    16G

Mysql版本:mysql-5.1.51
NDB版本:ndb-7.1.10



架构图:

Mysql-Cluster 7.1.10的安装配置
数据节点的安装:
tar xzvf mysql-cluster-gpl-7.1.10-linux-i686-glibc23.tar.gz
mv mysql-cluster-gpl-7.1.10-linux-i686-glibc23 /usr/local/mysql
#编辑/etc/my.cnf,添加如下内容:
 [mysql_cluster]
ndb-connectstring="nodeid=21, 192.168.100.223"
#修改环境变量,增加mysql命令路径
vi /root/.bash_profile
#修改如下
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
然后执行source  /root/.bash_profile命令使更改生效!
另一个数据节点的安装类似。

Mysql节点的安装
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
tar xzvf mysql-cluster-gpl-7.1.10-linux-i686-glibc23.tar.gz
mv mysql-cluster-gpl-7.1.10-linux-i686-glibc23 /usr/local/mysql
chown -R root.mysql /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql/data
cd /usr/local/mysql
./scripts/mysql_install_db  --user=mysql
cp /usr/local/mysql/support-files/my-huge.cnf  /etc/my.cnf
添加如下内容:
[mysql_cluster]
ndb-connectstring="nodeid=12,192.168.100.223"
在[mysqld]下添加如下内容
ndbcluster
ndb-connectstring="nodeid=12,192.168.100.223"
ndb-force-send=1
ndb-use-exact-count=0
ndb-autoincrement-prefetch-sz=256
engine-condition-pushdown=1
ndb-cluster-connection-pool=4
default-storage-engine = ndbcluster
#编辑 /root/.bash_profile
#修改如下
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
然后执行source  /root/.bash_profile命令使更改生效!
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
#设置成服务启动
chkconfig --add mysqld
chkconfig --level 2345 mysqld on
另一个mysql节点的安装类似。


管理节点的安装
tar xzvf mysql-cluster-gpl-7.1.10-linux-i686-glibc23.tar.gz
cp mysql-cluster-gpl-7.1.10-linux-i686-glibc23/
cp mysql-cluster-gpl-7.1.10-linux-i686-glibc23/bin/ndb_mgm* /usr/bin/
chmod +x /usr/bin/ ndb_mgm*
新建/etc/my.cnf,添加如下内容:
[mysqld]
ndbcluster
ndb-connectstring=192.168.100.223
[mysql_cluster]
ndb-connectstring=192.168.100.223

#新建config.ini文件,添加如下内容:


[tcp default]
SendBufferMemory=2M
ReceiveBufferMemory=2M

[NDB_MGMD]
HostName=192.168.100.223

[NDBD DEFAULT]
TotalSendBufferMemory = 256M
NoOfReplicas=2
DataMemory=10240M
IndexMemory=1024M
DataDir=/data/dbdata
#DataDir=/usr/local/mysql/mysql-cluster
#FileSystemPath=/data/dbdata
FragmentLogFileSize=256M
NoOfFragmentLogFiles=16

LockPagesInMainMemory=1
MaxNoOfTables=4096
MaxNoOfOrderedIndexes=2048
MaxNoOfUniqueHashIndexes=2048
MaxNoOfAttributes=20480
MaxNoOfTriggers=10240
ODirect=1
MaxNoOfConcurrentTransactions=50000
MaxNoOfConcurrentOperations=100000
TimeBetweenGlobalCheckpoints=1000
TimeBetweenEpochs=200
TransactionBufferMemory=10M
DiskCheckpointSpeed=10M
DiskCheckpointSpeedInRestart=100M
RedoBuffer=64M

SchedulerSpinTimer=400
SchedulerExecutionTimer=100
RealTimeScheduler=1

BackupMaxWriteSize=1M
BackupDataBufferSize=16M
BackupLogBufferSize=4M
BackupMemory=20M

MaxNoOfExecutionThreads=4

TransactionDeadLockDetectionTimeOut=10000

BatchSizePerLocalScan=512

#disk
SharedGlobalMemory=256M
DiskPageBufferMemory=512MB


[NDBD]
id=11
HostName=192.168.100.231
#LockExecuteThreadToCpu=1,2,3
#LockMaintThreadsToCPU=0

[NDBD]
id=12
HostName=192.168.100.232
#LockExecuteThreadToCpu=1,2,3
#LockMaintThreadsToCPU=0

[MYSQLD]
id=13
HostName=192.168.100.225
[MYSQLD]
id=14
HostName=192.168.100.226
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]

keepalived的安装配置
Lvs的安装
wget
ln -s /usr/src/kernels/2.6.18-164.el5-i686/ /usr/src/linux
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make && make install

Keepalived的安装
wget
tar zxvf keepalived-1.1.19.tar.gz
cd keepalived-1.1.19
./configure --prefix=/usr/local/keepalived
make
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived

keepalived的配置
server端的配置
vi /etc/keepalived/keepalived.conf
添加如下内容:

global_defs {

   notification_email {

        zhangxy@zhang.com  

}

   notification_email_from zhangxy@zhang.com

   smtp_server 192.168.1.250

   smtp_connect_timeout 30

   router_id LVS_DEV

}

 

vrrp_instance VI_9 {

    state MASTER

    interface eth0

    virtual_router_id 100

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 2209

    }

    virtual_ipaddress {

        192.168.100.229/24 dev eth0 label eth0:1

 }

}

 

    virtual_server 192.168.100.229 3306 {

    delay_loop 2

    lb_algo wrr

    lb_kind DR

    nat_mask 255.255.255.0

   # persistence_timeout 60

protocol TCP

    real_server 192.168.100.225 3306 {

        weight 3

        TCP_CHECK {

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 3

        connect_port 3306

                }

        }

 

 

    real_server 192.168.100.226 3306 {

        weight 3

        TCP_CHECK {

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 3

        connect_port 3306

                }

        }

}



Client端的配置
vi /etc/rc.d/init.d/realserver.sh 添加如下配置:

#!/bin/bash

# description: Config realserver lo and apply noarp

SNS_VIP=192.168.100.229

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

case "$1" in

start)

       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

       /sbin/route add -host $SNS_VIP dev lo:0

       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

       sysctl -p >/dev/null 2>&1

       echo "RealServer Start OK"

       ;;

stop)

       ifconfig lo:0 down

       route del $SNS_VIP >/dev/null 2>&1

       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 "RealServer Stoped"

       ;;

*)

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

       exit 1

esac

exit 0


添加加可执行的权限
chmod +x  /etc/rc.d/init.d/realserver.sh
keepalived的服务器端启动
/etc/rc.d/init.d/keepalived  start
keepalived的客户端启动
/etc/rc.d/init.d/realserver.sh  start

ndb各节点的关闭和启动
节点的启动和关闭是有顺序的,启动的时候应该先启动管理节点,然后是数据节点,最后是mysql节点。关闭节点的时候应该先关闭mysql节点,然后再通过管理节点关闭所有的管理节点和数据节点。
启动:
/usr/bin/ndb_mgmd -f /usr/local/mysql/mysql-cluster/config.ini(启动管理节点)
/usr/bin/ndbd  --initial(启动数据节点,只有第一次启动或者有的配置变更后才需要--initial参数)
/etc/rc.d/init.d/mysqld start(启动mysql节点)
停止:
/etc/rc.d/init.d/mysqld stop
ndb_mgm -e shutdown

阅读(17823) | 评论(17) | 转发(12) |
给主人留下些什么吧!~~

chenxingzhen0012012-06-13 14:42:29

飞鸿无痕: echo 1 > /proc/sys/net/ipv4/ip_forward
使用telnet测试看看在lvs的机器上是否能telnet那些mysql的3306端口,看看防火墙规则是否允许lvs的机器连接mysql的机.....
嗯,就是网络的问题,在高度器上用route add default dev eth1命令添加路由就好了。

飞鸿无痕2012-05-31 09:05:27

chenxingzhen001: 谢谢楼主的回复,我已经改过来了。现在启动keepalived后用tail查看日志信息如下:
[root@sg204 mysql-cluster]# tail -f /var/log/messages
May 29 13:50:11 sg.....
echo 1 > /proc/sys/net/ipv4/ip_forward
使用telnet测试看看在lvs的机器上是否能telnet那些mysql的3306端口,看看防火墙规则是否允许lvs的机器连接mysql的机器

chenxingzhen0012012-05-29 15:09:57

弄了半天还是没解决,不知道是哪里原因,只好向楼主求救了。
现在是客户端realserver.sh启动后,再启动keepalived的服务端后,服务端就ping不通客户端了,只要把客户端realserver.sh停止或者服务端的keepalived服务停止 后 服务端就能ping通客户端了。

chenxingzhen0012012-05-29 13:55:11

我的keepalived.conf配置如下:
! Configuration File for keepalived

global_defs {
   notification_email {
       chenxz@chen.com
   }
   notification_email_from chenxz@chen.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interf

chenxingzhen0012012-05-29 13:52:27

谢谢楼主的回复,我已经改过来了。现在启动keepalived后用tail查看日志信息如下:
[root@sg204 mysql-cluster]# tail -f /var/log/messages
May 29 13:50:11 sg204 Keepalived_healthcheckers: Activating healtchecker for service [172.16.48.208:3306]
May 29 13:50:11 sg204 Keepalived_healthcheckers: Activating healtchecker for service [172.16.48.211:3306]
May 29 13:50:11 sg204 Keepalived_vrrp: VRRP sockpool: [ifindex(3), proto(112), fd(10,11)]
May 29 13:50:12 sg204 Keepalived_vrrp: VRRP_Instance(VI_1) Tran