时间:2021-07-01 10:21:17 帮助过:3人阅读
服务器规划: 整套系统全部在rhel5u1 server 64位版本下,由基于xen的虚拟机搭建,其中集群管理节点*2、SQL节点*2、数据节点*4、Web服务节点*2组成,其中数据节点做成2个组,每组两台的形式:
-----------------------------------------------------------------------------------------------------------
安装过程:
1. 在所有节点上安装mysql: 我没有下载mysql源代码再编译安装,感觉机器太多编译太麻烦。我去mysql.com上下载社区版本,并且是针对我的rhel 5.1 server 64位版本的mysql软件,下载地址是: http://dev.mysql.com/downloads/m ... hel5-x86-64bit-rpms 下载这下面所有rpm包并安装,其中Shared libraries和Shared compatibility libraries只能二选一安装,装好以后mysql服务、集群相关工具等都有了,很方便。
2. (1) 在所有管理 Node上建立配置文件/etc/config.ini(注:这个文件只有管理节点上需要,其它节点上是不需要的):
-----------------------------------------------------------------------------------------------------------
(2) 分别开启管理node上的管理程序ndb_mgmd(本地监听1186端口),先启动id=1的节点,再启动id=2的节点,整个集群以id=2的节点为主要管理节点(谁后启动谁就是主要管理节点,关于这一点我还需要论证一下): ndb_mgmd -f /etc/config.ini 注:本server上不需要启动mysql服务(所以不需要配置/etc/my.cnf文件)。必须在在开启ndb node和sql node上的服务以前开启ndb_mgmd。
3.(1) 在所有ndb node上原有的/etc/my.cnf文件里增加以下内容:
-----------------------------------------------------------------------------------------------------------
注:ndb节点上不需要/etc/config.ini文件。
(2) 在所有ndb node上第一次执行命令: mkdir /var/lib/mysql-cluster cd /var/lib/mysql-cluster ndbd --initial
注:ndb node上不启动mysql服务。正常情况下使用“ndbd”命令启动ndb node,只有节点发生改变或者其它情况才需要带--initial参数。
4. (1)在sql node上建立新的my.cnf文件:
-----------------------------------------------------------------------------------------------------------
注:sql node上只需要启动Mysql服务:/etc/init.d/mysql start,不需要配置/etc/my.cnf文件。
5. (1) 在所有管理 node上运行集群管理程序: ndb_mgm
在提示符这里输入命令“show”,命令的输出结果中可以看到四个ndb node全部连到管理节点,两个管理节点上的输出是一样的:
可以看到,所有节点都已连接到管理节点上。如果出现“not connected, accepting connect from any host)”,表示某个节点还没有连到管理节点上。
从netstat命令的输出结果也可以看出所有节点都连到管理节点上:
(2) 在任一ndb node上看连接(以20.9为例),都可以看到本node和其他3个ndb node(10/11/12)、管理node(5/6)、sql node(7/8)都有连接,除了和管理node的连接是到1186端口,其它连接都是随机端口。
(3) 在任一sql node上看连接(以20.7为例),可以看到两个sql node都连接到管理node 20.6上(管理node中20.5先启动,20.6后启动):
7. mysql高可用性集群搭建完成,接下来用ipvs搭建负载均衡。
在所有mysql_sql节点上建立空库: create database loadbalancing;
设置权限,允许所有mysql_lb节点有select权限(用于心跳测试): grant select on loadbalancing.* to loadbalancing@192.168.20.15 identified by ‘abcdefg‘; grant select on loadbalancing.* to loadbalancing@192.168.20.16 identified by ‘abcdefg‘;
8.(1) 在管理节点上加载IPVS模块:
(2) 在管理节点上配置LVS(20.15和20.16是两个负载均衡的节点,realserver是20.7和20.8,虚拟IP是20.17,端口是 3306)。可以启动/etc/init.d/piranha-gui,然后在http://localhost:3636里设置集群,最终生成配置文件 /etc/sysconfig/ha/lvs.cf,也可以直接生成这个文件/etc/sysconfig/ha/lvs.cf:
必须确保lvs.cf文件在两个负载均衡节点上都有,并且内容完全相同。
两个负载均衡节点上的探测脚本/usr/local/bin/mysql_running_test:
注:两个探测节点上需要装mysql client。 原理说明:lvs.cf里指定这个脚本,其实是给负载均衡节点上的nanny程序调用,lvs.cf里的%h参数表示调用这个脚本的时候加上hostname/ip地址的参数。 这个脚本的作用是连接到mysql server上执行select语句回显一个字符串abcdefg,通过判断回显是否正确来确认real server是否运行正常。
(3) 启动LVS服务: /etc/init.d/pulse start
其中一个节点上的/var/log/messages里的内容:
另一节点上/var/log/messages里的内容:
2007-12-27 11:33 上传
下载次数: 26
实践:搭建基于Load Balancer的MySql Cluster
标签: