MySQL集群配置


Mysql 集群配置 1、 项目背景 随着人们对业务的要求和用用户的满意度期望值的不断提升,很多生产系统(尤其是金融, 基金,证券,保险行业和电信)需要提供 7x24 小时的不间断服务。我们将可将应用服务再整合, 搭建一个集群环境,保证能够把出现问题的机器自动启动,使其恢复到初始状态。而且在整个服务 切换过程中,不需要任何的人为干预。这也是高效能的解决方案 2、 项目要求 搭建 Mysql 的集群服务 3、 实施步骤 实验平台:Redhat Enterprise 5 所需软件:红帽集群套件(Redhat Cluster Suite) 服务器:两台 node1(192.168.0,1),node2(192.168.0.2), Fences 设备:栅设备节点 fence(192.168.0.3) 存储:共享存储设备节点 share(192.168.0.4) 网络交换机:一个 应用程序:Mysql 1. 初始配置 在配置之前保证各节点网络互通 在 Node1 上编辑/etc/hosts 文件,声明将添加的个集群节点 Node1#vi /etc/hosts(加入如下内容) 127.0.0.1 localhost.localdomain localhost 192.168.0.1 node1. 192.168.0.2 node2. 192.168.0.3 fence. 192.168.0.4 share. 修改/etc/sysconfig/network NETWORKING=yes HOSTNAME=node1 GATEWAY=192.168.0.254 注:其它节点按照相应的配置修改 node2,fenc,share 的机器 设置各节点的 root ssh key,这样有利于我们在各节点之间互相访问 Node1#ssh-keygan Node1#cp .ssh/id_dsa.pub .ssh/authorized_key 将 Node1 的/root/.ssh 目录复制到其它节点上去,这样节点就可以无密码相互访问了。 Node1#for i in node2 fence share ;do scp –r .ssh $i:/root/;done; 将/etc/hosts 文件复制到其它节点上去,声明将其加入到集群中各节点 Node1#for i in node2 fence share; do scp –r /etc/hosts $i:/etc/ 为每个节点安装集群套件, mysql 应 用 程 序 ,取 消 mysqld 的 服 务 , 因 为 mysqld 是 由 rgmananger 服务器启动的,并取消开机启动的集群服务,便于排错 Node1#for i in node1 node2 fence share; do ssh $i yum –y groupinstall Clustering “Clusert Storage” Node1#for i in node1 node2 fence share; do ssh $i yum –y install mysql*; done; Node1#for i in node1 node2; do ssh $i chkconfig mysqld off;done; Node1#for i in node1 node2 fence share; do ssh $i chkconfig cman off; done; Node1#for i in node1 node2 fence share; do ssh $i chkconfig rgmanager off ;done; 注:配置本地的 yum 源,这在我的文章里有关于本地 yum 的配置方法 在某一个节点上进入图形界面执行 system-config-cluster Node1#system-config-cluster& 第一次使用 system-config-cluster 时会提示你新建一个 cluster.conf 配置文件,选择一个组波地 址 multicast (255.0.0.1~234.255.255.255)之间的一个 ip. 查看配置是否正确,多播地址为 228.0.0.15,这用多播技术就因为多播发送数据包到单个 IP 地址,由多个 IP 主机去处理和接收,而不去管 IP 互联网络上所处的位置。对于一对多的数 据传输,多播比单播和关播要高效。与单播不同,多播仅发送数据的一个副本;与广播不同 , 多播流量仅由正在监听的主机进行接收和处理。 点击"Edit Cluster Properties" 调出"Cluster Properies" 配置 Cluster 的名称和相关 属性。"PostJoin Delay" 栅进程接收新节点的加入请求后等待节点确认加入的延迟秒数, 默认值为 3,典型的设置为 20 至 30,这个根据你的网路和集群的实际情况而定。"PostFail Delay" 栅进程发现节点失效后将节点踢出错误恢复域的等待延迟时间,默认值为 0 代表立 即踢出不延时,这个值要按你集群网络的实际情况而定。RHCS v5 中添加了对 Xen fence 的支持,所以多出了个 Run XVM Daemon 的选项框 新增四个 cluster node, 分别为 node1、node2 、fence 和 sharestrg (这里的名称必 须与 /etc/hosts 中声明的一致)。如果你是多网络接口,请设置 mulicast interface 为你公网 接口。 如图 4 新增 Fence Device 点击 "Add a Fence Device" 如果有 Fence 设备请依照厂牌选择 进行配置,键入名称、IP 位置、控制帐号、密码即可。大多数情况下你也许没有专门的 fence 设备,感谢 RedHat 给我们带来了 Global Network Block Device(gnbd)方式。 请选择"Global Network Block Device" ,然后填入 Fence 设备的名字(在 Cluster 中为和 其他设备区别而设,属于自定义范围),填入 Fence 服务器的 ip 或者你在/etc/hosts 声明过 的 fence 节点名。 注:在其它节点做相应的操作 建立 Failover Domains ,点击"Create Failover Domain" 添加新的错误恢复域,在"Failover Domain Configuration"窗体中,点选选单中央上方的"Available Cluster Node" 将 node1、node2 新增进来。右边的两个打勾选向分别是 "Restrict Failover Domains members" 以及 "Priotitzed List"。如果妳只有两台, 打勾第一项 “Restrict Failover Domains members” 就可以了,这项是只允许这两台做轮替。另外一 项"Priotitzed List"则是在你有两台以上的服务器,需要分别设定轮替的优先级时需要的。 当你打钩"Priotitzed List"后可以使用"Adjust Priority" 调整多节点的替换优先级 建立 Resource, 点击"Create a Resource" 依照妳所需要提供的服务新增资源。因为 Mysql HA 需要浮动 ip 保证提供服务透明性,所以我们先配置浮动 ip 资源。点选中央上 方的下拉菜单, 选择" IP Address" , 在地址栏里填入一个 ip 地址,此 ip 地址必须是可以 访问的且没有被其他服务器或网络接口使用的 ip ,它既不是 node1 的 ip 也不是 node2 的 ip 而是 Mysql HA 集群对外提供服务的 ip。 如图 8: 接下来我们配置 Mysql 的 mysqld 服务启动和监视资源。点选中央上方的下拉菜单, 选择" Script" , 定义这个"Script" 资源的名字,将脚本的全路径位置填入"File(with path)"输入框中。需要说明的是,可以作为脚本资源加入集群的必须俱备状态判断功能,并 且需要可以传给 rgmanager 服务正确的状态判断值。 注意:我们将在后面修改/etc/init.d/mysqld 这个脚本! 建立 Service , 单击"Create a Service" 填入服务名。如图 10 在"Server Management" 窗口中单击"Add Shared Resoure to this service" ,先加入 IP Address 和 Script 。再把右上角的 "Failover domain" 选入我们设置的错误恢复域的名 称。 如图 11 请将 Autostart this service 勾选。在 Recovery Policy 有三个选项分别是 Restart、Relocate、Disable。Restart 为当服务发生错误会尝试重新启动服务,除非超过 太多次重新启动服务均认为不稳定才会进行更换主机服务。Relcate 则是一旦服务发生问题 马上切换交付其他主机负责服务。Disable 就比较无聊了,这个需要手工切换了恢复了,你 确定要看着监控自己手工切换吗? 建议是选择 Relocate 。 最后总览一下,然点保存退出,如图 12 配置好后,将/etc/cluster/cluster.conf 拷贝到其它节点上去 Node1#for i in node1 node2 fence share ;do scp –r /etc/cluster/ $i:/etc ;done; 然后启动 Cluser 服务 Node1#for i in node1 node2 fence share ;do ssh $i service cman start & done; Node1#for I in node1 node2 fence share; do ssh $i service rgmanager start & done; 2.导出 GNBD 共享设备 在 share 节点上划出 2 个 2G 的分区用来导出 gnbd 共享设备 share# fdisk /dev/sda The number of cylinders for this disk is set to 1044. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): n Command action e extended p primary partition (1-4) e Partition number (1-4): 3 First cylinder (651-10440, default 651): Using default value 651 Last cylinder or +size or +sizeM or +sizeK (651-10440, default 10440): Using default value 1044 0 Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (651-10440, default 651): Using default value 651 Last cylinder or +size or +sizeM or +sizeK (651-10440, default 10440): +2048M Command (m for help): p Disk /dev/hda: 85890 MB, 85899345929 bytes 255 heads, 63 sectors/track, 10440 cylinders Units = cylinders of 160650 * 512 = 82252800 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 650 5116702+ 83 Linux /dev/sda3 651 10440 31648050 5 Extended /dev/sda5 651 900 2008093+ 83 Linux Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (901-10440, default 901): Using default value 901 Last cylinder or +size or +sizeM or +sizeK (901-10440, default 10440): +2048M Command (m for help): p Disk /dev/hda: 85890 MB, 85899345929 bytes 255 heads, 63 sectors/track, 10440 cylinders Units = cylinders of 160650 * 512 = 82252800 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 650 5116702+ 83 Linux /dev/sda3 651 10440 31648050 5 Extended /dev/sda5 651 900 2008093+ 83 Linux /dev/sda6 901 1250 2008145+ 83 Linux 启动 gnbd_serv 服务 share# gnbd_serv 使用 gnbd 导出共享设备,并查看 share# gnbd_export -d /dev/sda5 -e gnbd_share1 share# gnbd_export -d /dev/sda6 -e gnbd_share2 share# gnbd_export -l Server[1] : gnbd_share1 -------------------------- file : /dev/sda5 sectors : 2329547 readonly : no cached : no timeout : 60 Server[2] : gnbd_share2 -------------------------- file : /dev/sda6 sectors : 2324382 readonly : no cached : no timeout : 60 3.导入 gnbd 共享设备 node1 和 node2 需要共享设备来存储 mysql 的数据,所以我们需要在 node1 和 node2 上导入 gnbd 共享设备。 挂接 gnbd 内核模块,然后导入,查看。 node1#for i in node1 node2 ;do ssh $i modprobe gnbd ;done node1#for i in node1 node2 ;do ssh $i gnbd_import -i share;done node1#for i in node1 node2 ;do ssh $i gnbd -l ;done 如果没有这个模块的话,请 yum 装一下。 4.使用 gnbd 共享设备做 clvm 为了满足共享存储的动态扩充,需要在 GNBD 的基础上配置 CLVM 来满足 GFS 文件 系统的动态扩展。 CLVM 要求所有 RHCS 中的节点设备都运行 CLVMD。必须配置所有加入集群的节 点都运行 CLVMD。 首先打开 LVM2 对 CLVMD 的支持。 node1#for i in node1 node2 ;do ssh $i lvmconf - -enalbe-cluster;done; 然后在 node1 上创建 PV,GV,LV node1# pvcreate /dev/gnbd/gnbd_share1 Physical volume "/dev/gnbd/gnbd_share1" successfully created node1# pvcreate /dev/gnbd/gnbd_share2 Physical volume "/dev/gnbd/gnbd_share2" successfully created node1# vgcreate CVG0 /dev/gnbd/gnbd_share1 Volume group "CVG0" successfully created node1# lvcreate -L 512M CVG0 -n CLVM0 Logical volume "CLVM0" created 然后在 node2 上查看一下执行 lvdisplay,如果没有,重启一下 clvmd 服务,或者 lvscan 一下。 4.在 CLVM 上创建 gfs 集群文件系统 node1 # mkfs.gfs -p lock_dlm -t mysql_cluster:gfs1 -j 2 /dev/CVG0/CLVM0 -p lock_dlm 是使用的分布式琐。 -t 后面指定的是—集群名:文件系统表名 -j 实指可接入节点数,后面可以用 gfs_jadd 动态添加。 注意: 只需要在一个节点上创建文件系统,其他节点就可以挂接了。 5. 挂接 GFS 并测试 node1 # mount /dev/CVG0/CLVG0 /var/lib/mysql node2 # mount /dev/CVG0/CLVG0 /var/lib/mysql node1 # whire true ; do echo A >> /var/lib/mysql/test ; sleep 500 ; done node2 # whire true ; do echo B >> /var/lib/mysql/test ; sleep 500 ; done 前面说到的修改 mysqld 的启动脚本 在/etc/init.d/mysqld 中需要修改和添加 stop()函数。 将 status mysqld >/dev/null >&1 ; if [ $? -eq 3 ] ; then return 0 fi 加在 stop()函数的起始位置。 然后就是测试集群实体 mysqld 的切俄换,模拟 mysql 服务出错 down,看是否能够切换。
还剩15页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 20 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

chobits81

贡献于2011-02-09

下载需要 20 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf