一、HA部署
本次实验的程序选型为heartbeat v1 + hearesources。资源有IP和httpd,filesystem
配置HA集群的前提:
(1)各节点资源一致,硬件或软件环境一致
(2)各节点时间保持一致,便于心跳传递,使用ntp协议实现
#使用ntpdate命令同步时间,并建立周期性任务 #可使用任意节点服务器作为ntp时间服务器,如各节点可上公网,可直接指定公网ntp服务器 1、安装ntp [root@jymlinux ~]# yum install -y ntp [root@jymlinux ~]# vim /etc/ntp.conf #修改配置文件允许本网段客户端获取地址 将下面的语句 restrict default kod nomodify notrap nopeer noquery 修改为 restrict default nomodify restrict 192.168.0.0 mask 255.255.255.0 nomodify [root@jymlinux ~]# service ntpd start Starting ntpd: [ OK ] 查看同步过程 [root@jymlinux ~]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *202.118.1.81 202.118.1.47 2 u 30 64 1 92.249 8.602 0.714 202.112.31.197 .INIT. 16 u - 64 0 0.000 0.000 0.000 2、客户端创建周期任务,每3秒同步时间 [root@centfils ~]# crontab -e */3 * * * * /usr/sbin/ntpdate 192.168.0.16 &> /dev/null [root@centfils ~]# service crond start #手动同步成功,因ntp一般为自动,手动前kill掉所有ntp进程即可 [root@centfils ~]# ntpdate 192.168.0.16 14 Nov 20:26:09 ntpdate[3786]: adjust time server 192.168.0.16 offset -0.004440 sec 3、时间同步 [root@jymlinux ~]# date; ssh 192.168.0.15 'date' Mon Nov 14 20:36:17 CST 2016 root@192.168.0.15's password: Mon Nov 14 20:36:20 CST 2016
(3)节点间需要通过主机名互相通信,必须解析主机至IP地址
(a)建议名称解析功能使用hosts文件来实现
(b)通信中使用的名字与节点名字必须保持一致 “uname -n” 或hostname展示出的名字保持一致
[root@jymlinux ~]# vim /etc/hosts 192.168.0.15 centfils 192.168.0.16 jymlinux
(4)关于仲裁设备(共享硬盘或网关),如有偶数个节点,比如2个,应启用仲裁设备,奇数无需启用,大偶数也可以无需仲裁设备
(5)配置各节点之间的root用户能够给予密钥认证
1、生成密钥对 [root@centfils ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: a8:ad:2c:23:83:60:ff:36:73:9d:09:24:37:ae:da:c9 root@centfils The key's randomart p_w_picpath is: +--[ RSA 2048]----+ | | | | | | | . = | | * S | |.. o o | |+ . . o o o | |+ ooo*.. + | | o +*E+ | +-----------------+ 2、把公钥传输至远程服务器对应用户的家目录 [root@centfils ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.16 The authenticity of host '192.168.0.16 (192.168.0.16)' can't be established. RSA key fingerprint is e5:84:6c:f7:c0:60:3d:0b:39:b6:1e:12:0d:48:8b:07. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.16' (RSA) to the list of known hosts. root@192.168.0.16's password: Now try logging into the machine, with "ssh 'root@192.168.0.16'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. 3、测试 [root@jymlinux ~]# date; ssh root@192.168.0.15 'date' Mon Nov 14 21:02:30 CST 2016 Mon Nov 14 21:02:30 CST 2016
(6)定义为集群的资源不能开机自启,而是由crm管理
配置列表:
node1:192.168.0.15
node2:192.168.0.16
fip:192.168.0.17
二、安装heartbeat
因为heartbeat,红帽和centos官方不提供rpm,因此先下载并安装epel包
[root@centfils ~]# wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm [root@centfils ~]# rpm -ivh epel-release-6-8.noarch.rpm [root@centfils heartbeat2]# yum install heartbeat-2.1.4-12.el6.i686.rpm heartbeat-pils-2.1.4-12.el6.i686.rpm heartbeat-stonith-2.1.4-12.el6.i686.rpm #安装依赖包,安装在主程序包前 [root@jymlinux ~]# yum install perl-TimeDate net-snmp-libs libnet PyXML [root@jymlinux ~]# yum install libpils*
heartbeat的配置文件在/etc/ha.d目录下,其主要配置文件为ha.cf,定义各节点上的heartbeat HA集群的基本属性。authkeys配置文件,为集群内节点间彼此传递消息时使用的加密算法及密钥。
haresources,为heartbeat v1提供的资源管理器配置接口,v1版专用。
#将配置文件模板复制到/etc/ha.d目录下 [root@centfils ha.d]# cp /usr/share/doc/heartbeat-3.0.4/{ha.cf,haresources,authkeys} /etc/ha.d/
#节点间认证配置文件权限必须为600 [root@centfils ha.d]# chmod 600 authkeys
三、配置heartbeat
1、配置authkeys文件,指明启用何种算法,使用何种密钥,本文件须更改权限为400 auth 2 #1 crc 2 sha1 dPCDBSAie31fz6d5MhM0/A #3 md5 Hello! 生成随机字符串作为密钥 [root@centfils ha.d]# openssl rand -base64 16 dPCDBSAie31fz6d5MhM0/A== 2、配置ha.cf文件,定义高可用集群的基本工作方式 定义日志文件位置(二选一) logfacility为将日志交由syslog管理 logfile /var/log/ha-log #logfacility local0 多长时间发送一次心跳信息,默认为2秒 #keepalive 2 多长时间宣布某节点死亡,默认30秒 #deadtime 30 多长时间警告对方心跳信息延迟了,默认10秒 #warntime 10 第一次死去时间,避免因网络问题导致宣布死亡 #initdead 120 使用udp694端口传递心跳,并选择哪种方式传递心跳 #udpport 694 串行线缆传递心跳 #serial /dev/ttyS0 # Linux #serial /dev/cuaa0 # FreeBSD #serial /dev/cuad0 # FreeBSD 6.x #serial /dev/cua/a # Solaris 串行线缆的工作频率 #baud 19200 广播传递心跳 #bcast eth0 # Linux #bcast eth1 eth2 # Linux #bcast le0 # Solaris #bcast le1 le2 # Solaris 多播传递心跳,网卡必须支持多播,ifconfig | grep MULTICAST mcast eth0 225.0.0.1 694 1 0 #端口694,TTL为1,不允许回传为0 #启用网卡支持多播 [root@jymlinux ~]# ip link set eth0 multicast on 单薄传递心跳 #ucast eth0 192.168.1.2 自动故障转回 auto_failback on 指明节点 #node ken3 #node kathy node centfils node jymlinux 指明网关为ping node设备(仲裁设备) #ping 10.10.10.254 ping 192.168.0.1 指明一个组为ping node设备(仲裁设备) #ping_group group1 10.10.10.254 10.10.10.253 指明节点间传送的压缩算法 compression bz2 指明节点间传送数据压缩的最小数据为2KB compression_threshold 2
3、配置haresources文件,定义集群资源 直接加入资源 centfils 192.168.0.17/24/eth0/192.168.0.255 httpd
4、将httpd设置为开机不启动 [root@centfils ~]# chkconfig httpd off
5、启动服务 [root@centfils ~]# service heartbeat start
四、测试
启动服务后,浏览器输入fip192.168.0.17访问,down掉192.168.0.15,后出现
测试成功
五、HA web services中加入共享文件资源
filesystem为192.168.0.20,一般情况下HA-web services使用的filesystem为raid或分布式文件系统,实验以nfs演示。
1、在filesystem上建立共享文件系统 [root@linus ~]# clear [root@linus ~]# mkdir /web/htdocs -pv mkdir: created directory `/web' mkdir: created directory `/web/htdocs' [root@linus ~]# vim /web/htdocs/index.html 2、将此目录通过nfs共享 [root@linus ~]# yum install portmap* #nfs-utils-* :包括基本的NFS命令与监控程序 [root@linus ~]# yum install nfs* #portmap-* :支持安全NFS RPC服务的连接 [root@linus ~]# vim /etc/exports /web/htdocs 192.168.0.0/24(rw,no_root_squash) #NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。 #在此处出现错误,nfs无法启动,提示为rpc无法连接,所以重启rpc后启动nfs [root@linus ~]# /etc/init.d/rpcbind restart Stopping rpcbind: [FAILED] Starting rpcbind: [ OK ] [root@linus ~]# service nfslock start Starting NFS statd: [ OK ] [root@linus ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] #将nfs加入开机自启 [root@linus ~]# chkconfig nfs on #将nfs挂载进行测试, [root@centfils ~]# mount -t nfs 192.168.0.20:/web/htdocs /var/www/html [root@centfils ~]# umount /var/www/html
[root@jymlinux ha.d]# vim haresources centfils 192.168.0.17/24/eth0/192.168.0.255 Filesystem::192.168.0.20:/web/htdocs::/var/www/html::nfs httpd [root@jymlinux ha.d]# scp haresources centfils:/etc/ha.d/ haresources 100% 6018 5.9KB/s 00:00 [root@jymlinux ha.d]# service heartbeat start; ssh centfils 'service heartbeat start'
测试
本文随马哥视屏作出,为笔记形式,供日后翻看,见谅!见谅!
转载于:https://blog.51cto.com/jiayimeng/1872759