python flask nginx keepalived 实现负载均衡

最近在部署一个flask服务,要了两台服务器尝试了一下负载均衡

环境:Centos,python3,flask,nginx,keepalived,

确保上述包安装成功

首先实现nginx的负载均衡140.143.66.123:90是我的主机,端口90是因为flask服务监听的是90端口,权重为2/3,意思是每三次请求有两次会发送到这台机器上。

listen   8000;是值nginx监听8000端口

location   下的proxy_pass  http://flask_server;是指定nginx将请求分发到的地址,之后重启nginx服务

service nginx stop

service nginx start

这是成功后的效果。红箭头请求服务器nginx监听的8000端口,黄箭头是处理请求的服务器地址,蓝箭头是发送请求的地址。

这时可以看到nginx会把请求分发到两台服务器做处理。

那接下来就会有一个问题,如果我主机挂了,那服务也将随之停止,备用机是无法提供服务的。为了解决这一问题我使用了keepalived实现主备模式。(两台服务器都需配置nginx,keepalived)

先解释一下keepalived设计思路。首先keepalived会将两台服务器区分主备,并且主备服务器都将提供一个或者几个相同的虚拟ip,这时用户访问地址会解析到主机的虚拟ip,请求也将到达主机的nginx上,nginx再把请求分发到不同的处理请求的服务器上。

主机正常工作时,备用机会持续监听主机“心跳”,一旦主机“心跳”停止,keepalived会将虚拟ip解析到备用机上,用户感受不到主机宕机,而备用机的nginx配置和主机相同,会继续分发请求。

下面是主机备机keepalived配置箭头注意主备不同的地方,etho网卡标识,用ifconfig查看

我们来看一下效果,当两台服务器keepalived都开启时。我们可以看到主机网卡绑定了设置的虚拟ip,而备用机还是自己的内网ip

当主机keepalived的“心跳”停止时。我们可以看到主机绑定恢复了自己内网ip,而备用机绑定到了虚拟ip。这就实现了主备模式。

ps:在配置keepalived过程中出现的问题,当两台服务器keepalived都正常时,主机备用机都绑定了虚拟ip。网上很多人说是防火墙的原因需要配置防火墙。我没有配置而是修改了默认的virtual_router_id。再重启keepalived,就正常了。

个人搭建的肿瘤社区http://www.h2cancer.com/希望能为肿瘤患者提供一个交流互助的平台

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值