keepalived+nginx实现高可用WEB前端
Keepalived介绍:1、Keepalived是重要的轻量级高可用底层,是VRRP协议在linux上的软件实现。对于实现虚IP转移及没有共享存储的高可用集群是一个很好的选择,轻量级,VIP转移速度快,能够实现VIP转移时(也就是主从切换时)执行相应的动作(依赖于脚本)。
2、Keepalived早期为LVS设计,内部整合了LVS,并且能够提供后端不同服务的健康状况检查。
Nginx介绍:
nginx是一种轻量级的http服务器及Web、Mail的反向代理服务器。作为Web反向代理服务器,nginx可以做端口映射、URI反向代理、URL重写、缓存服务器、为后端Web服务器提供加权负载均衡、反盗链、后端服务器读写分离等强大功能。
因此轻量级高可用Keepalived加轻量级Web反向代理nginx在企业中非常常见。试验拓扑如下:
http://s3.运维网.com/wyfs02/M01/2B/C4/wKioL1OKrtDjB2bMAAFESnvlgbg392.jpg
Keepalived实现功能如下:
1、vrrp自身可以根据hello报文监控master与slave的运行,因此当master的链路状态出现问题时,slave将成为master。
2、为nginx提供高可用,主节点实时监控nginx的运行状态。通过监控nginx的pid文件,来监控nginx进程的状态,当不存在pid文件也就是nginx进程关闭时将减小优先级使得slave节点的优先级大于主节点而成为master。
3、slave节点在成为master时检查nginx进程状态,如果不存在pid文件则重启nginx进程。如果存在则不做处理。
Nginx实现功能如下:
1、为apache实现web反向代理
2、后端apache的健康状况检查
3、实现sorry server
实验环境介绍:10.32.9.51~~10.32.9.54分别对应node1~~node4、实验平台RHEL5.8 X64
实验步骤:
1、nginx keepalived apache软件编译安装,服务脚本的提供,并分别为apache提供相应主页,主页内容高亮显示主机名。
2、分别配置node1 node2的keepalived
node1相关配置
vrrp_script nginx { ---------配置vrrp track脚本
script "[ -e /var/run/nginx/nginx.pid ] && exit 0 || exit 1" -监控nginx进程,根据进程的状态返回不同状态值
interval 2 ---- 监控间隔
weight -20 ----当发现返回状态为1则降低的权重值
fall 2 ---- 该文件不存在的需要检测两次才算错误
rise 1 -----该文件存在的检测一次既算正确
}vrrp_instance VI_1 { -------------配置VRRP实例
state MASTER ------------ 设定为master状态
interface eth0 -------------通告信息接口
virtual_router_id 51 -------------VRRP组,两端要一致
priority 100 -------------主端优先级
advert_int 1 -------------每多长时间通告在线信息,类似hello包
authentication {
auth_type PASS --------------密码的方式进行认证
auth_pass redhat --------------密码为redhat
}
virtual_ipaddress {
10.32.9.199 dev eth0 label eth0:1----------虚拟IP地址,使用别名方式更容易观察
}
track_script { -----监控脚本
nginx----监控的具体脚本、这里调用vrrp_script定义的脚本
}
}
node2相关配置
vrrp_instance VI_1 {
state SLAVE --------------从节点状态为slave
interface eth0
virtual_router_id 51
priority 90 --------------从节点优先级为90
advert_int 1
authentication {
auth_type PASS
auth_pass redhat
}
virtual_ipaddress {
10.32.9.199 dev eth0 label eth0:1 ----------虚拟IP地址,使用别名方式更容易观察
}
notify_master "/etc/keepalived/m.sh"
}
/etc/keepalived/m.sh脚本-----slave成为master时检查nginx服务状态
[ -e /var/run/nginx/nginx.pid ] && echo || service nginx restart 2、配置nginx
node1主要配置
upstream webserver { ------------定义反向代理服务器组
server 10.32.9.53:80 weight=5 max_fails=2 fail_timeout=10s;
server 10.32.9.54:80 weight=5 max_fails=2 fail_timeout=10s;
server 10.32.9.51:8080 backup ; ----定义sorry server
}weigth可以实现加权轮调、这里两台服务器值相等表示负载均衡。
max_fails 后端服务器状态检查次数为2次
fail_timeout每次检查时长location / {
proxy_pass http://webserver;----反向代理至的服务器,webserver引用upstream定义的组
indexindex.html index.htm;
}
server {----------定义sorry server
listen 8080;
location / {
root /var/www ;
index index.html ;
}
} node2主要配置
upstream webserver { ------------定义反向代理服务器组
server 10.32.9.53:80 weight=5 max_fails=2 fail_timeout=10s;
server 10.32.9.54:80 weight=5 max_fails=2 fail_timeout=10s;
server 10.32.9.51:8080 backup ; ----定义sorry server
}
location / {
proxy_pass http://webserver; ----反向代理至的地址,webserver引用upstream定义的组
indexindex.html index.htm;
server {----------定义sorry server
listen 8080;
location / {
root /var/www ;
index index.html ;
}
}
页:
[1]