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

测试环境:

  1. serverAweb主站点,IP地址为192.168.1.201,网卡eth0

server Bweb副站点,IP地址为192.168.1.202,网卡eth0

  1. web站点底层环境为wdcp管理平台(linux+apache+mysql+php),具体安装方法见:51cto.com/wdcp/install.html使用源码方式安装

  2. 任务目标:使用apache模块功能实现两台web服务器的负载均衡,使用keepalived实现两台服务器的双机热备

 

部署过程:

一.负载均衡

  1. apache安装支持负载均衡的模块

cd/root/lanmp/httpd-2.2.24/modules/proxy/ #进入源码目录,

/www/wdlinux/httpd-2.2.24/bin/apxs-i -c -a mod_proxy.c proxy_util.c  #编译安装

/www/wdlinux/httpd-2.2.24/bin/apxs-i -c -a mod_proxy_http.c

/www/wdlinux/httpd-2.2.24/bin/apxs-i -c -a mod_proxy_ftp.c

/www/wdlinux/httpd-2.2.24/bin/apxs-i -c -a mod_proxy_connect.c

/www/wdlinux/httpd-2.2.24/bin/apxs-i -c -a mod_proxy_balancer.c

 

模块安装完成后会在主配置文件中看到以下信息:

vi/www/wdlinux/httpd-2.2.24/conf/httpd.conf

                            wKiom1SJGYPiuJikAAEiqbtCt04637.jpg

 

模块安装完成后,登录到web管理平台编辑站点配置文件

站点列表文件管理

wKiom1SJGgaTaeUQAAO3ypl8Nrk812.jpg

 

Apache配置文件选择站点配置文件

wKiom1SJGkehdEYVAAHuKgs7Z6E283.jpg

在配置文件中添加配置信息

wKioL1SJGwjDSaZFAAOWGgdfOF0331.jpg

保存后重启httpd服务即可

 

命令解释:

ProxyRequests Off                                                           //使用反向代理,on是正向代理

Proxypass / balancer://proxy/                            ///”代表发送Web请求的URL前缀

<Proxy balancer://proxy>                                              //定义一个负载均衡

Order Deny,Allow

Allow from all                                                                    //这两行是访问控制                                 

BalancerMember http://192.168.1.8:80             

BalancerMember http://192.168.1.9:80status=+H       //主服务器及辅助服务器,“+H”表示开启热备份功能

ProxySet lbmethod=bytraffic                                        //根据流量分配主机资源

</Proxy>

 

 

更详细的配置参照http://zhumeng8337797.blog.163.com/blog/static/100768914201242211633248/

 

 

 

二.Keepalived配置

 

keepalived官方地址:http://www.keepalived.org/download.html,可以到这里下载最新版本的keepalived

 

  1. 1.      环境配置:安装make gcc openssl openssl-devel等等

yum -y install gcc make openssl openssl-devel wgetkernel-devel

mkdir -p /usr/local/src/hasoft

cd /usr/local/src/hasoft

wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz

tar -zxvf keepalived-1.2.2.tar.gz

cd keepalived-1.2.2

./configure --prefix=/usr/local/keepalived--with-kernel-dir=/usr/src/kernels/2.6.18-238.19.1.el5-i686/

这里的软件版本及系统内核版本要根据自己的服务器进行修改

 

预编译后出现:

Keepalived configuration

------------------------

Keepalived version       : 1.2.2

Compiler                 : gcc

Compiler flags           : -g -O2 -DETHERTYPE_IPV6=0x86dd

Extra Lib                : -lpopt -lssl -lcrypto

Use IPVS Framework       : Yes

IPVS sync daemon support : Yes

IPVS use libnl           : No

Use VRRP Framework       : Yes

Use Debug flags          : No

 

  1. 2.      编译安装

make && make install

复制代码

这里用的是通用安装方法,如果没有用到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

  1. 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/

 

  1. 4.      建立配置文件目录

mkdir -p /etc/ keepalived/

两台服务器(两个节点)都这样安装即可

 

  1. 5.      编辑配置文件

节点A配置如下:

vi /etc/keepalived/keepalived.conf

 

global_defs

{

notification_email

{

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

stmp_connect_timeout 30

router_id lnmp_node1

}

 

vrrp_instance lnmp {

state MASTER                                      //这里住服务器配制成MASTER,备机配制成BACKUP

interface eth0                                       //绑定虚拟IP的网卡

virtual_router_id 100                         //两台服务器的virtual_router_id要完全一致

priority 200                                            //数值越大,优先级越高

advert_int 5                                          //vrrp信息检测时间间隔,这里是5

track_interface {                                  //监听的网卡

eth0

}

authentication {                                   //主备服务器的验证方式,密码要完全一致

auth_type PASS

auth_pass 123456

}

virtual_ipaddress {                              //使用的虚拟IP,默认绑定在主服务器上,如果主服务器宕机,则漂移到备服务器上

192.168.1.10

}

}

 

节点B配置如下:

vi /etc/keepalived/keepalived.conf

 

global_defs

{

notification_email

{

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

stmp_connect_timeout 30

router_id lnmp_node1

}

 

vrrp_instance lnmp {

state BACKUP

interface eth0

virtual_router_id 100

priority 150

advert_int 5

track_interface {

eth0

}

authentication {

auth_type PASS

auth_pass 123456

}

virtual_ipaddress {

192.168.1.10

}

}

 

  1. 6.      添加开机启动项

chkconfig --add keepalived

chkconfig --level 35 keepalived on

 

  1. 7.      添加防火墙策略

vi /etc/sysconfig/iptables

添加一行:

-A INPUT �Cs 192.168.1.0/24 -p vrrp -j ACCEPT

 

  1. 8.      启动测试

在节点A上启动

/usr/local/keepalived/sbin/keepalived

启动日志:

cat   /var/log/messages

Sep  818:26:02 centosa Keepalived_vrrp: Registering Kernel netlink reflector

Sep  818:26:02 centosa Keepalived_vrrp: Registering Kernel netlink command channel

Sep  818:26:02 centosa Keepalived_vrrp: Registering gratutious ARP shared channel

Sep  818:26:02 centosa Keepalived_vrrp: Opening file'/etc/keepalived/keepalived.conf'.

Sep  818:26:02 centosa Keepalived_vrrp: Configuration is using : 36076 Bytes

Sep  818:26:02 centosa Keepalived_vrrp: Using LinkWatch kernel netlink reflector...

Sep  818:26:02 centosa Keepalived: Starting VRRP child process, pid=5606

Sep  818:26:07 centosa Keepalived_vrrp: VRRP_Instance(lnmp)Transition to MASTER STATE

Sep  818:26:12 centosa Keepalived_vrrp: VRRP_Instance(lnmp)Entering MASTER STATE

Sep  818:26:12 centosa avahi-daemon[2528]: Registering new address record for192.168.1.10 on eth0.

 

在节点B上启动

/usr/local/keepalived/sbin/keepalived

 

查看启动日志:

cat /var/log/messages

Sep  818:30:02 centosb Keepalived_vrrp: Opening file'/etc/keepalived/keepalived.conf'.

Sep  818:30:02 centosb Keepalived_vrrp: Configuration is using : 36252 Bytes

Sep  818:30:02 centosb Keepalived_vrrp: Using LinkWatch kernel netlink reflector...

Sep  818:30:02 centosb Keepalived_healthcheckers: Configuration is using : 6271 Bytes

Sep  818:30:02 centosb Keepalived_healthcheckers: Using LinkWatch kernel netlinkreflector...

Sep  818:30:02 centosb Keepalived_vrrp: VRRP_Instance(lnmp)Entering BACKUP STATE

 

从日志可以看出,启动都没有问题,并且安装我给的优先级完成了竞选,各自成就了各自的状态

 

关闭节点A的网卡测试切换是否正常

ifdown eth0

 

观察节点B的日志:

Sep  818:32:55 centosb Keepalived_vrrp: VRRP_Instance(lnmp) Transition to MASTERSTATE

Sep  818:33:00 centosb Keepalived_vrrp: VRRP_Instance(lnmp)Entering MASTER STATE

Sep  818:33:00 centosb avahi-daemon[2531]: Registering new address record for192.168.1.10 on eth0.

 

启动节点A的网卡测试切换是否正常

ifup eth0

观察节点B的日志:

Sep  818:33:31 centosb Keepalived_vrrp: VRRP_Instance(lnmp) Received higher prioadvert

Sep  818:33:31 centosb Keepalived_vrrp: VRRP_Instance(lnmp) EnteringBACKUP STATE

Sep  818:33:31 centosb avahi-daemon[2531]: Withdrawing address record for 192.168.1.10on eth0.

Received higher prio advert:表示接收到更高优先级的公告(advert公告的意思)

Withdrawing:撤回的意思,可以看出切换过程一目了然

 

  1. 9.      使用脚本监测服务

下面使用脚本监控apachephpmysql三个服务,若有一个出现问题便立即停止keepalived服务,以切换到另一台服务器

mkdir /root/shell/

cd /root/shell

vi keepcheck.sh

 

#!/bin/bash

while :

do

mysqlcheck=`/www/wdlinux/mysql-5.1.63/bin/mysqladmin-pwdlinux.cn -uroot ping 2>&1`

mysqlcode=`echo $?`

phpcheck=`ps aux | grep -c php-fpm | wc -l`

apachecheck80=`lsof -i:80|wc -l`

apachecheck8080=`lsof -i:8080|wc -l`

keepalivedcheck=`ps -C keepalived --no-header| wc -l`

 if [$apachecheck80 -eq 0 ]||[ $apachecheck8080 -eq 0 ]||[ $phpcheck -eq 0 ]||[$mysqlcode -ne 0 ];then

                if [ $keepalivedcheck -ne 0];then

                   killall -TERM keepalived

                else

                   echo "keepalived isstoped"

                fi

       else

                if [ $keepalivedcheck -eq 0];then

                   /etc/init.d/keepalived start

                else

                   echo "keepalived isrunning"

                fi

 fi

 sleep5

done

 

注意,用/etc/init.d/keepalived start如果起不来,可以用/usr/local/keepalived/sbin/keepalived二进制文件直接执行启动即可

启动脚本:

chmod +x /root/shell/keepcheck.sh

nohup sh /root/shell/keepcheck.sh &

节点B也用这个脚本

写入/etc/rc.local开机自动启动

vi /etc/rc.local

nohup sh /root/shell/keepcheck.sh &

 

至此全部配置已经完成,将域名或nat指向到创建的虚拟ip即可使用服务


你可能感兴趣的:(keepalived,web服务器,apache负载均衡)