keepalived+nginx 双主架构

需求背景:

在https://editor.csdn.net/md/?articleId=115586364 中我们已经简要阐述了如何配置nginx高可用,对于一主一备的架构来说,主机服务正常的情况下,备机始终处于“空闲”的状态,为提供资源的利用率,可调整为双主架构,每个keepalived主机分别配置一个VIP的主,而另一个相应的配置成对方的BACKUP,这样正常状态下,每个keepalived主机都在提供服务。

一、环境说明

在这里插入图片描述

二、配置实现

1、192.168.10.134

[root@node1 keepalived]# cat keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id node1
}
vrrp_script chk_nginx {
	script "/data/sh/check_nginx.sh"
	interval 2
	weight -20
}

vrrp_instance VI_1 { ##配置第一个实例
    state MASTER
    interface ens33
    virtual_router_id 51 ##房间号,要与backup的一致
    priority 100 
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.16  #VIP地址
    }

	track_script {
		chk_nginx
	}
}
vrrp_instance VI_2 { ##配置第二个实例
    state BACKUP
    interface ens33
    virtual_router_id 52 ## 房间号要不同于第一个实例,并且与master保持一致
    priority 90 
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.17  ##配置第二个VIP
    }

	track_script {
		chk_nginx  ##配置检查脚本
	}
}

2、192.168.10.135

[root@node2 keepalived]# cat keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id node1
}
vrrp_script chk_nginx {
	script "/data/sh/check_nginx.sh"
	interval 2
	weight -20
}

vrrp_instance VI_1 {  #第一个实例,配置项均与134主机master配置项保持一致(priority应低于master)
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.16
    }

	track_script {
		chk_nginx
	}
}
vrrp_instance VI_2 { #第二个实例,配置项均与134主机backup配置项保持一致(priority应高于master)
    state MASTER
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.17
    }

	track_script {
		chk_nginx
	}
}

3、/data/sh/check_nginx.sh 脚本内容:

[root@node1 keepalived]# cat /data/sh/check_nginx.sh 
#!/bin/sh

killall -0 nginx &>/dev/null
if [[ $? -ne 0 ]];then
	exit 1
fi

三、测试

1、134、135 主机同时启动nginx、keepalived服务时:

134 绑定VIP1:192.168.10.16
keepalived+nginx 双主架构_第1张图片
135 绑定VIP2:192.168.10.17:
在这里插入图片描述

2、134 主机停止nginx服务:

134 解除VIP绑定:
在这里插入图片描述
135 绑定了VIP1、VIP2:
keepalived+nginx 双主架构_第2张图片

3、134 恢复nginx服务:

134 重新绑定VIP1:
keepalived+nginx 双主架构_第3张图片
135 仍然绑定VIP2:
keepalived+nginx 双主架构_第4张图片

4、135 停止nginx服务:

135 解除VIP2绑定:
在这里插入图片描述
134 绑定VIP1、VIP2:
keepalived+nginx 双主架构_第5张图片

四、总结

对于keepalived双主架构,能够提高服务器的资源利用率,在配置上需要注意:

  • Keepalived 配置文件必须设置不同的VRRP名称,同时优先级和VIP设置也各不相同;
  • Nginx网站总访问量为两台Nginx服务器之和,可以写脚本自动统计访问量;
  • 两台Nginx为Master,存在两个VIP地址,用户从外网访问VIP,需配置域名映射到两个VIP上方可。
  • 通过外网DNS映射不同VIP的方法也称为DNS负载均衡模式;
  • 可以通过Zabbix实时监控VIP访问状态是否正常。

你可能感兴趣的:(nginx)