LVS群集汇总,实现高可用

 

一、LVS的作用

备份冗余、负载均衡等

LVS负责选择闲置的RS,并把Client请求发给闲置的RS,让其处理请求。。。

二、LVS分类

NATDRTUN三种

2.1NAT具体配置

拓扑图

Client192.168.18.254/24

 

                  192.168.18.250/24LVS (router)192.168.19.250/24

 

                         Serverpool       RS1 192.168.19.1/24

                                       RS2 192.168.19.2/24

拓扑图讲解,当客户端访问服务时,则先把请求送到18.250,LVS接收到客户端请求,则指定闲置的RS,处理ARP请求,RS接受到请求后,则返回ARP应答。。

LVS上的RS(RealServer)

RS1  192.168.19.1/24   GW:192.168.19.250

echo 123> /var/www/html/index.html

 

RS2  192.168.19.2/24   GW:192.168.19.250

echo 456> /var/www/html/index.html

 

LVS上配置

LVS_18/19_250#rpm -ivh/mnt/Cluster/ipvsadm-1.24-10.i386.rpm

LVS_18/19_250#ipvsadm -A -t 192.168.18.250:80 -s rr

LVS_18/19_250#ipvsadm -a -t 192.168.18.250:80 -r192.168.19.1 -m

LVS_18/19_250#ipvsadm -a -t 192.168.18.250:80 -r192.168.19.2 m

打开路由功能

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

 

客户端配置、

Client:192.168.18.254/24       GW:192.168.18.250

 

TEST方式:

客户端访问:

Elinks http://192.168.18.250  -dump

123

Elinks http://192.168.18.250  -dump

456

 

NAT缺点:

1、LVS需要解析两次,负载过大,来回需要ARP解析两次

2.2Ipvsadm 参数详解

-A 是添加一个虚拟服务

-E  编辑这个虚拟服务

-D  删除这个虚拟服务

-S 保存这个虚拟服务

-a 增加一台RS

-e 从虚拟服务里编辑RS

-d 从虚拟服务里删除一台RS

-l  显示虚拟服务里的RS

-n  不解析域名显示虚拟服务里的RS

-c  显示客户端访问RS的详细信息

-C  清除虚拟服务里的RS

-t  TCP协议

-m  nat模式

-g  DR模式

-i  TUN模式

-s 是选择分发方式  分发方式主要的可分为以下几种

rr:最古板的算法

wrr:基于权重的最古板的算法

lc:对于新加入的RS,先把访问数量分配到和目前的RS的负载均衡值,再次进行rr分发

wlc:基于权重的lc

lblc:尽可能分发到同一台RS上面

sh:基于一个源ip,源ip首次被分发到哪台RS上,接下来就依次分发到这台RS上,直到这台RS无法承受压力时,再次选择其他的RS

dh:基于目标ip,永远分到同一个RS上

 

 

2.3DR 直连路由

如何解决NATLVS分发器的负载过重问题?

下面我们就通过一个拓扑图进行讲解,以补充NAT LVS负载过重的缺点。。

拓扑图

 

Client192.168.18.254/24

                 

192.168.18.250/24(router)192.168.19.250/24

                                  

                  LVS  192.168.19.200/24  GW: 192.168.19.250

                         VIP:192.168.19.254/24

 

Server pool       RS1 192.168.19.1/24   VIP 192.168.19.254/24 GW 19.254

              RS2 192.168.19.2/24   VIP 192.168.19.254/24 GW 19.254

 

想解决LVS单点负载过重的问题,首要解决2个问题

此问题已经决定LVS和RS必须在同一局域网内。。

第一、 把ARP应答包封为同一虚拟ip(19.254),供客户端进行访问,这样返回的信息客户端才能进行接收

第二、 如果都是同一ip,那么同一局域网内,则出现ARP混杂应答,当客户端访问服务时,则会出现多个同样的虚拟ip地址,因此则必须让RS闭嘴,让LVS发言,根据实际情况,让闲置的RS去提供服务,然后被命中的RS,则通过适当的ip地址19.254通过Router进行回包

1、客户端配置

192.168.18.254/24 GW 192.168.18.250

 

2、路由上配置

192.168.18.250/24 (router)192.168.19.250/24

打开路由功能

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

 

3、LVS配置

LVS_18/19_250#rpm -ivh/mnt/Cluster/ipvsadm-1.24-10.i386.rpm

LVS_18/19_250#ipvsadm -A -t 192.168.18.250:80 -s rr

LVS_18/19_250#ipvsadm -a -t 192.168.18.250:80 -r192.168.19.1 g

LVS_18/19_250#ipvsadm -a -t 192.168.18.250:80 -r192.168.19.2 g

Ifconfig eth0 192.168.19.200/24

route add default gw 192.168.19.250

ifconfig lo:1 192.168.19.254/24 broadcast192.168.19.255

route n 显示路由信息

 

4、RS1配置

Ifconfig eth0 192.168.19.1/24

ifconfig lo:1 192.168.19.254/24 broadcast192.168.19.255

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

arp_ignore 0 正常的ARP应答请求

           1 问我的我就回答,不是问我的广播的我就不回答,忽略ARP应答

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

arp_announce  2用最恰当的ip地址去回复arp应答请求

             

route add default gw 192.168.19.250

echo “123” > /var/www/html/index.html

5、RS2配置

Ifconfig eth0 192.168.19.2/24

ifconfig lo:1 192.168.19.254/24 broadcast192.168.19.255

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

arp_ignore 0 正常的ARP应答请求

           1 问我的我就回答,不是问我的广播的我就不回答

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

arp_announce  2用最恰当的ip地址去回复arp应答请求

route add default gw 192.168.19.250

echo “456”       /var/www/html/index.html

TEST测试:

TEST方式:

客户端访问:

Elinks http://192.168.18.250  -dump

123

Elinks http://192.168.18.250  -dump

456

DR缺点:

1、 DR不能解决广域网上的LVS架构

2、 LVS宕机时则无法完成架构

3、 RS宕机时,客户端访问时则会出现时好时坏的情况,而LVS则傻瓜式的仍在继续着轮流分发

2.4TUN

应用背景:如果DR中,不在同一地域内,则会出现无法实现不同局域网无法通信通信的状况,因此TUN则应运而生。

拓扑图

 

Client192.168.18.254/24

                 

192.168.18.250/24(router)192.168.19.250/24

                                  

                  LVS  192.168.19.200/24  GW: 192.168.19.250

                         VIP:192.168.19.254/24

 

Server pool       RS1 192.168.19.1/24   VIP 192.168.19.254/24 GW 19.254

              RS2 192.168.19.2/24   VIP 192.168.19.254/24 GW 19.254

1、客户端配置

192.168.18.254/24 GW 192.168.18.250

 

2、路由上配置

192.168.18.250/24 (router)192.168.19.250/24

打开路由功能

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

 

3、LVS配置

LVS_18/19_250#rpm -ivh/mnt/Cluster/ipvsadm-1.24-10.i386.rpm

LVS_18/19_250#ipvsadm -A -t 192.168.18.250:80 -s rr

LVS_18/19_250#ipvsadm -a -t 192.168.18.250:80 -r192.168.19.1 i

LVS_18/19_250#ipvsadm -a -t 192.168.18.250:80 -r192.168.19.2 i

Ifconfig eth0 192.168.19.200/24

route add default gw 192.168.19.250

ifconfig tunl0 192.168.19.254/24 broadcast192.168.19.255

route n 显示路由信息

 

4、RS1配置

Ifconfig eth0 192.168.19.1/24

ifconfig tunl0 192.168.19.254/24 broadcast192.168.19.255

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

arp_ignore 0 正常的ARP应答请求

           1 问我的我就回答,不是问我的广播的我就不回答

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

arp_announce  2用最恰当的ip地址去回复arp应答请求

             

route add default gw 192.168.19.250

echo “123” > /var/www/html/index.html

5、RS2配置

Ifconfig eth0 192.168.19.2/24

ifconfig tunl0 192.168.19.254/24 broadcast192.168.19.255

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

arp_ignore 0 正常的ARP应答请求

           1 问我的我就回答,不是问我的广播的我就不回答

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

arp_announce  2用最恰当的ip地址去回复arp应答请求

route add default gw 192.168.19.250

echo “456”       /var/www/html/index.html

TEST测试:

TEST方式:

客户端访问:

Elinks http://192.168.18.250  -dump

123

Elinks http://192.168.18.250  -dump

 

三、高可用性LVS架构

3.1、架构展现

                                               管理VIP(发放和回收)

2LVS+keeplived          监控LVS状态 224.0.0.18组播地址每1秒钟都发送侦听数据包

                                               监控RS,探针监控,LVS会每隔几秒钟会定时向RS请求服务。

 

                                               LVS119.200+keepalived GW19.250                  RS1         (19.1) GW19.250

C18.254   router 18/19.250           

GW 18.250                          LVS219.201+keepalived GW19.250                 RS2 (19.2) GW19.250

3.2LAB步骤

3.2.1、装keepalived软件

1、做链接文件

Kernel-devel 内核可发工具包,装keepailived时,系统会自动找/usr/src/linux这个链接文件

所以,kernel-devel必须要装

Ln     –s   /usr/src/kernels/2.6.18……./                            /usr/src/linux

2、装oepnssl

Yum –y install oepnssl*

4、  解压

tar -zxvf keepalived-1\[1\].1.17.tar.gz

5、  检测配置文件

./configure –prefix –prefix=/usr/lcaol/keepalived

Keepalivedconfiguration

------------------------

Keepalivedversion       : 1.1.17

Compiler                 : gcc

Compilerflags           : -g -O2

ExtraLib                : -lpopt -lssl-lcrypto

Use IPVS Framework       : Yes

IPVS sync daemon support : Yes

Use VRRP Framework       : Yes

UseLinkWatch            : No

Use Debug flags         : No

6、  make && make install

7、  cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

copy 主程序文件到/etc/init.d/

8、  cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

copy 第一个配置文件到/etc/sysconfig/

9、  建立mkdir/etc/keepalived/存放配置文件的目录,并上传配置文件到该目录

10Ln     -s    /usr/local/keepalived/sbin/*   /sbin/

建立存放keepalived.conf主配置文件的目录

3.2.2LVS1上编辑主配置文件

! Configuration File for keepalived

 

global_defs {

   router_id lvs

}

 

vrrp_sync_group http {

group {

          apache

         }

}

###以上是全局配置参数

###局部配置 pool1

vrrp_instance apache {

    state MASTER         ;  定义类型

    interfaceeth0           ;  使用接口

    virtual_router_id 51 ;虚拟路由id,每组一个

    priority 100         ;优先级

    advert_int 1         ;每隔1秒钟通告一次

   authentication {     ;验证

       auth_type PASS       ;验证类型

       auth_pass 1111       ;验证密码

    }

   virtual_ipaddress {  ;VIP

        192.168.19.254       ;VIP

    }

}

 

virtual_server 192.168.19.254 80 {

    delay_loop 6         ;探针时间间隔

    lb_algo rr           ;分发方式为rr

    lb_kind DR           ;LVS种类

    nat_mask255.255.255.0

#   persistence_timeout 50

    protocol TCP         ;所使用协议

 

    real_server192.168.19.1 80 { ;真是服务器ip地址

        weight 1                 ;权重

       TCP_CHECK {

             connect_timeout 3  ;超时时间

             connect_port 80    ;虚拟端口

            }

        }

    real_server192.168.19.2 80 {

        weight 1

       TCP_CHECK {

             connect_timeout 3

              connect_port80

            }

        }

}

 

 

 

 

####备份apache1

 

vrrp_instance apache1 {

    state BACKUP         ;  定义类型

    interfaceeth0           ;  使用接口

    virtual_router_id 51 ;虚拟路由id,每组一个

    priority 80          ;优先级

    advert_int 1         ;每隔1秒钟通告一次

   authentication {     ;验证

       auth_type PASS       ;验证类型

       auth_pass 1111       ;验证密码

    }

   virtual_ipaddress {  ;VIP

        192.168.19.253       ;VIP

    }

}

 

virtual_server 192.168.19.253 80 {

    delay_loop 6         ;探针时间间隔

    lb_algo rr           ;分发方式为rr

    lb_kind DR           ;LVS种类

    nat_mask255.255.255.0

#   persistence_timeout 50

    protocol TCP         ;所使用协议

 

    real_server192.168.19.3 80 { ;真是服务器ip地址

        weight 1                 ;权重

       TCP_CHECK {

             connect_timeout 3  ;超时时间

             connect_port 80    ;虚拟端口

            }

        }

    real_server192.168.19.4 80 {

        weight 1

       TCP_CHECK {

             connect_timeout 3

              connect_port80

            }

        }

}

 

3.2.3LVS2上编辑主配置文件

! Configuration File for keepalived

 

global_defs {

   router_id lvs

}

 

vrrp_sync_group http {

group {

          apache

         }

}

###以上是全局配置参数

###局部配置 apache

vrrp_instance apache {

    state BACKUP         ;  定义类型

    interfaceeth0           ;  使用接口

    virtual_router_id 51 ;虚拟路由id,每组一个

    priority 80          ;优先级

    advert_int 1         ;每隔1秒钟通告一次

   authentication {     ;验证

       auth_type PASS       ;验证类型

       auth_pass 1111       ;验证密码

    }

   virtual_ipaddress {  ;VIP

        192.168.19.254       ;VIP

    }

}

 

virtual_server 192.168.19.254 80 {

    delay_loop 6         ;探针时间间隔

    lb_algo rr           ;分发方式为rr

    lb_kind DR           ;LVS种类

    nat_mask255.255.255.0

#   persistence_timeout 50

    protocol TCP         ;所使用协议

 

    real_server192.168.19.1 80 { ;真是服务器ip地址

        weight 1                 ;权重

       TCP_CHECK {

             connect_timeout 3  ;超时时间

             connect_port 80    ;虚拟端口

            }

        }

    real_server192.168.19.2 80 {

        weight 1

       TCP_CHECK {

             connect_timeout 3

              connect_port80

            }

        }

}

 

 

 

 

####备份apache1

 

vrrp_instance apache1 {

    state MASTER         ;  定义类型

    interfaceeth0           ;  使用接口

    virtual_router_id 52 ;虚拟路由id,每组一个

    priority 100         ;优先级

    advert_int 1         ;每隔1秒钟通告一次

   authentication {     ;验证

       auth_type PASS       ;验证类型

       auth_pass 1111       ;验证密码

    }

   virtual_ipaddress {  ;VIP

        192.168.19.253       ;VIP

    }

}

 

virtual_server 192.168.19.253 80 {

    delay_loop 6         ;探针时间间隔

    lb_algo rr           ;分发方式为rr

    lb_kind DR           ;LVS种类

    nat_mask255.255.255.0

#   persistence_timeout 50

    protocol TCP         ;所使用协议

 

    real_server192.168.19.3 80 { ;真是服务器ip地址

        weight 1                 ;权重

       TCP_CHECK {

             connect_timeout 3  ;超时时间

             connect_port 80    ;虚拟端口

            }

        }

    real_server192.168.19.4 80 {

        weight 1

        TCP_CHECK {

             connect_timeout 3

              connect_port80

            }

        }

}

 

RS1上配置

Ifconfig eth0 192.168.19.1/24

ifconfig lo:1 192.168.19.254/24 broadcast192.168.19.255

echo 111>/var/www/html/index.html  

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

arp_ignore 0 正常的ARP应答请求

           1 问我的我就回答,不是问我的广播的我就不回答

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

arp_announce  2用最恰当的ip地址去回复arp应答请求

route add default gw 192.168.19.250

RS2上配置

Ifconfig eth0 192.168.19.2/24

ifconfig lo:1 192.168.19.254/24 broadcast192.168.19.255

echo 222>/var/www/html/index.html

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

arp_ignore 0 正常的ARP应答请求

           1 问我的我就回答,不是问我的广播的我就不回答

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

arp_announce  2用最恰当的ip地址去回复arp应答请求

route add default gw 192.168.19.250

 

R3上配置

Ifconfig eth0 192.168.19.3/24

ifconfig lo:1 192.168.19.253/24 broadcast192.168.19.255

echo 333>/var/www/html/index.html

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

arp_ignore 0 正常的ARP应答请求

           1 问我的我就回答,不是问我的广播的我就不回答

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

arp_announce  2用最恰当的ip地址去回复arp应答请求

route add default gw 192.168.19.250

 

R4上配置

Ifconfig eth0 192.168.19.4/24

ifconfig lo:1 192.168.19.253/24 broadcast192.168.19.255

echo 444>/var/www/html/index.html

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

arp_ignore 0 正常的ARP应答请求

           1 问我的我就回答,不是问我的广播的我就不回答

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

arp_announce  2用最恰当的ip地址去回复arp应答请求

route add default gw 192.168.19.250

 

测试

Elinks http://192.168.19.254  –dump

会出现111

Elinks http://192.168.19.254  –dump

会出现222

 

测试

Elinks http://192.168.19.253  –dump

会出现333

Elinks http://192.168.19.253  –dump

会出现444

Lvs1上,downeth0会自动切换到LVS2

Ifconfig eth0 down

 

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值