Nginx+Keepalived实现高可用
Nginx+Keepalived实现高可用
- 一、什么是nginx?
- 二、什么是keepalived?
- 三、nginx+Keepalived部署
- 准备服务器(虚拟机)
- 配置文件地址
- 安装keepalived
- master机器配置文件信息
- backup机器配置文件信息
- 检查nginx启动脚本文件
一、什么是nginx?
Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现,nginx这里不过多解释,主要讲一下keepalived+nginx的实现配置。
二、什么是keepalived?
Keepalived
Keepalived的作用是检测服务器的状态,如果有一台web服务器(nginx服务器)宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议,下面介绍一下:
VRRP
VRRP是一种容错协议,它通过把几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制来保证当主机的下一跳设备出现故障时,可以及时将业务切换到其它设备,从而保持通讯的连续性和可靠性
VRRP是一种容错协议,它通过把几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制来保证当主机的下一跳设备出现故障时,可以及时将业务切换到其它设备,从而保持通讯的连续性和可靠性
nginx+Keepalived
很多企业都在使用nginx做反向代理、负载均衡,一旦nginx挂了,任何请求都转发不到应用服务器,网站就GG了,所以nginx要实现高可用的,怎么实现呢,一般用keepalived。
配置了Keepalived,会有一个公共的虚拟IP(VIP),用户通过访问这个IP,虚拟IP再从nginx服务器真实IP拿数据,nginx服务器IP再从反向代理的内部服务器IP取数据,就是这么一个流程。
VIP>>nginx服务器真实IP>>内部服务器IP
三、nginx+Keepalived部署
部署的框架如下:
解释一下访问流程:
用户访问虚拟IP:192.168.31.5,keepalived系统会首先选择优先级比较高的nginx服务器进行访问,比如192.168.31.3的优先级为100,而192.168.31.4的优先级为99,则会访问192.168.31.3的服务器,nginx服务器再根据反向代理以及负载均衡向web01和web02拿数据,进而传给用户,完成整个访问流程。
准备服务器(虚拟机)
根据实际情况划分服务器数量,4台(2台nginx服务器,2台内部项目服务器),3台(2台nginx服务器,一台项目内部服务器,根据端口号区分,启动两个web)
配置文件地址
/etc/keepalived/keepalived.conf
安装keepalived
keepalived的安装非常简单,直接使用yum来安装即可。
#yum install keepalived –y
master机器配置文件信息
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.35.1 smtp_connect_timeout 30 router_id nginx_master vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_script chk_http_port { script "/usr/local/src/check_nginx_pid.sh" #指示脚本的位置 interval 2 #(检测脚本执行的间隔,单位是秒) weight 2 } vrrp_instance VI_1 { state MASTER #指定keepalived的角色,MASTER为主,BACKUP为备 interface ens33 #当前进行vrrp通讯的网络接口卡(当前centos的网卡) virtual_router_id 51 #虚拟路由编号,主从设备要一致 priority 100 #优先级,数值越大,获取处理请求的优先级越高,大于backup机器即可 advert_int 1 #检查间隔,默认为1s(vrrp组播周期秒数) authentication { auth_type PASS #认证方式 auth_pass 1111 #认证密码 } track_script { #执行的脚本,上面已定义 chk_http_port #上面定义的脚本名 } virtual_ipaddress { 192.168.31.5 # 定义虚拟ip(VIP),可多 3ff7 设,每行一个,要和Linux主机同个网段 #192.168.200.16 #192.168.200.17 #192.168.200.18 } } }
backup机器配置文件信息
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.35.1 smtp_connect_timeout 30 router_id nginx_master vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_script chk_http_port { script "/usr/local/src/check_nginx_pid.sh" #指示脚本的位置 interval 2 #(检测脚本执行的间隔,单位是秒) weight 2 } vrrp_instance VI_1 { state BACKUP #指定keepalived的角色,MASTER为主,BACKUP为备 interface ens33 #当前进行vrrp通讯的网络接口卡(当前centos的网卡) virtual_router_id 51 #虚拟路由编号,主从设备要一致 priority 99 #优先级,数值越大,获取处理请求的优先级越高,小于master机器即可 advert_int 1 #检查间隔,默认为1s(vrrp组播周期秒数) authentication { auth_type PASS #认证方式 auth_pass 1111 #认证密码 } track_script { #执行的脚本,上面已定义 chk_http_port #上面定义的脚本名 } virtual_ipaddress { 192.168.31.5 # 定义虚拟ip(VIP),可多设,每行一个,要和Linux主机同个网段 #192.168.200.16 #192.168.200.17 #192.168.200.18 } }
检查nginx启动脚本文件
路径地址:/usr/local/src/check_nginx_pid.sh
#!/bin/bash A='ps -C nginx --no-header |wc -l' if [ $A -eq 0 ];then /home/nginx/sbin/nginx #重启nginx if [ 'ps -C nginx --no-header |wc -l' -eq 0 ];then #nginx重启失败 systemctl stop keepalived #停止keepalived fi else exit 0 fi
四、测试结果
分别启动两个服务器的nginx、keepalived
systemctl start nginx.service
systemctl start keepalived
访问192.168.35.5,会访问master主机上的nginx服务器,此时可以停掉master,再次访问192.168.35.5,此时可以看到backup主机上的nginx服务器被访问了;过了一会,master主机恢复启动了,此时再访问192.168.35.5,会访问到master主机上了,如果优先级比较高的服务器修复了会自动切换,以上结论,我是经过实体测试的,如果有啥问题,欢迎私聊,谢谢!!
- keepalived+nginx实现nginx的高可用
- nginx+keepalived高可用基础实现
- 自我复习之nginx+keepalived实现高可用(主要是配置,自我简单记录)
- keepalived+lvs/nginx 实现调度器高可用
- centos7.1实现nginx+keepalived 负载均衡+高可用
- 详解Keepalived+Nginx实现高可用(HA)
- 分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡
- Keepalived+Nginx实现高可用(HA)
- Keepalived+Nginx实现负载均衡高可用
- keepalived+nginx实现nginx的高可用
- nginx+keepalived高可用基础实现
- 大型网站分布式架构(十一)—— Keepalived+Nginx+Tomcat集群实现服务的高可用HA
- 用NginX+keepalived实现高可用的负载均衡
- keepalived+nginx实现双机热备的高可用
- 用NginX+keepalived实现高可用的负载均衡
- Nginx+keepalived(实现高可用)
- Keepalived+Nginx实现高可用(HA)
- 基于keepalived实现nginx的高可用
- 基于keepalived主从模型实现Nginx的高可用
- Keepalived + Nginx实现高可用 Web负载均衡