{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
测试环境:
servera为web主站点,ip地址为192.168.1.201,网卡eth0
serverb为web副站点,ip地址为192.168.1.202,网卡eth0
web站点底层环境为wdcp管理平台(linux+apache+mysql+php),具体安装方法见:51cto.com/wdcp/install.html,使用源码方式安装
任务目标:使用apache模块功能实现两台web服务器的负载均衡,使用keepalived实现两台服务器的双机热备
部署过程:
一.负载均衡
为apache安装支持负载均衡的模块
cd/root/lanmp/httpd-2.2.24/modules/proxy/#进入源码目录,
/www/wdlinux/httpd-2.2.24/bin/apxs-i-c-amod_proxy.cproxy_util.c#编译安装
/www/wdlinux/httpd-2.2.24/bin/apxs-i-c-amod_proxy_http.c
/www/wdlinux/httpd-2.2.24/bin/apxs-i-c-amod_proxy_ftp.c
/www/wdlinux/httpd-2.2.24/bin/apxs-i-c-amod_proxy_connect.c
/www/wdlinux/httpd-2.2.24/bin/apxs-i-c-amod_proxy_balancer.c
模块安装完成后会在主配置文件中看到以下信息:
vi/www/wdlinux/httpd-2.2.24/conf/httpd.conf
模块安装完成后,登录到web管理平台编辑站点配置文件
站点列表—文件管理
apache配置文件—选择站点配置文件
在配置文件中添加配置信息
保存后重启httpd服务即可
命令解释:
proxyrequestsoff//使用反向代理,on是正向代理
proxypass/balancer://proxy///“/”代表发送web请求的url前缀
orderdeny,allow
allowfromall//这两行是访问控制
balancermemberhttp://192.168.1.8:80
balancermemberhttp://192.168.1.9:80status=+h//主服务器及辅助服务器,“+h”表示开启热备份功能
proxysetlbmethod=bytraffic//根据流量分配主机资源
更详细的配置参照http://zhumeng8337797.blog.163.com/blog/static/100768914201242211633248/
二.keepalived配置
keepalived官方地址:http://www.keepalived.org/download.html,可以到这里下载最新版本的keepalived
1.环境配置:安装make和gccopensslopenssl-devel等等
yum-yinstallgccmakeopensslopenssl-develwgetkernel-devel
mkdir-p/usr/local/src/hasoft
cd/usr/local/src/hasoft
wgethttp://www.keepalived.org/software/keepalived-1.2.2.tar.gz
tar-zxvfkeepalived-1.2.2.tar.gz
cdkeepalived-1.2.2
./configure--prefix=/usr/local/keepalived--with-kernel-dir=/usr/src/kernels/2.6.18-238.19.1.el5-i686/
这里的软件版本及系统内核版本要根据自己的服务器进行修改
预编译后出现:
keepalivedconfiguration
------------------------
keepalivedversion:1.2.2
compiler:gcc
compilerflags:-g-o2-dethertype_ipv6=0x86dd
extralib:-lpopt-lssl-lcrypto
useipvsframework:yes
ipvssyncdaemonsupport:yes
ipvsuselibnl:no
usevrrpframework:yes
usedebugflags:no
2.编译安装
make&&makeinstall
复制代码
这里用的是通用安装方法,如果没有用到lvs可以把lvs去掉即
./configure--prefix=/usr/local/keepalived--with-kernel-dir=/usr/src/kernels/2.6.18-238.19.1.el5-i686/--disable-lvs-syncd--disable-lvs
3.整理管理文件:
cp/usr/local/keepalived/sbin/keepalived/usr/sbin/
cp/usr/local/keepalived/etc/sysconfig/keepalived/etc/sysconfig/
cp/usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/
4.建立配置文件目录
mkdir-p/etc/keepalived/
两台服务器(两个节点)都这样安装即可
5.编辑配置文件
节点a配置如下:
vi/etc/keepalived/keepalived.conf
global_defs
{
notification_email
{
admin@example.com
}
notification_email_fromadmin@example.com
smtp_server127.0.0.1
stmp_connect_timeout30
router_idlnmp_node1
}
vrrp_instancelnmp{
statemaster//这里住服务器配制成master,备机配制成backup
interfaceeth0//绑定虚拟ip的网卡
virtual_router_id100//两台服务器的virtual_router_id要完全一致
priority200//数值越大,优先级越高
advert_int5//vrrp信息检测时间间隔,这里是5秒
track_interface{//监听的网卡
eth0
}
authentication{//主备服务器的验证方式,密码要完全一致
auth_typepass
auth_pass123456
}
virtual_ipaddress{//使用的虚拟ip,默认绑定在主服务器上,如果主服务器宕机,则漂移到备服务器上
192.168.1.10
}
}
节点b配置如下:
vi/etc/keepalived/keepalived.conf
global_defs
{
notification_email
{
admin@example.com
}
notification_email_fromadmin@example.com
smtp_server127.0.0.1
stmp_connect_timeout30
router_idlnmp_node1
}
vrrp_instancelnmp{
statebackup
interfaceeth0
virtual_router_id100
priority150
advert_int5
track_interface{
eth0
}
authentication{
auth_typepass
auth_pass123456
}
virtual_ipaddress{
192.168.1.10
}
}
6.添加开机启动项
chkconfig--addkeepalived
chkconfig--level35keepalivedon
7.添加防火墙策略
vi/etc/sysconfig/iptables
添加一行:
-ainput–s192.168.1.0/24-pvrrp-jaccept
8.启动测试
在节点a上启动
/usr/local/keepalived/sbin/keepalived
启动日志:
cat/var/log/messages
sep818:26:02centosakeepalived_vrrp:registeringkernelnetlinkreflector
sep818:26:02centosakeepalived_vrrp:registeringkernelnetlinkcommandchannel
sep818:26:02centosakeepalived_vrrp:registeringgratutiousarpsharedchannel
sep818:26:02centosakeepalived_vrrp:openingfile'/etc/keepalived/keepalived.conf'.
sep818:26:02centosakeepalived_vrrp:configurationisusing:36076bytes
sep818:26:02centosakeepalived_vrrp:usinglinkwatchkernelnetlinkreflector...
sep818:26:02centosakeepalived:startingvrrpchildprocess,pid=5606
sep818:26:07centosakeepalived_vrrp:vrrp_instance(lnmp)transitiontomasterstate
sep818:26:12centosakeepalived_vrrp:vrrp_instance(lnmp)enteringmasterstate
sep818:26:12centosaavahi-daemon[2528]:registeringnewaddressrecordfor192.168.1.10oneth0.
在节点b上启动
/usr/local/keepalived/sbin/keepalived
查看启动日志:
cat/var/log/messages
sep818:30:02centosbkeepalived_vrrp:openingfile'/etc/keepalived/keepalived.conf'.
sep818:30:02centosbkeepalived_vrrp:configurationisusing:36252bytes
sep818:30:02centosbkeepalived_vrrp:usinglinkwatchkernelnetlinkreflector...
sep818:30:02centosbkeepalived_healthcheckers:configurationisusing:6271bytes
sep818:30:02centosbkeepalived_healthcheckers:usinglinkwatchkernelnetlinkreflector...
sep818:30:02centosbkeepalived_vrrp:vrrp_instance(lnmp)enteringbackupstate
从日志可以看出,启动都没有问题,并且安装我给的优先级完成了竞选,各自成就了各自的状态
关闭节点a的网卡测试切换是否正常
ifdowneth0
观察节点b的日志:
sep818:32:55centosbkeepalived_vrrp:vrrp_instance(lnmp)transitiontomasterstate
sep818:33:00centosbkeepalived_vrrp:vrrp_instance(lnmp)enteringmasterstate
sep818:33:00centosbavahi-daemon[2531]:registeringnewaddressrecordfor192.168.1.10oneth0.
启动节点a的网卡测试切换是否正常
ifupeth0
观察节点b的日志:
sep818:33:31centosbkeepalived_vrrp:vrrp_instance(lnmp)receivedhigherprioadvert
sep818:33:31centosbkeepalived_vrrp:vrrp_instance(lnmp)enteringbackupstate
sep818:33:31centosbavahi-daemon[2531]:withdrawingaddressrecordfor192.168.1.10oneth0.
receivedhigherprioadvert:表示接收到更高优先级的公告(advert公告的意思)
withdrawing:撤回的意思,可以看出切换过程一目了然
9.使用脚本监测服务
下面使用脚本监控apache、php及mysql三个服务,若有一个出现问题便立即停止keepalived服务,以切换到另一台服务器
mkdir/root/shell/
cd/root/shell
vikeepcheck.sh
#!/bin/bash
while:
do
mysqlcheck=`/www/wdlinux/mysql-5.1.63/bin/mysqladmin-pwdlinux.cn-urootping2>&1`
mysqlcode=`echo$?`
phpcheck=`psaux|grep-cphp-fpm|wc-l`
apachecheck80=`lsof-i:80|wc-l`
apachecheck8080=`lsof-i:8080|wc-l`
keepalivedcheck=`ps-ckeepalived--no-header|wc-l`
if[$apachecheck80-eq0]||[$apachecheck8080-eq0]||[$phpcheck-eq0]||[$mysqlcode-ne0];then
if[$keepalivedcheck-ne0];then
killall-termkeepalived
else
echo"keepalivedisstoped"
fi
else
if[$keepalivedcheck-eq0];then
/etc/init.d/keepalivedstart
else
echo"keepalivedisrunning"
fi
fi
sleep5
done
注意,用/etc/init.d/keepalivedstart如果起不来,可以用/usr/local/keepalived/sbin/keepalived二进制文件直接执行启动即可
启动脚本:
chmod+x/root/shell/keepcheck.sh
nohupsh/root/shell/keepcheck.sh&
节点b也用这个脚本
写入/etc/rc.local开机自动启动
vi/etc/rc.local
nohupsh/root/shell/keepcheck.sh&