Loading... <p>一、实验准备:</p> <p> 1)实验环境: </p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703163729-94.png" title="1435373195137131.png" alt="1.png" /></p> <p> 2)同步时间;确保可以使用主机名通信;确保可以使用ssh秘钥方式进行彼此登录;由于是两台设备,需要仲裁;</p> <p> 确保可以使用主机名通信</p> <pre class="brush:bash;toolbar:false">web1修改hosts文件如下: 172.16.2.12 web1.linux.com web1 172.16.2.14 web2.linux.com web2 web2修改hosts文件如下: 172.16.2.12 web1.linux.com web1 172.16.2.14 web2.linux.com web2</pre> <p> 确保主机可以使用ssh秘钥彼此登录</p> <pre class="brush:bash;toolbar:false">[root@web1~]# ssh-keygen -P '' \\生成秘钥 [root@web1~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.2.14 \\将公钥复制给web2 [root@web2 ~]# ssh-keygen -P '' \\生成秘钥 [root@web2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.2.12 \\将公钥复制给web1</pre> <p>确保主机之间时间同步</p> <pre class="brush:bash;toolbar:false">[root@web1 ~]# crontab -e */5 * * * * /usr/sbin/ntpdate 172.16.2.13 [root@web2 ~]# crontab -e */5 * * * * /usr/sbin/ntpdate 172.16.2.13</pre> <p> 测试</p> <pre class="brush:bash;toolbar:false">[root@web1 ~]# date; ssh web2 'date' Sat Jun 27 11:32:56 CST 2015 Sat Jun 27 11:32:56 CST 2015 [root@web2 ~]# date; ssh web1 'date' Sat Jun 27 11:33:42 CST 2015 Sat Jun 27 11:33:42 CST 2015</pre> <p></p> <p>二、安装配置heartbeat v1</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@web1 heartbeat]# yum -y install net-snmp-libs PyXML gettext-devel libtool-ltdl pygtk2-devel libnet [root@web1 heartbeat]# rpm -ivh heartbeat-pils-2.1.4-12.el6.x86_64.rpm [root@web1 heartbeat]# rpm -ivh heartbeat-stonith-2.1.4-12.el6.x86_64.rpm [root@web1 heartbeat]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm [root@web2 heartbeat]# yum -y install net-snmp-libs PyXML gettext-devel libtool-ltdl pygtk2-devel libnet [root@web2 heartbeat]# rpm -vih heartbeat-pils-2.1.4-12.el6.x86_64.rpm [root@web2 heartbeat]# rpm -ivh heartbeat-stonith-2.1.4-12.el6.x86_64.rpm [root@web2 heartbeat]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm</pre> <p> 2)对heartbeat进行配置</p> <pre class="brush:bash;toolbar:false">[root@web1 ha.d]# rpm -ql heartbeat \\查看heartbeat生成文件 [root@web1 ~]# cd /usr/share/doc/heartbeat-2.1.4/ [root@web1 heartbeat-2.1.4]# cp authkeys ha.cf haresources /etc/ha.d/ authkeys :是主机之间信息传递使用的秘钥 ha.cf:是heartbeat的主配置文件 haresource: 资源配置文件 [root@web1 heartbeat-2.1.4]# cd /etc/ha.d/ [root@web1 ha.d]# openssl rand -hex 6 e5b50e897cb4 \\生成秘钥 [root@web1 ha.d]# vim authkeys \\配置秘钥 auth 1 1 md5 e5b50e897cb4 [root@web1 ha.d]# chmod 400 authkeys \\修改秘钥文件的权限;建议使用400;如果不修改权限heartbeat无法启动 [root@web1 ha.d]# vim ha.cf logfile /var/log/ha-log \\ 定义日志文件 mcast eth0 226.10.10.1 694 1 0 \\定义组播地址以及传递的相关属性(mcast组播;bcast广播;ucast单播) auto_failback on \\抢占模式;主节点恢复故障后从备用节点那里抢回主节点功能 node web1.linux.com \\添加ha节点;此名称必须是“uname -n”看到的主机名 node web2.linux.com \\添加ha节点;此名称必须是“uname -n”看到的主机名 ping 172.16.2.1 \\ 定义仲裁设备 compression bz2 \\启用压缩功能 compression_threshold 2 \\大于多少k之后开始压缩 [root@web1 ha.d]# vim haresources web1.linux.com 172.16.2.100/24/eth0/172.16.2.100 httpd \\定义资源(定义VIP,httpd) [root@web1 ha.d]# scp -p ha.cf haresources authkeys web2:/etc/ha.d \\将配置好的文件复制给web2一份</pre> <p> 3)安装httpd</p> <pre class="brush:bash;toolbar:false">[root@web1 ~]# yum -y install httpd ; ssh web2 'yum -y install httpd' \\安装httpd [root@web1 ~]# echo "<h1>web1</h1>" > /var/www/html/index.html \\添加默认文档 [root@web2 ~]# echo "<h1>web2</h1>" > /var/www/html/index.html \\添加默认文档 [root@web1 ~]# service httpd start \\启动http Starting httpd: [ OK ] [root@web1 ~]# curl \\测试httpd <h1>web1</h1> [root@web1 ~]# service httpd stop \\停止httpd Stopping httpd: [ OK ] [root@web1 ~]# chkconfig httpd off \\禁止开机启动httpd [root@web2 ~]# service httpd start Starting httpd: [ OK ] [root@web2 ~]# curl http://172.16.2.14 <h1>web2</h1> [root@web2 ~]# service httpd stop Stopping httpd: [ OK ] [root@web2 ~]# chkconfig httpd off</pre> <p> 4)启动heartbeat</p> <pre class="brush:bash;toolbar:false">[root@web1 ~]# service heartbeat start; ssh web2 'service heartbeat start' Starting High-Availability services: 2015/06/27_12:40:25 INFO: Resource is stopped Done. Starting High-Availability services: 2015/06/27_12:40:25 INFO: Resource is stopped Done.</pre> <p> 5)查看启动结果:</p> <pre class="brush:bash;toolbar:false">[root@web1 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:0E:C4:29 inet addr:172.16.2.12 Bcast:172.16.2.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe0e:c429/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:55852 errors:0 dropped:0 overruns:0 frame:0 TX packets:32064 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:64541607 (61.5 MiB) TX bytes:9222342 (8.7 MiB) eth0:0 Link encap:Ethernet HWaddr 00:0C:29:0E:C4:29 inet addr:172.16.2.100 Bcast:172.16.2.100 Mask:255.255.255.0 \\VIP地址 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 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:453 errors:0 dropped:0 overruns:0 frame:0 TX packets:453 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:44156 (43.1 KiB) TX bytes:44156 (43.1 KiB) [root@web1 ~]# service httpd status httpd (pid 11984) is running... \\httd服务已启动 [root@web1 ~]# ss -upln \\查看heartbet v1版监听端口,为udp的694 State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:647 *:* users:(("portreserve",934,6)) UNCONN 0 0 226.10.10.1:694 *:* users:(("heartbeat",12952,7),("heartbeat",12953,7)) UNCONN 0 0 *:847 *:* users:(("portreserve",934,8)) UNCONN 0 0 *:42975 *:* users:(("heartbeat",12952,6),("heartbeat",12953,6))</pre> <p> 6)web1是主节点,web2是备节点;访问测试</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703163729-76.png" title="1435379847122725.png" alt="2.png" /></p> <p> 将web1切换为备节点,web2为主节点</p> <pre class="brush:bash;toolbar:false">[root@web1 ~]# cd /usr/lib64/heartbeat/ ha_propagate \\此脚本是将heartbeat的配置文件复制给其他节点 hb_standby \\此脚本是将当前节点切换为备节点 hb_takeover \\此脚本是将当前节点切换为主节点 [root@web1 heartbeat]# ./hb_standby \\将web1切换为备节点 2015/06/27_12:47:03 Going standby [all].</pre> <p> 访问测试</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703163729-97-1.png" title="1435380113330339.png" alt="3.png" /></p> <p></p> <p>扩展:使用NFS为两台高可用主机提供NFS文件系统</p> <p> 1)在时间服务器开启NFS功能</p> <pre class="brush:bash;toolbar:false">[root@time-or-nfs ~]# vim /etc/exports /web/html 172.16.2.0/24(rw,no_root_squash) \\定义共享文件访问权限以及不压缩root用户权限 [root@time-or-nfs ~]# mkdir -pv /web/html \\创建此目录 [root@time-or-nfs ~]# service nfs start \\ 启动nfs [root@time-or-nfs ~]# exportfs -arv \\查看nfs exporting 172.16.2.0/24:/web/html [root@time-or-nfs ~]# echo "<h1>NFS Page</h1>" > /web/html/index.html \\定义web主页</pre> <p> 2)挂载测试</p> <pre class="brush:bash;toolbar:false">[root@web1 ~]# mount -t nfs 172.16.2.13:/web/html /mnt [root@web1 ~]# mount 172.16.2.13:/web/html on /mnt type nfs (rw,vers=4,addr=172.16.2.13,clientaddr=172.16.2.12) [root@web1 ~]# cd /mnt/ [root@web1 mnt]# ls index.html [root@web2 ~]# umount /mnt \\卸载 [root@web2 ~]# mount -t nfs 172.16.2.13:/web/html /mnt [root@web2 ~]# mount 172.16.2.13:/web/html on /mnt type nfs (rw,vers=4,addr=172.16.2.13,clientaddr=172.16.2.14) [root@web2 ~]# cd /mnt/ [root@web2 mnt]# ls index.html [root@web2 ~]# umount /mnt \\卸载</pre> <p> 3)修改资源配置文件;</p> <pre class="brush:bash;toolbar:false">[root@web1 ~]# vim /etc/ha.d/haresources \\编辑heartbeat的资源配置文件 web1.linux.com 172.16.2.100/24/eth0/172.16.2.100 Filesystem::172.16.2.13:/web/html/::/var/www/html/::nfs httpd [root@web1 ~]# scp /etc/ha.d/haresources web2:/etc/ha.d/ \\复制新的资源配置文件给web2一份</pre> <p> 4)重启启动heartbeat</p> <pre class="brush:bash;toolbar:false">[root@web1 ~]# service heartbeat restart;ssh web2 'service heartbeat restart' Stopping High-Availability services: Done. Waiting to allow resource takeover to complete: Done. Starting High-Availability services: 2015/06/27_13:08:30 INFO: Resource is stopped Done. Stopping High-Availability services: Done. Waiting to allow resource takeover to complete: Done. Starting High-Availability services: 2015/06/27_13:08:50 INFO: Resource is stopped Done.</pre> <p> 5)查看启动状态</p> <pre class="brush:bash;toolbar:false">[root@web1 heartbeat]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:0E:C4:29 inet addr:172.16.2.12 Bcast:172.16.2.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe0e:c429/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:176947 errors:0 dropped:0 overruns:0 frame:0 TX packets:117322 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:212876014 (203.0 MiB) TX bytes:18332012 (17.4 MiB) eth0:0 Link encap:Ethernet HWaddr 00:0C:29:0E:C4:29 inet addr:172.16.2.100 Bcast:172.16.2.100 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 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:1246 errors:0 dropped:0 overruns:0 frame:0 TX packets:1246 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:118420 (115.6 KiB) TX bytes:118420 (115.6 KiB) [root@web1 ~]# mount 172.16.2.13:/web/html/ on /var/www/html type nfs (rw,vers=4,addr=172.16.2.13,clientaddr=172.16.2.12)</pre> <p> 6)访问web页面测试</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703163729-92.png" title="1435387306236255.png" alt="4.png" /></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信