收藏!LVS+Keepalived+Nginx高可用负载均衡

LVS负载均衡

  • Linux Virtual Server
  • 章文崇博士主导的开源负载均衡项目(原阿里架构)
  • LVS(ipvs)已经集成到Linux内核
  • 负载均衡调度器
  • LVS基于四层,工作效率更高

网络拓扑图

这是Nginx的拓扑图
收藏!LVS+Keepalived+Nginx高可用负载均衡_第1张图片
这是LVS拓扑图
收藏!LVS+Keepalived+Nginx高可用负载均衡_第2张图片
主要是使用IPVS去实现

LVS三种模式

LVS-NAT

收藏!LVS+Keepalived+Nginx高可用负载均衡_第3张图片
这是普通的模式,不适合并发特别大的情况
请求通过LVS服务器,导向不同的REAL Server去,响应结束还需要LVS服务器返回响应报文,是不高可用的一种方案

LVS-TUN

收藏!LVS+Keepalived+Nginx高可用负载均衡_第4张图片
上行请求,通过LVS,但是响应各自返回给浏览器端

但是这样的方案是通过隧道去实现的,这样的每个节点都需要一个公网IP,也就是说你的真是服务器被暴露在公网

LVS-DR

收藏!LVS+Keepalived+Nginx高可用负载均衡_第5张图片
通过这种DR模式,可以限制出口、入口,都走统一的路由出口,这样我们的服务器可以不用暴露在公网

配置虚拟IP

cd /etc/sysconfig/network-scripts/
ls
cp ifcfg-ens33 ifcfg-ens33:1
vim  ifcfg-ens33:1
#配置虚拟ip
ipaddr=xxx

service network restart
重新启动网络服务

下来安装ipvsadm

yum install ipvsadm
ipvsadm -Ln

使用lo构建虚拟ip
还在当前目录下,拷贝

cp ifcfg-lo ifcfg-lo:1
vim  ifcfg-lo:1

进去修改一下
收藏!LVS+Keepalived+Nginx高可用负载均衡_第6张图片

虚拟网络IP已经构建好,再找一台备机同样操作,两台机器都使用150做虚拟IP

APR通告行为

收藏!LVS+Keepalived+Nginx高可用负载均衡_第7张图片

如何配置apr通告行为

vim /etc/sysctl.conf

收藏!LVS+Keepalived+Nginx高可用负载均衡_第8张图片
刷新生效

sysctl -p

添加报文路由,返回的报文都给150

route add -host 192.168.1.150 dev lo:1
route -n

这样是重启会失效的,需要配置到/etc/rc.local

开启DR模式

[root@iZkpcpzbqiupj6Z ~]# ipvsadm -h
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
Usage:
  ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine]
  ipvsadm -D -t|u|f service-address
  ipvsadm -C
  ipvsadm -R
  ipvsadm -S [-n]
  ipvsadm -a|e -t|u|f service-address -r server-address [options]
  ipvsadm -d -t|u|f service-address -r server-address
  ipvsadm -L|l [options]
  ipvsadm -Z [-t|u|f service-address]
  ipvsadm --set tcp tcpfin udp
  ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]
  ipvsadm --stop-daemon state
  ipvsadm -h

Commands:
Either long or short options are allowed.
  --add-service     -A        add virtual service with options
  --edit-service    -E        edit virtual service with options
  --delete-service  -D        delete virtual service
  --clear           -C        clear the whole table
  --restore         -R        restore rules from stdin
  --save            -S        save rules to stdout
  --add-server      -a        add real server with options
  --edit-server     -e        edit real server with options
  --delete-server   -d        delete real server
  --list            -L|-l     list the table
  --zero            -Z        zero counters in a service or all services
  --set tcp tcpfin udp        set connection timeout values
  --start-daemon              start connection sync daemon
  --stop-daemon               stop connection sync daemon
  --help            -h        display this help message

先看看他的帮助文档
重点用-A -t

首先创建一个集群
ipvsadm -A -t 192.168.1.150:80 -s rr
添加集群节点

收藏!LVS+Keepalived+Nginx高可用负载均衡_第9张图片
如上图中我们就可以看到已经创建好两个节点了

持久化机制

LVS持久化会默认保存请求300s,300秒超过后才会开启一个轮训,不然你一直访问都是同一台机子

有两个地方可以设置

一般不要改懂这两个值,官方默认的还是非常合理的一个配置

使用Keepalived+LVS高可用

收藏!LVS+Keepalived+Nginx高可用负载均衡_第10张图片
可以使用keepalived配合LVS去实现LVS高可用方案
首先修改keepalived配置文件中VS配置,再添加响应的Nginx服务器

收藏!LVS+Keepalived+Nginx高可用负载均衡_第11张图片
设置健康检查
收藏!LVS+Keepalived+Nginx高可用负载均衡_第12张图片
以上就是主节点的创建
下来整个从节点
收藏!LVS+Keepalived+Nginx高可用负载均衡_第13张图片
修改router id与权重还有状态为备机

你可能感兴趣的:(LVS)