nginx+keepalived负载均衡之高可用
来源:互联网 发布:网络媒介素养 名词解释 编辑:程序博客网 时间:2024/05/16 11:10
nginx为什么要用keepalived?
一家公司只用一台nginx服务器(master)是不够用的,通常来说还需要一台备胎(backup),当master出现宕机,backup就会启动替代master,那么backup是怎么知道master宕机了呢?keepalived就能解决这个问题,如下图:
什么是keepalived?
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障,keepalived是VRRP的完美实现。VRRP又是什么及keepalived的更加详细介绍可以下载:Keepalived权威指南中文.pdf
基本服务器宕机的主从切换配置步骤:
1、准备两台nginx服务器(一台为主nginx,一台为备nginx),分别安装keepalived
# yum –y install keepalived
2、修改主nginx下/etc/keepalived/keepalived.conf文件
# vi /etc/keepalived/keepalived.conf
主nginx下的keepalived.conf文件里面的意义及配置如下
! Configuration File for keepalived#全局配置global_defs { notification_email { XXX@XXX.com #指定keepalived在发生切换时需要发送email到的对象,一行一个 } notification_email_from XXX@XXX.com #指定发件人 #smtp_server XXX.smtp.com #指定smtp服务器地址 #smtp_connect_timeout 30 #指定smtp连接超时时间 router_id LVS_DEVEL #运行keepalived机器的一个标识}vrrp_instance VI_1 { state MASTER #标示状态为MASTER 备份机为BACKUP interface eth0 #设置实例绑定的网卡 virtual_router_id 51 #同一实例下virtual_router_id必须相同 priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99 advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #设置认证 auth_type PASS #主从服务器验证方式 auth_pass 8888 } virtual_ipaddress { #设置vip 192.168.17.10 #可以多个虚拟IP,换行即可 }}
3、修改备nginx下/etc/keepalived/keepalived.conf文件
# vi /etc/keepalived/keepalived.conf
配置备nginx时需要注意:需要修改state为BACKUP , priority比主nginx低,virtual_router_id和主nginx的值一致,具体配置如下:
! Configuration File for keepalived#全局配置global_defs { notification_email { XXX@XXX.com #指定keepalived在发生切换时需要发送email到的对象,一行一个 } notification_email_from XXX@XXX.com #指定发件人 #smtp_server XXX.smtp.com #指定smtp服务器地址 #smtp_connect_timeout 30 #指定smtp连接超时时间 router_id LVS_DEVEL #运行keepalived机器的一个标识}vrrp_instance VI_1 { state BACKUP #标示状态为MASTER 备份机为BACKUP interface eth0 #设置实例绑定的网卡 virtual_router_id 51 #同一实例下virtual_router_id必须相同 priority 99 #MASTER权重要高于BACKUP 比如BACKUP为99 advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #设置认证 auth_type PASS #主从服务器验证方式 auth_pass 8888 } virtual_ipaddress { #设置vip 192.168.17.10 #可以多个虚拟IP,换行即可 }}
此时如果主机宕机则备机会顶替主机获得虚拟ip
基于nginx进程死掉的主从切换配置
keepalived是通过检测keepalived进程是否存在判断服务器是否宕机,如果keepalived进程在但是nginx进程不在了那么keepalived是不会做主备切换,所以我们需要写个脚本来监控nginx进程是否存在,如果nginx不存在就将keepalived进程杀掉。
1、在主nginx上需要编写nginx进程检测脚本(check_nginx.sh),判断nginx进程是否存在,如果nginx不存在就将keepalived进程杀掉,check_nginx.sh内容如下:
#!/bin/bash# 如果进程中没有nginx则将keepalived进程kill掉A=`ps -C nginx --no-header |wc -l` ## 查看是否有 nginx进程 把值赋给变量A if [ $A -eq 0 ];then ## 如果没有进程值得为 零 service keepalived stop ## 则结束 keepalived 进程fi
2、将check_nginx.sh拷贝至/etc/keepalived下
# cp check_nginx.sh /etc/keepalived
3、注意修改/etc/keepalived/check_nginx.sh的可执行权限
# chmod 755 /etc/keepalived/check_nginx.sh
4、修改主nginx的keepalived.conf,添加脚本定义检测
# vi /etc/keepalived/keepalived.conf
修改内容如下,注意check_nginx配置:
#全局配置global_defs { notification_email { XXX@XXX.com #指定keepalived在发生切换时需要发送email到的对象,一行一个 } notification_email_from XXX@XXX.com #指定发件人 #smtp_server XXX.smtp.com #指定smtp服务器地址 #smtp_connect_timeout 30 #指定smtp连接超时时间 router_id LVS_DEVEL #运行keepalived机器的一个标识}vrrp_script check_nginx { script "/etc/keepalived/check_nginx.sh" ##监控脚本 interval 2 ##时间间隔,2秒 weight 2 ##权重}vrrp_instance VI_1 { state MASTER #标示状态为MASTER 备份机为BACKUP interface eth0 #设置实例绑定的网卡 virtual_router_id 51 #同一实例下virtual_router_id必须相同 priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99 advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #设置认证 auth_type PASS #主从服务器验证方式 auth_pass 8888 } track_script { check_nginx #监控脚本 } virtual_ipaddress { #设置vip 192.168.17.10 #可以多个虚拟IP,换行即可 }}
5、修改后重启keepalived
# service keepalived restart
测试
1、依次启动两个tomcat=>启动两个nginx=>启动两个keepalived,查看主机上是否有虚拟ip,比如:192.168.17.10
2、通过虚拟ip访问nignx,看页面是不是轮询两个tomcat
3、将主机的nginx进程kill掉,看看vip是不是切换到备机器上了
4、再次访问虚拟ip是不是还能轮询访问tomcat
- nginx+keepalived负载均衡之高可用
- Web负载均衡高可用之Nginx+Keepalived
- Nginx负载均衡高可用之keepalived安装
- Nginx负载均衡高可用之配置keepalived
- nginx+keepalived+lvs负载均衡之高可用
- Keepalived+LVS+Nginx负载均衡之高可用
- nginx+keepalived 高可用负载均衡
- nginx+keepalived实现高可用负载均衡
- nginx+keepalived 高可用负载均衡
- Keepalived+Nginx实现负载均衡高可用
- Nginx-keepalived高可用负载均衡
- Keepalived+Nginx实现负载均衡高可用
- Keepalived+Nginx实现负载均衡高可用
- Keepalived + nginx实现高可用负载均衡
- Nginx+keepalived 实现负载均衡,高可用
- Keepalived之——Keepalived + Nginx 实现高可用 Web 负载均衡
- 使用Nginx+KeepAlived构建高可用的负载均衡系统
- 用NginX+keepalived实现高可用的负载均衡
- 5、Linux系统的目录结构
- PHP的in_array() 函数使用详解
- XGBoost参数
- jdbc连接数据库
- Spring事务管理
- nginx+keepalived负载均衡之高可用
- Java多线程/并发05、synchronized应用实例:线程间操作共享数据
- 蓝桥杯 网络寻路
- EntityFramework 简单入个门
- 《深入分析JavaWeb技术内幕》读书笔记三.网络IO和NIO
- 线程同步、条件变量、互斥锁的使用
- 关于ubuntu下配置sublime为python编译环境的方法
- Vue.js自定义指令的用法与实例
- grub 修复mbr