前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >负载均衡集群介绍,LVS介绍, LVS调度算法,LVS NAT模式搭建

负载均衡集群介绍,LVS介绍, LVS调度算法,LVS NAT模式搭建

作者头像
叶瑾
发布2018-06-14 12:14:29
1.2K0
发布2018-06-14 12:14:29
举报
文章被收录于专栏:linux系统运维linux系统运维

负载均衡集群介绍:

负载均衡集群:简单地说就是让多台服务器均衡地去承载压力。

实现负载均衡的开源软件有:LVS,keepalived,haproxy,nginx等

其中相对于(网络OSI七层模型),LVS属于四层,Nginx属于七层,haproxy既可以认为四层,也可以认为是七层。

keepalived的负载均衡功能其实就是lvs

lvs这种4层的负载均衡是可以分发出80外的其他端口通信的,比如Mysql,而七层nginx仅仅支持http.https,mail,haproxy也支持mysql这种。

相比较来说,LVS这种4层的更稳定,能承受更多的情趣,而Nginx这种7层的更加灵活,能实现更多的个性化需求。

LVS介绍:

LVS由国人章文嵩开发,流行度不亚于httpd,基于TCP/IP做的路由和转发,稳定性和效率很高

LVS有三种常见的模式:NAT,DR,IP Tunnel

LVS架构中有一个核心角色叫做分发器(Load Balancer),它用来分发用户的请求,还有诸多处理用户请求的服务器(RealServer,简称rs)

LVS的NAT模式:

这种模式借助iptables的nat表来实现,用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去。

rs需要设定网关为分发器的内网ip,用户请求的数据包和返回的用户的数据包全部经过分发器,所以分发器成为瓶颈。

优点:在NAT模式中,只需要分发器有公网Ip,分发器和rs之间可以用内网通信,所以比较节省公网ip资源

缺点:分发器成为瓶颈,请求量不能太大。规模保持在10台左右。

LVS IP Tunnel模式:

我们可以想象分发器和每个rs之间建立了一个虚拟通道。这种模式,需要有一个公共的IP配置在分发器和所有rs上,我们把它叫做vip,

原理是客户端请求的目标IP为vip,分发器接收到请求数据包后,会对数据包做一个交工,会把目标IP由vip更改为rs的IP,这样数据包就到了rs上。

rs接受数据包后,会还原原始数据包,这样目标IP为vip,因为所有的rs上配置了这样一个vip,所以它会认为是它自己。

LVS DR模式:

这种模式也需要一个公共的ip配置在分发器和所有rs上,也就是vip,

和IP Tunnel不同的是,它会把所有的MAC地址修改为rs的MAC,

rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认识是它自己。

LVS调度算法:

常用的4种

轮询:Round-Robin rr                        (任务均衡的分发到rs上)

加权轮询:Weight Round-Robin wrr                 (带权重的轮询,例如一个rs的配置好,你可以将它权重设置高一点)

最小连接:Least-Connection lc                     (把新的任务发送到请求数少的rs上)

加权最小连接:Weight Least-Connection wlc           (带权重的最小连接)

不常用的4种

基于局部性的最小连接:Locality-Based Least Connections lblc    

带复制的基于局部性最小链接:Locality-Based Least Connections with Replication lblcr

目标地址散列调度:Destination Hashing dh

源地址散列调度:Source Hashing sh

LVS NAT模式搭建:

准备3台机器

A机器为分发器,也叫调度器(简写为dir)

A机器 192.168.64.128         外网地址为192.168.64.128  (主机模式的网卡)

B机器  192.168.64.100

C机器  192.168.64.200

B机器和C机器的网关需要设置为192.168.209.132        (设置为和A机器的网卡IP一模一样)

A主机配置:

配置一下ens37主机模式的IP不需要设置网关

配置完成以后重启一下网卡

Windows上面可以成功ping通说明网络正常

然后接下来需要关闭三台机器的防火墙。(顺便都给三台机器装上 yum install -y iptables-services)

代码语言:javascript
复制
[root@aming-01 ~]# systemctl stop firewalld             #停止防火墙服务
[root@aming-01 ~]# systemctl disable firewalld         #彻底关闭防火墙
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@aming-01 ~]# iptables -nvL          # 查看防火墙规则,出现下面内容说明防火墙关闭
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

防火墙关闭完以后再关闭三台机器的selinux。

代码语言:javascript
复制
[root@aming-01 ~]# setenforce 0        #暂时关闭selinux
[root@aming-01 ~]# vi /etc/selinux/config              #保险起见修改配置文件永久关闭selinux

还需要把B和C机器的网关设置成A机器的IP

vi /etc/sysconfig/network-scripts/ifcfg-ens33      =配置IP

代码语言:javascript
复制
[root@aminglinux-03 ~]# route -n         #检测网关
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.209.132 0.0.0.0         UG    100    0        0 ens33
192.168.209.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

分发器上安装ipvsdam

代码语言:javascript
复制
[root@aming-01 sbin]# yum install -y ipvsadm              #在A(dir)机器只需要安装在A机器

然后在A机器上面编辑一个脚本

vim /usr/local/sbin/lvs_nat.sh

代码语言:javascript
复制
#脚本文件内容,注意区分自己的网卡名称
#! /bin/bash
# director 服务器上开启路由转发功下面一行就是
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向(伪装功能)
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字,阿铭的两个网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.133.0/24  -j MASQUERADE
# director设置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.147.144:80 -s rr        #表示算法上面有具体讲解
$IPVSADM -a -t 192.168.147.144:80 -r 192.168.133.132:80 -m -w 1
$IPVSADM -a -t 192.168.147.144:80 -r 192.168.133.133:80 -m -w 1

然后运行一下脚本,没有输出一般说明没问题

代码语言:javascript
复制
[root@aming-01 ~]# sh /usr/local/sbin/lvs_nat.sh

B和C机器上面都需要安装nginx服务

netstat -lntp 查看80端口是否是nginx 如果不是那么启动nginx服务

/etc/init.d/nginx start     = 启动nginx服务

B机器

C机器

测试: 如下说明搭建Ok

代码语言:javascript
复制
[root@aming-01 ~]# curl 192.168.64.128
aminglinx03
[root@aming-01 ~]# curl 192.168.64.128
aminglinux02
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 负载均衡集群介绍:
  • LVS介绍:
    • LVS的NAT模式:
      • LVS IP Tunnel模式:
        • LVS DR模式:
        • LVS调度算法:
        • LVS NAT模式搭建:
        相关产品与服务
        负载均衡
        负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档