WDCP环境下的Apache负载均衡及keepalived配置

阅读:410 2019-03-19 14:44:06 来源:新网

测试环境:

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&

相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服