Linux群集搭建(LVS+Heartbeat)

【实验的基本环境】
 服务器系统:RedHat-5.6
 LVS主节点(lvs-master):192.168.2.250(eth0) 心跳直连接口:192.168.1.250(eth1)
 LVS备节点(lvs-backup):192.168.2.251(eth0) 心跳直连接口:192.168.1.251(eth1)
 Web Server-1:192.168.2.252
 Web Server-2:192.168.2.253
 VIP(虚拟IP):192.168.2.254

注:4台服务器已经配置好LNMP(Linux+Nginx+PHP(FastCGI模式)+MySQL)网站运行环境,当然使用Apache也可以。这里主备节点也当作真实服务器使用,所以也配置了网站环境。
 

在LVS主节点和备节点的/etc/hosts中加入以下内容:
 #vim /etc/hosts
 192.168.2.250 lvs-master
 192.168.2.251 lvs-backup
 
修改主机名:
 # vim /etc/sysconfig/network
 NETWORKING=yes
 NETWORKING_IPV6=no
 HOSTNAME=lvs-master
 GATEWAY=192.168.2.1
 
# vim /etc/hosts
 # Do not remove the following line, or various programs
 # that require network functionality will fail.
 127.0.0.1 lvs-master localhost.localdomain localhost
 ::1 localhost6.localdomain6 localhost6
 
这2个文件都要修改,修改完后重启生效,备份机修改方法一样,不在重述。
 
【下载软件】
 [libnet]
 [ipvsadm]
 wget
 [Heartbeat]
 wget
 [Cluster Glue]
 wget
 [Resource Agents]
 wget https://download.github.com/ClusterLabs-resource-agents-agents-1.0.4-0-gc06b6f3.tar.gz
 
一、配置LVS主节点(lvs-master)
 1. 安装libnet
 # tar zxvf libnet-1.1.2.2.tar.gz
 # cd libnet
 # ./configure
 # make && make install
 # cd ..
 
2. 安装ipvsadm
 # yum install kernel-devel //安装对应内核的kernel-devel
 # tar zxvf ipvsadm-1.24.tar.gz
 # cd ipvsadm-1.24
 # ln -s /usr/src/kernels/`ls /usr/src/kernels/` /usr/src/linux //将当前使用内核连接到/usr/src/linux
 # make && make install
 # cd..
 
3. 安装Heartbeat
 3.1 确认系统已经安装以下软件(系统光盘中有)
 libxslt*、libgcrypt*、autoconf*、automake*、pkgconfig*、 libgpg-*l、libtool*、sgml-common*、opensp*、openjade*、xml-common*、 docbook-dtds*
如果在编译安装过程中出错,很有可能是因为缺少了相关的软件包
 
3.2 安装glue
 


yum –y install bzip*
 


yum install e2fsprogs-devel
 

yum -y install glib2*
 

# groupadd haclient
 # useradd -g haclient -M -s /sbin/nologin hacluster
 # tar jxvf glue-1.0.7.tar.bz2
 # cd Reusable-Cluster-Components-glue--glue-1.0.7/
 # ./autogen.sh
 # ./configure LIBS='/lib/libuuid.so.1'  搞了半天老是报错
 # make && make install
 # cd ..
 
3.3 安装 agents
 # tar zxvf ClusterLabs-resource-agents-agents-1.0.4-0-gc06b6f3.tar.gz
 # cd ClusterLabs-resource-agents-c06b6f3/
 # ./autogen.sh
 #./configure LIBS='/lib/libuuid.so.1'
 # make && make install
 # cd..
 
3.4 安装Heartbeat
 # tar jxvf Heartbeat-3-0-STABLE-3.0.4.tar.bz2
 # cd Heartbeat-3-0-STABLE-3.0.4
 # ./ConfigureMe configure
 # gmake && make install
 # cd..
 
4. 配置lvs启动脚本
 本实验采用的是lvs-DR模式,该模式的特点是客户端的请求从主/备节点进入分配到web server,然后web server的响应是直接交付给客户端的。
 # vim /etc/init.d/lvs
 #!/bin/sh
 #chkconfig: 2345 20 80
 #description: start_lvs_of_dr
 VIP1=192.168.2.254
 RIP1=192.168.2.250
 RIP2=192.168.2.251
 RIP3=192.168.2.252
 RIP4=192.168.2.253
 ./etc/rc.d/init.d/functions
 case "$1" in
 start)
 echo "开启LVS DirectorServer..."
 #设置虚拟IP地址
 #LVS启动时添加VIP的网口eth0:0
 /sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
 /sbin/route add -host $VIP1 dev eth0:0
 #清除IPVS表
 /sbin/ipvsadm -C
 #设置LVS
 /sbin/ipvsadm -A -t $VIP1:80 -s lc
 /sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g
 /sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g
 /sbin/ipvsadm -a -t $VIP1:80 -r $RIP3:80 –g
 /sbin/ipvsadm -a -t $VIP1:80 -r $RIP4:80 -g
 #使用ipvsadm来转发客户端请求。-s lc为最小连接数算法,-g是采用DR模式。有多少RIP就添加几条记录。
 #启动LVS
 /sbin/ipvsadm
 ;;
 stop)
 echo "停止LVS DirectorServer..."
 #关闭时清除ipvsadm表
 /sbin/ipvsadm –C
 ;; 
*)
 echo "Usage: $0 {start|stop}"
 exit 1
 esac
 
注:这个脚本不要使用chkconfig管理,放入/etc/init.d内即可。
 
5. 安装ldirectord相关组件
 默认安装完上面的三个软件包之后,ldirectord已经安装到系统中,默认路径在 /usr/etc/ ,由于ldirectord是由perl语言编写的,所以必须安装相关的软件包:Socket6、libwww-perl、URI、MailTools、 HTML-Parser
 # yum -y install perl-Socket6 perl-libwww-perl perl-URI perl-MailTools perl-HTML-Parser
 
也可以在网站下载相关软件包安装
 安装方法:
 # perl Makefile.PL
 # make && make install
 
6. 配置heartbeat
 # cp -a /usr/etc/ha.d/ /etc/
 # rm -fr /usr/etc/ha.d/
 # ln -s /etc/ha.d/ /usr/etc/
 # cp /usr/share/doc/haresources /etc/ha.d/
 # cp /usr/share/doc/authkeys /etc/ha.d/
 # cp /usr/share/doc/ha.cf /etc/ha.d/
 # chmod 600 /etc/ha.d/authkeys //这个文件的权限必须是600
 
6.1 修改配置文件
 6.1.1 authkeys文件配置(authkeys文件的作用是用来设置心跳信息的加密方式)
 vim /etc/ha.d/authkeys
 auth 1
 1 crc
 #2 sha1 HI!
 #3 md5 Hello!
 
此设置是使用crc循环冗余校验,不采用加密的方式。
 
6.1.2 ha.cf为heartbeat的主配置文件,修改下面配置。
 # vim /etc/ha.d/ha.cf
 #日志文件位置
 logfile /var/log/ha-log
 #指定主备服务器多久发送一次心跳
 keepalive 2
 #指定30秒没有收到对方心跳就认为对方已经down机
 deadtime 30
 #10秒没有收到心跳,便发出警报。
 warntime 10
 #对方DOWN后120秒重新检测一次。
 initdead 120
 #指定监听端口
 udpport 694
 #心跳监听网口,这里为eth1
 bcast eth1 //去掉后面#linux
 #备份机的心跳线接口与接口IP
 ucast eth1 192.168.1.251
 #主节点恢复后,自动收回资源。
 auto_failback on
 #指定主备服务器的主机名称,即在hosts文件中指定的。第一个node为主服务器,第二个node为备服务器。
 node lvs-master //服务器的主机名
 node lvs-backup
 #当192.168.2.1、192.168.2.2这两个IP都不能ping通时,对方即开始接管资源。
 ping_group group1 192.168.2.1 192.168.2.2
 #启用ipfail脚本
 respawn root /usr/lib/heartbeat/ipfail
 #指定运行ipfail的用户。
 apiauth ipfail gid=root uid=root
 
6.1.3 haresources文件配置,这个文件是指定虚拟IP和改主机控制的脚本。
 # vim /etc/ha.d/haresources
 lvs-master 192.168.2.254 lvs ldirectord
 // master.lvs.net可为主节点主机名,192.168.2.254为虚拟IP
 
6.1.4 ldirectord.cf是ldirectord进程的配置文件,该进程用来监视web server的运行状况,如果web server不能响应请求则把它排除在转发列表外。
 复制安装文件ldirectord目录上的ldirectord.cf 到/etc/ha.d/conf下,如果找不到可以查找一下:find / -name ldirectord.cf
 # mkdir /etc/ha.d/conf
 # cp ldirectord.cf /etc/ha.d/conf
 # vim /etc/ha.d/conf/ldirectord.cf
 # Global Directives
 #设置真实web server的超时时间
 checktimeout=30
 #监视真实web server的时间间隔
 checkinterval=10
 #如全部真实web server失败,则转发至本地
 fallback=127.0.0.1:80
 #改变配置文件内容,不需要重新ldirectord
 autoreload=yes
 #指定日志位置
 logfile="/var/log/ldirectord.log"
 quiescent=no
 # A sample virual with a fallback that will override the gobal setting
 #指定虚拟IP
 virtual=192.168.2.254:80
 #指定真实web server IP及监听端口
 real=192.168.2.250:80 gate
 real=192.168.2.251:80 gate
 real=192.168.2.252:80 gate
 real=192.168.2.253:80 gate
 fallback=127.0.0.1:80 gate
 service=http
 #指定转发算法
 scheduler=lc //这里的算法要和LVS脚本的算法一样
 protocol=tcp
 #监视VIP服务器的方法
 checktype=negotiate
 checkport=80
 #监听测试页面名称,这个页面放入真实web server web服务的根目录
 request="lvs_testpage.html"
 #指定测试页面返回内容
 receive="Test Page"
 virtualhost= lvstest.net
 
配置文件中的lvs_testpage.html必须存在网站根目录下,校验一下配置:
 # ldirectord -d /etc/ha.d/conf/ldirectord.cf start //按Ctrl+C结束
 # cp /etc/ha.d/shellfuncs /usr/lib/ocf/resource.d/heartbeat/.ocf-shellfuncs
 
以上lvs和heartbeat配置完成。
 LVS备节点(lvs-backup)的配置和LVS主节点(lvs-master)完全一样。
 只是在/etc/ha.d/ha.cf中“ucast eth1 192.168.1.251”此配置地址不一样。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/16ce54b407e72d616701782f90269086.html