环境:
[root@db02 ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [root@db02 ~]# cat /etc/redhat-release CentOS release 6.9 (Final)
keepalived软件介绍
keepalived软件能干什么?
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能
Keepalived软件的官方站点是 http://www.keepalived.org
keppalived服务的三个重要功能
- 管理LVS负载均衡软件
- 实现对LVS集群节点健康检查功能
- 作为系统网络服务的高可用功能
keepalived软件工作原理
1、Keepalived高可用对之间是通过VRRP通信的
1) VRRP,全称Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。
2) VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的。
3) VRRP用IP多播的方式(默认多播地址(224.0.0.18)实现高可用对之间通信。
4) 工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般 Keepalived系统运维工作中都是一对。
5) VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码。
2、Keepalived 服务的工作原理
Keepalived高可用对之间是通过VRRP进行通信的,VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。
在Keepalived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关股务接管资源,保证业务的连续性。接管速度最快可以小于1秒。
keepalived服务部署准备环境
需要的服务器介绍:需要三台web服务器,两台lb(负载)服务器
web服务器:(每台web有两个站点bbs和www)
web01:172.16.1.8(内网)10.0.0.8(外网)
web02:172.16.1.7(内网)10.0.0.7(外网)
web03:172.16.1.9(内网)10.0.0.9(外网)
web服务环境统一
web集群服务器配置文件环境统一(web01 web02 web03 配置均一致)
cat www.conf server { listen 80; server_name www.zxpo.com; location / { root html/www; index index.html index.htm; } } cat bbs.conf server { listen 80; server_name bbs.zxpo.com; location / { root html/bbs; index index.html index.htm; } } 同步三台web服务器配置: scp -rp {www.conf,bbs.conf} 172.16.1.7:/application/nginx/conf/extra/ scp -rp {www.conf,bbs.conf} 172.16.1.9:/application/nginx/conf/extra/ web服务主配置文件环境统一: [root@web01 extra]# cat ../nginx.conf worker_processes 1; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include extra/www.conf; include extra/bbs.conf; } scp -rp ../nginx.conf 172.16.1.9:/application/nginx/conf/ scp -rp ../nginx.conf 172.16.1.7:/application/nginx/conf/ web01测试环境准备: [root@web01 www]# for name in www bbs;do echo $name `hostname` >/application/nginx/html/$name/nana.html;done [root@web01 www]# for name in www bbs;do cat /application/nginx/html/$name/nana.html;done www web01 bbs web01 web02测试环境准备: [root@web02 conf]# for name in www bbs;do echo $name `hostname` >/application/nginx/html/$name/nana.html;done [root@web02 conf]# for name in www bbs;do cat /application/nginx/html/$name/nana.html;done www web02 bbs web02 web03测试环境准备: [root@web03 conf]# for name in www bbs;do echo $name `hostname` >/application/nginx/html/$name/nana.html;done [root@web03 conf]# for name in www bbs;do cat /application/nginx/html/$name/nana.html;done www web03 bbs web03 web环境测试结果:(在lb负载均衡服务器上面进行) [root@web01 www]# curl -H host:www.zxpo.com 10.0.0.8/nana.html www web01 [root@web01 www]# curl -H host:bbs.zxpo.com 10.0.0.8/nana.html bbs web01 [root@web01 www]# curl -H host:www.zxpo.com 10.0.0.7/nana.html www web02 [root@web01 www]# curl -H host:bbs.zxpo.com 10.0.0.7/nana.html bbs web02 [root@web01 www]# curl -H host:www.zxpo.com 10.0.0.9/nana.html www web03 [root@web01 www]# curl -H host:bbs.zxpo.com 10.0.0.9/nana.html bbs web03