一、实验准备:
1)实验环境:
2)同步时间;确保可以使用主机名通信;确保可以使用ssh秘钥方式进行彼此登录;由于是两台设备,需要仲裁;
确保可以使用主机名通信
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
确保主机可以使用ssh秘钥彼此登录
[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
确保主机之间时间同步
[root@web1 ~]# crontab -e */5 * * * * /usr/sbin/ntpdate 172.16.2.13 [root@web2 ~]# crontab -e */5 * * * * /usr/sbin/ntpdate 172.16.2.13
测试
[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
二、安装配置heartbeat v1
1)安装依赖包;前提准备好epel源
阿里云eple源 wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo
[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
2)对heartbeat进行配置
[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一份
3)安装httpd
[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
4)启动heartbeat
[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.
5)查看启动结果:
[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))
6)web1是主节点,web2是备节点;访问测试
将web1切换为备节点,web2为主节点
[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].
访问测试
扩展:使用NFS为两台高可用主机提供NFS文件系统
1)在时间服务器开启NFS功能
[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主页
2)挂载测试
[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 \\卸载
3)修改资源配置文件;
[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一份
4)重启启动heartbeat
[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.
5)查看启动状态
[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)
6)访问web页面测试
原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/5715