Loading... <p>一、实验环境</p> <p> 1)实验图</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160618-46.png" title="1435475303117687.png" alt="1.png" /></p> <p> 2)同步时间;确保可以使用主机名通信;确保可以使用ssh秘钥方式进行彼此登录;由于是两台设备,需要仲裁;</p> <p> 确保可以使用主机名通信</p> <pre class="brush:bash;toolbar:false">web1修改hosts文件如下: 172.16.2.12 SQL1.linux.com SQL1 172.16.2.14 SQL2.linux.com SQL2 web2修改hosts文件如下: 172.16.2.12 SQL1.Linux.com SQL1 172.16.2.14 SQL2.linux.com SQL2</pre> <p> 确保主机可以使用ssh秘钥彼此登录</p> <pre class="brush:bash;toolbar:false">[root@SQL1~]# ssh-keygen -P '' \\生成秘钥 [root@SQL1~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.2.14 \\将公钥复制给web2 [root@SQL2 ~]# ssh-keygen -P '' \\生成秘钥 [root@SQL2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.2.12 \\将公钥复制给web1</pre> <p>确保主机之间时间同步</p> <pre class="brush:bash;toolbar:false">[root@SQL1 ~]# crontab -e */5 * * * * /usr/sbin/ntpdate 172.16.2.13 [root@SQL2 ~]# crontab -e */5 * * * * /usr/sbin/ntpdate 172.16.2.13</pre> <p> 测试</p> <pre class="brush:bash;toolbar:false">[root@SQL1 ~]# date; ssh SQL2 'date' Sat Jun 27 15:10:35 CST 2015 Sat Jun 27 15:10:35 CST 2015 [root@SQL2 ~]# date;ssh SQL1 'date' Sat Jun 27 15:11:13 CST 2015 Sat Jun 27 15:11:13 CST 2015</pre> <p></p> <p>二、安装配置heartbeat v2</p> <p> 1)安装依赖包;前提准备好epel源</p> <pre class="brush:bash;toolbar:false">阿里云eple源 wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo</pre> <pre class="brush:bash;toolbar:false">[root@SQL1 heartbeat]# yum -y install net-snmp-libs PyXML gettext-devel libtool-ltdl pygtk2-libglade libnet [root@SQL1 heartbeat]# rpm -ivh heartbeat-pils-2.1.4-12.el6.x86_64.rpm [root@SQL1 heartbeat]# rpm -ivh heartbeat-stonith-2.1.4-12.el6.x86_64.rpm [root@SQL1 heartbeat]# rpm -ivh heartbeat-gui-2.1.4-12.el6.x86_64.rpm [root@SQL1 heartbeat]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm [root@SQL2 heartbeat]# yum -y install net-snmp-libs PyXML gettext-devel libtool-ltdl pygtk2-libglade libnet [root@SQL2 heartbeat]# rpm -vih heartbeat-pils-2.1.4-12.el6.x86_64.rpm [root@SQL2 heartbeat]# rpm -ivh heartbeat-stonith-2.1.4-12.el6.x86_64.rpm [root@SQL2 heartbeat]# rpm -ivh heartbeat-gui-2.1.4-12.el6.x86_64.rpm [root@SQL2 heartbeat]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm</pre> <p> 2)对heartbeat进行配置</p> <pre class="brush:bash;toolbar:false">[root@SQL1 ha.d]# rpm -ql heartbeat \\查看heartbeat生成文件 [root@SQL1 ~]# cd /usr/share/doc/heartbeat-2.1.4/ [root@SQL1 heartbeat-2.1.4]# cp authkeys ha.cf haresources /etc/ha.d/ authkeys :是主机之间信息传递使用的秘钥 ha.cf:是heartbeat的主配置文件 haresource: 资源配置文件 [root@SQL1 heartbeat-2.1.4]# cd /etc/ha.d/ [root@SQL1 ha.d]# openssl rand -hex 6 e5b50e897cb4 \\生成秘钥 [root@SQL1 ha.d]# vim authkeys \\配置秘钥 auth 1 1 md5 e5b50e897cb4 [root@SQL1 ha.d]# chmod 400 authkeys \\修改秘钥文件的权限;建议使用400;如果不修改权限heartbeat无法启动 [root@SQL1 ha.d]# vim ha.cf logfile /var/log/ha-log \\ 定义日志文件 mcast eth0 227.10.10.1 694 1 0 \\定义组播地址以及传递的相关属性(mcast组播;bcast广播;ucast单播) auto_failback on \\抢占模式;主节点恢复故障后从备用节点那里抢回主节点功能 node SQL1.linux.com \\添加ha节点;此名称必须是“uname -n”看到的主机名 node SQL2.linux.com \\添加ha节点;此名称必须是“uname -n”看到的主机名 ping 172.16.2.1 \\ 定义仲裁设备 compression bz2 \\启用压缩功能 compression_threshold 2 \\大于多少k之后开始压缩 crm on \\启用heartbeat v2版</pre> <p> 3)在SQL1节点将配置复制给SQL2一份</p> <pre class="brush:bash;toolbar:false">[root@SQL1 ha.d]# scp authkeys ha.cf haresources.bak SQL2:/etc/ha.d/</pre> <p>4)启动服务</p> <pre class="brush:bash;toolbar:false">[root@SQL1 ~]# service heartbeat start; ssh SQL2 "service heartbeat start" logd is already running Starting High-Availability services: Done. logd is already running Starting High-Availability services: Done.</pre> <p> 5)查看监听端口:监听在组播地址227.10.10.1的UDP/694端口</p> <pre class="brush:bash;toolbar:false">[root@SQL1 ~]# ss -upln State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 227.10.10.1:694 *:* users:(("heartbeat",23422,7),("heartbeat",23423,7)) UNCONN 0 0 *:60749 *:* users:(("heartbeat",23422,6),("heartbeat",23423,6))</pre> <p> 6)安装mariadb数据库</p> <p> 配置mysql共享存储</p> <pre class="brush:bash;toolbar:false">[root@time-or-nfs ~]# groupadd -g 300 mysql \\由于nfs权限与mysql初始化要求,需要创建mysql用户组 [root@time-or-nfs ~]# useradd -u 300 -g 300 mysql [root@time-or-nfs ~]# mkdir -pv /mydata/data \\创建共享目录 [root@time-or-nfs ~]# vim /etc/exports \\编辑nfs配置文件 /mydata 172.16.2.0/24(rw,no_root_squash) \\编辑共享权限 [root@time-or-nfs ~]# service nfs start \\启动nfs服务</pre> <pre class="brush:bash;toolbar:false">[root@SQL1 ~]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local \\解压mariadb [root@SQL1 ~]# cd /usr/local/ \\\切换目录 [root@SQL1 local]# ln -sv mariadb-5.5.36-linux-x86_64/ mysql \\创建软连接 [root@SQL1 local]# groupadd -g 300 mysql \\ 创建mysql组,GID要与nfs服务器上的mysql的GID相同 [root@SQL1 local]# useradd -u 300 -g 300 mysql \\创建mysql组,UDI与nfs服务器上的UID相同 [root@SQL1 local]# mkdir /mydata \\创建挂载目录 [root@SQL1 local]# mount -t nfs 172.16.2.13:/mydata /mydata \\挂载共享文件 [root@SQL1 local]# cd mysql [root@SQL1 mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ \\初时化数据库 [root@SQL1 mysql]# mkdir /etc/mysql/ \\创建mysql配置文件存放目录 [root@SQL1 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf \\复制mysql配置文件到/etc/mysql/ [root@SQL1 mysql]# vim /etc/mysql/my.cnf \\编辑mysql的配置文件 datadir=/mydata/data \\设置数据存放目录 innodb_file_per_table = on \\开启每表结构 skip_name_resolve = on \\禁止mysql主机名解析 [root@SQL1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld \\复制启动脚本到/etc/init.d目录下 [root@SQL1 mysql]# chkconfig --add /etc/init.d/mysqld \\添加mysql启动脚本为lsb风格 [root@SQL1 mysql]# service mysqld start \\启动mysql Starting MySQL... [ OK ] [root@SQL1 mysql]# mysql \\进入mysql mysql> CREATE DATABASE heartbeat; \\创建测试数据库 mysql> use heartbeat; \\设置默认库 mysql> CREATE TABLE ha_mysql(Number INT); \\创建测试表 mysql> GRANT ALL ON heartbeat.* TO "heartbeat"@"172.16.2.%" IDENTIFIED BY "heartbeat"; \\用户授权 mysql> FLUSH PRIVILEGES; \\刷新权限 mysql> SHOW DATABASES; \\查看数据库 +--------------------+ | Database | +--------------------+ | information_schema | | heartbeat | | mysql | | performance_schema | | test | +--------------------+ mysql> USE heartbeat ; \\切换数据库 mysql> show tables; \\查看表 +---------------------+ | Tables_in_heartbeat| +---------------------+ | ha_mysql | +---------------------+ [root@SQL1 mysql]# service mysqld stop \\停止数据库 Shutting down MySQL. [ OK ] [root@SQL1 mysql]# umount /mydata/ \\卸载共享目录</pre> <pre class="brush:bash;toolbar:false">[root@SQL2 ~]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local [root@SQL2 ~]# cd /usr/local [root@SQL2 local]# ln -sv mariadb-5.5.36-linux-x86_64/ mysql [root@SQL2 local]# cd mysql/ [root@SQL2 mysql]# groupadd -g 300 mysql [root@SQL2 mysql]# useradd -u 300 -g 300 mysql [root@SQL2 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf [root@SQL2 mysql]# vim /etc/mysql/my.cnf datadir = /mydata/data innodb_file_per_table = on skip_name_resolve = on [root@SQL2 mysql]# cp support-files/mysql.server /etc/init.d/mysqld [root@SQL2 mysql]# chkconfig --add /etc/init.d/mysqld [root@SQL2 mysql]# mount -t nfs 172.16.2.13:/mydata/ /mydata/ [root@SQL2 mysql]# service mysqld start Starting MySQL.. [ OK ] [root@SQL2 mysql]# mysql -h172.16.2.14 -uheartbeat -p mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema| | heartbeat | | test | +--------------------+ mysql> USE heartbeat; mysql> SHOW TABLES ; +---------------------+ | Tables_in_heartbeat| +---------------------+ | ha_mysql | +---------------------+ [root@SQL2 mysql]# service mysqld stop Shutting down MySQL. [ OK ] [root@SQL2 mysql]# umount /mydata/</pre> <p>7)设置hacluster用户的密码(设置hacluster用户密码只需要在一个节点设置即可)</p> <pre class="brush:bash;toolbar:false">[root@SQL1 ~]# echo "test" | passwd --stdin hacluster</pre> <p>8)在图形终端启动heartbeat的图形接口:hb_gui (或者使用xshell的企业版)</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160618-18.png" title="1435392261660483.png" alt="12.png" /> </p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160618-3.png" title="1435472263835577.png" alt="13.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160618-80.png" title="1435472281125664.png" alt="14.png" /></p> <p> 9)添加vip</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160618-19.png" title="1435472320212459.png" alt="15.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-13.png" title="1435472341102231.png" alt="16.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-52.png" title="1435472350178810.png" alt="17.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-44.png" title="1435472357128567.png" alt="18.png" /></p> <p> 10)添加nfs文件系统</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-36.png" title="1435472474120713.png" alt="19.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-93.png" title="1435472479134895.png" alt="20.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-48.png" title="1435472527103650.png" alt="38.png" /></p> <p> 11)添加mysql服务</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-48-1.png" title="1435472606119318.png" alt="19.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-24.png" title="1435472613119915.png" alt="20.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-94.png" title="1435472619384512.png" alt="21.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-96.png" title="1435472650603513.png" alt="11111111111.png" /></p> <p> 12)添加vip与nfs的排序约束</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-84.png" title="1435472786560349.png" alt="23.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-27.png" title="1435472830127788.png" alt="41.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160619-87.png" title="1435472879343900.png" alt="42.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160620-11.png" title="1435472950820829.png" alt="22222222222222.png" /></p> <p> 13)添加mysql与nfs的排序约束</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160620-65.png" title="1435473006104151.png" alt="23.png" /></p> <p> <img src="/upload/4g0l2uexklu.png" title="1435473013477790.png" alt="24.png" /></p> <p> <img src="/upload/ylcv3yz5fdr.png" title="1435473078771095.png" alt="49.png" /></p> <p> <img src="/upload/4ynfedhgwni.png" title="1435473096975884.png" alt="50.png" /></p> <p> 14)添加vip与nfs的顺序约束</p> <p> <img src="/upload/fzqokkhunsb.png" title="1435473207721350.png" alt="333333333333.png" /></p> <p> <img src="/upload/une1elvf1yo.png" title="1435473254601908.png" alt="28.png" /></p> <p> <img src="/upload/h2ozha3gl2y.png" title="1435473242111154.png" alt="51.png" /></p> <p> <img src="/upload/qfce03z22ex.png" title="1435473293308613.png" alt="444444444444.png" /></p> <p> 15)添加mysql服务与nfs的顺序约束</p> <p> <img src="/upload/1hi0pcdhrqx.png" title="1435473428135217.png" alt="53.png" /></p> <p> <img src="/upload/pxsp0gacnph.png" title="1435473448140258.png" alt="54.png" /></p> <p> <img src="/upload/2ssqpsfwn15.png" title="1435473417522738.png" alt="55.png" /></p> <p> <img src="/upload/q0sqnuyzpnt.png" title="1435473462103966.png" alt="56.png" /></p> <p></p> <p> 16)添加本地约束</p> <p> <img src="/upload/cis1o1pugik.png" title="1435473595370217.png" alt="31.png" /></p> <p> <img src="/upload/qp0i4zmkrds.png" title="1435473601975928.png" alt="32.png" /></p> <p> <img src="/upload/okpy5nwvgz4.png" title="1435473617320757.png" alt="33.png" /> </p> <p> <img src="/upload/s3ay3hdvqxt.png" title="1435473696465177.png" alt="5555555555.png" /></p> <p> 17)启动资源</p> <p> <img src="/upload/ybujxj1b2wi.png" title="1435473768821789.png" alt="35.png" /></p> <p> <img src="/upload/mmledjcdp2d.png" title="1435474470498917.png" alt="1212121.png" /></p> <p> 18)测试访问mysql</p> <pre class="brush:bash;toolbar:false">[root@SQL1 ~]# mysql -h 172.16.2.100 -uheartbeat -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema| | heartbeat | | test | +--------------------+ mysql> USE heartbeat; mysql> SHOW TABLES; +---------------------+ | Tables_in_heartbeat| +---------------------+ | ha_mysql | +---------------------+</pre> <p> 19)切换工作主机;选择sql2,右击选择Standby;在弹出的对话框中选择yes</p> <p> <img src="/upload/wwojza4zick.png" title="1435474667160011.png" alt="212.png" /></p> <p> <img src="/upload/2rkftzth5e3.png" title="1435474753994816.png" alt="77777777777777777.png" /></p> <p> 20)测试访问:</p> <pre class="brush:bash;toolbar:false">[root@SQL2 ~]# mysql -h172.16.2.100 -uheartbeat -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema| | heartbeat | | test | +--------------------+ mysql> USE heartbeat; mysql> SHOW TABLES; +---------------------+ | Tables_in_heartbeat| +---------------------+ | ha_mysql | +---------------------+</pre> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信