LVS(Linux 虚拟服务器)与keepalived的搭建

LVS/NAT:网络地址转换方式

1、客户端请求数据,目标IP为VIP

2、请求数据达到LB负载均衡服务器,LB根据自己的调度算法将目的地址修改为RIP地址及对应端口,并连接HASH表中记录下这个连接

3、数据报从LB负载均衡服务器到达RS服务器RS3

4、然后RS3进行响应。RS3的网关必须是LB负载均衡服务器的内网IP也就是DIP,然后将数据返回给LB服务器

5、LB收到RS的返回后的数据,根据连接HASH表修改源地址VIP和目的地址DIP

LVS(Linux 虚拟服务器)与keepalived的搭建

缺点:NAT模式中请求的报文和响应报文都需要通过LB负载均衡服务器,造成LB负载均衡服务器的IO大量增加,

优点:NAT模式中只需要给LB负载均衡服务器配置一个公网IP地址,但是RS服务器得跟LB负载均衡服务器在同一个内网

 

LVS/TUN:隧道方式

工作方式不再是变换地址了,而是将请求包作为数据报进行打包,发给WS服务器,WS服务器进行两次解包,再以此次响应数据包打包直接返回客户端,不再通过LB负载均衡服务器,解决了WS服务器跟LB负载均衡服务器必须在一个内网中的问题,且效率有所提高。

LVS(Linux 虚拟服务器)与keepalived的搭建

LVS/DR:直接路由方式

1、DR模式将报文直接路由给目标LB负载均衡服务器

2、LB负载均衡服务器根据各个真实服务器的负载情况,连接数多少等,动态选在一台服务器,不修改目标IP和目标端口,不封装IP报文,而是将请求报文的数据帧的目标MAC改为真实服务器的MAC地址

3、然后将修改后的数据帧在服务器组的局域网上发送。因为数据帧的MAC地址是真实服务器的MAC地址,并且又在同一局域网。那么根据局域网的通信原理,真实服务器一定能够收到由LB发出的数据报。真实服务器接收到请求数据包时,解开包头发现目标IP是VIP不是自己的(需要将WS服务器的本地回环接口上面配置为VIP,且为了防止ARP响应冲突,需要将WS服务器VIP的lo接口上的ARP响应关闭掉,这里使用arptables)

4、然后真实服务器做成请求响应,之后根据自己的路由信息将这个响应数据报发回给客户

LVS(Linux 虚拟服务器)与keepalived的搭建 

实现DR模式的LVs

首先在node01上运行:

ifconfig  eth0:3 192.168.88.60/24

echo "1" > /proc/sys/net/ipv4/ip_forward 

防止mac不对,但是IP地址正确的情况下,将数据报错误的扔掉。

yum install ipvsadm -y

 

 

在node2 和node 3都需要进行一下操作:

ifconfig  lo:8 192.168.88.60 netmask 255.255.255.255

cd /proc/sys/net/ipv4/conf/eth0/

对arp_ignore和arp_announce文件修改,让虚拟机接收mac地址为自己的数据报

echo 2 > arp_announce

echo 1 > arp_ignore

cd /proc/sys/net/ipv4/conf/all

echo 1 > arp_ignore

echo 2 > arp_announce

安装httpd

yum install httpd -y

在/var/www/html 下创建有标志的文件

service httpd start

 

在node1上运行:

ipvsadm -A -t 192.168.88.60:80 -s rr

ipvsadm -a -t 192.168.88.60:80 -r 192.168.88.62 -g

ipvsadm -a -t 192.168.88.60:80 -r 192.168.88.63 -g

ipvsadm 参数详解:
-C 清除表中所有的记录
-A --add-service在服务器列表中新添加一条新的虚拟服务器记录
-t 表示为tcp服务
-u 表示为udp服务
-s --scheduler 使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc
ipvsadm -A -t 192.168.20.100:80 -s rr

-a --add-server 在服务器表中添加一条新的真实主机记录
-t --tcp-service 说明虚拟服务器提供tcp服务
-u --udp-service 说明虚拟服务器提供udp服务
-r --real-server 真实服务器地址
-m --masquerading 指定LVS工作模式为NAT模式
-w --weight 真实服务器的权值
-g --gatewaying 指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-i --ipip 指定LVS的工作模式为隧道模式
-p 会话保持时间,定义流量呗转到同一个realserver的会话存留时间
ipvsadm -a -t 192.168.20.100:80 -r 192.168.20.102 -g

即可通过访问node1来调度到node2或node3

——————————————————当node1宕机的时候整个集群将无法使用,所以引用keepalived来确保node1宕机后有结点机来替换——————————————————

在node1上运行:

ifconfig eth0:3 down 

ipvsadm -C

yum install keepalived -y

在node4上运行:

yum install keepalived  ipvsadm -y 

在node1上打开/etc/keepalived/keepalived.conf文件

将virtual_ipaddress改为

virtual_ipaddress {

         #label相当于给网卡eth0起别名eth0:3
        192.168.88.60/24 dev eth0 label eth0:3
}

virtual service改为:

virtual_server 192.168.88.60 80 {
    delay_loop 6

    real_server 192.168.88.62 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.88.63 80 {
        weight 1
        HTTP_GET {
            url {
              path / 
              status_code 200
            }
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

}

修改完之后输入scp keepalived.conf node4:`pwd` 将文件传给node4 

最后打开keepalived服务即可


 

 

 

 

 

上一篇:LVS+KeepAlived+Nginx高可用实现方案


下一篇:计算机网络中的端口的定义:以port的本意去理解其真正含义。