一 工作原理 1
1 lvs主服务器master的作用 1
2 lvs 从服务器的作用 1
3 lvs主从服务器的相互工作关系 1
二 系统环境 2
三 所需软件 2
四 安装软件 2
1 安装 ipvsadm 2
2 安装keepalived 2
3 配置keepalived 3
4 配置文件内容详解参数说明 4
5 .配置web群 6
6 nagios监控系统报警 8
一 工作原理
1 lvs主服务器master的作用
lvs主服务器master提供服务,负责将客户的请求按照轮训算法分配到每个web服务器中,每台真实的web服务器在主服务器master中都会在他的地址表中查到分配的连接数,断开的连接数和提供的什么服务端口都可以看到。并且一旦后台的web服务器当机或服务停止都会立刻从主服务器master的地址表中去掉,同时不会在将客户的请求轮训导该web服务器。并且会通过linux自身的smtp向管理员发送邮件通知那台web服务器出现问题并记录ip和主机状态比如 什么时间80端口down或主机down等信息。一旦web服务器恢复,立刻从新将他添加到主服务器master的地址表提供服务恢复请求。
2 lvs 从服务器的作用
从服务器backup不提供服务只是侦听主服务器master的状态,一旦主服务器master当机或网络出现问题,立刻替代主服务器上的作用将自己变成主服务器提供和主服务器一样的功能。当原来的主服务器恢复后从新启动服务又将自己的身份变成master身份,而backup变回原有身份继续侦听主服务器master。
3 lvs主从服务器的相互工作关系
lvs主从就是通过健康检查机制不断切换从而提供负载均衡服务,提供高可用性的负载均衡服务提高了网站的访问效率增加了的网站的负载,可以提供高并发减缓了对单台web服务器的负载。
二 系统环境
conrtos5.4或redhat5以上版本内核必须是支持ipvs技术所以linux的内核在2.6.18或以上比较好。后端web服务器是apache2.2x系列或nginx均可。
三 所需软件
ipvsadm-1.24.tar 提供负载均衡服务,通过不同的算法会有不同的轮训方式。
keepalived-1.1.15.tar.gz 提供高可用性和健康检查机制,它可以检测后端web服务器状态并根据情况将出现问题的web端从ipvs的地址表中删除,如果恢复后又添加该节点信息。继续提供服务。
以上2个软件要根据linux的内核而选择。
四 安装软件
1 安装 ipvsadm
LVS_mastr && LVS_backup主和从都要安装
# tar zxvf ipvsadm-1.24.tar
# cd ipvsadm-1.24
# ln –s /usr/src/kernels/2.6.18-53.el5-i686/ /usr/src/linux //防止编译错误将内核做软连接
# make
# make install
2 安装keepalived
LVS_mastr && LVS_backup
# tar zxvf keepalived-1.1.15.tar.gz
# cd keepalived-1.1.15
# ./configure
Keepalived configuration
------------------------
Keepalived version : 1.1.15
Compiler : gcc
Compiler flags : -g -O2
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
Use LinkWatch : No
Use Debug flags : No
如果 编译时出现以上内容就证明可以下一步编译安装
# make && make install
3 配置keepalived
LVS_mastr && LVS_backup
# mkdir /etc/keepalived
# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
# ln -s /usr/local/sbin/keepalived /usr/sbin/keepalived
# vi /etc/keepalived/keepalived.conf
4 配置文件内容详解参数说明
! Configuration File for keepalived
global_defs { 定义全局配置
notification_email { 设置报警接收邮箱地址
xxx@sina.com
}
notification_email_from Alexandre.Cassen@firewall.loc 发送邮箱地址
smtp_server smtp.sina.com 邮件服务器地址
smtp_connect_timeout 30 链接邮件服务器超时时间
router_id LVS_DEVEL 运行keepalived的服务器的标识名称。从keepalive的名称要和主服务器有所区别
}
vrrp_sync_group GLVS { 定义vrrp虚拟路由组
group {
LVS_1 组名称
}
}
vrrp_instance LVS_1 { 定义虚拟路由标识
state MASTER //备份主机用BACKUP
interface eth0 指定负载均衡的网卡
lvs_sync_daemon_inteface eth0 指定keepalived的网卡
virtual_router_id 51 虚拟路由标识,相同实例表示id必须相同,master和backup标识id要相同
priority 100 优先级,从服务器优先级数字要小于master服务器
advert_int 1 同步master和backup健康检查的时间单位是秒
authentication { 设置密码认证
auth_type PASS 用password认证方式
auth_pass 1111
}
virtual_ipaddress { 设置服务ip,将域名解析到这个ip
192.168.1.10
}
}
virtual_server 192.168.1.10 80 { 虚拟ip提供服务的端口
delay_loop 6 健康检查时间单位秒
lb_algo wlc 设置负载均衡算法
lb_kind DR 设置负载均衡的模式
nat_mask 255.255.255.0
#persistence_timeout 50 //会话表示时间针对动态网页由这个部分处理直到超时
protocol TCP 协议类型
real_server 192.168.1.4 80 { web服务器节点
weight 1 节点权值
TCP_CHECK { 节点状态监测
connect_timeout 3 超时时间
nb_get_retry 3 重试此时节点超时后从新测试3次
delay_before_retry 3 重新测试间隔时间3秒
connect_port 80 连接端口
}
}
real_server 192.168.1.5 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
# /etc/rc.d/init.d/keepalived start
启动主从服务器的服务
5 .配置web群
Real_web1 && Real_web2
DR脚本: 脚本目的是忽略arp请求脚本
# vi DR
#/bin/bash
VIP=192.168.1.10
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of directorserver"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
;;
stop)
/sbin/ifconfig lo:0 down
echo "close lvs of directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage:$0 {start|stop}"
exit 1
esac
6 nagios监控系统报警
由于keepalive只能提供邮件报警方式不能第一时间将出现问题的情况及时告诉管理员所以要通过nagios监控系统的飞信报警给你及时将信息通过短信方式
发送给系统维护人员,及时处理。
在飞信网站现在新版的飞信版本为2010版的linux版本的客户端程序解压放到nagios的/usr/local/nagios/libexec/sms
在 nagios的commands.cfg文件添加内容
#notify-service-by-sms
define command{
command_name notify-service-by-sms
command_line /usr/local/nagios/libexec/sms/fetion --mobile=飞信登陆的手机号 --pwd=飞信登陆密码 --to=$CONTACTPAGER$ --msg-utf8="$HOSTADDRESS$ $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$"
}
#service notify by sms
define command{
command_name notify-host-by-sms
command_line /usr/local/nagios/libexec/sms/fetion --mobile=飞信登陆的手机号 --pwd=飞信登陆密码 --to=$CONTACTPAGER$ --msg-utf8="HOST$HOSTSTATE$ alter for $HOSTNAME$! on $DATETIMEA$"
}
在 templates.cfg 文件定义飞信报警方式
define contact{
name generic-contact ; The name of this contact template
service_notification_period 24x7 ; service notifications can be sent anytime
host_notification_period 24x7 ; host notifications can be sent anytime
service_notification_options w,u,c,r,f,s ; send notifications for all service states, flapping events, and scheduled downtime events
host_notification_options d,u,r,f,s ; send notifications for all host states, flapping events, and scheduled downtime events
service_notification_commands notify-service-by-email,notify-service-by-sms ; send service notifications via email
host_notification_commands notify-host-by-email,notify-host-by-sms ; send host notifications via email
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
}
添加notify-service-by-sms notify-host-by-sms一个是对服务的报警一个是对主机的报警。
从新启动nagios如果有主机或系统问题就会收到短信提示。下载本文