本文章主要内容是:LVS的负载均衡(LB)集群

前言:

工作模式:NAT(网络地址转换),DR(直连路由模式),TUN(隧道)

LVS调度算法:轮询(RR),加权轮询(WRR),最少连接(LC)

加权最少连接(WLC),基于局部性的最少连接(LBLC),

带复制的基于局部性最少链接(LBLCR),目标地址散列(Dh)

源地址散列(sh),最短的期望的延迟(SED),最少队列调度(NQ)


一、LVS/NAT模式

NAT:地址转换(类似于DNAT)

 集群点跟director必须工作在同一个IP的网络中

 RIP通常是私有地址,仅用于各集群节点间的的通信

 director位于client和real server之间,并负责处理进出的所有通道。

 realserver必须将网关执行DIP

 director支持端口映射

 realserver可以使用任何类型的操作系统(os)

 较大规模应用场景中,director易成为系统瓶颈


1、准备四台服务器,我这里用rhel7.2,IP地址规划如下:

客户端:192.168.2.44,分发器为:2.45和4.45

网站服务器为:4.46和4.47

2、配置分发器:192.168.4.45,vim /etc/sysctl.conf  //路由转发

net.ipv4.ip_forward = 1

执行sysctl -p马上生效

3、配置网关地址:在两台服务器上修改网关地址

  GATEWAY=192.168.4.45

4、客户端配置网关(192.168.2.44):2.45

5、在两台网站服务器上安装web服务,设置开机启动

在分发器上配置:192.168.4.45

6、安装软件:yum -y install ipvsadm

7、配置LVS

ipvsadm -Ln //查看 n代表数字代表服务

ipvsadm -A -t 192.168.2.45:80 -s rr   //添加虚拟服务,

ipvsadm -a -t 192.168.2.45:80 -r 192.168.4.46:80 -m //添加真实IP,-m nat模式

ipvsadm -a -t 192.168.2.45:80 -r 192.168.4.47:80 -m

8、在客户端测试:2.44:elinks --dump http://192.168.2.45

9、watch -n 1 ipvsadm -Ln --stats,在分发器上查看状态

10、从虚拟服务里删除real server: ipvsadm -d -t 192.168.2.45:80 -r 192.168.4.46:80

11、修改调度算法:ipvsadm -E -t 192.168.2.45:80 -s wrr

12、修改权重:ipvsadm -e -t 192.168.2.45:80 -r 192.168.4.46:80 -w 3 -m

PS:由于在RHEL7里面save命令用不了,所以用下面大方法代替:

ipvsadm -C

ipvsadm -A -t 192.168.2.45:80 -s rr

ipvsadm -a -t 192.168.2.45:80 -r 192.168.4.46:80 -m

ipvsadm -a -t 192.168.2.45:80 -r 192.168.4.47:80 -m

把上面的语句写进  /etc/rc.local,然后执行下面的语句

echo /etc/rc.local >>~/.bash_profile &&  source /etc/profile  

//让/etc/rc.local里面的内容生效,并开机自启动


LVS-DR介绍:直接路由(及用于作为源地址)

 各集群节点跟director必须在同一个物理网络中;

 RIP可以使用公网地址,实现便携的远程管理和监控;

 director仅负责处理入站请求,形影报文则有realserver直接发往客户端

 realserver不能将网关指向DIP,而是直接指向前端网关;

 director不支持端口映射

 大多数操作系统能够用在realserver

 director能够处理更多的realserver

一、网站服务器配置:4.46和4.47

1、修改网络接口运行参数:cd /proc/sys/net/ipv4/conf/

 echo 1 > lo/arp_ignore  //忽略广播包

   echo 2 > lo/arp_announce   //兄弟接口接收和发送arp包

   echo 1 > all/arp_ignore

   echo 2 > all/arp_announce    

2、绑定VIP地址:4.253 vim /etc/rc.local

 ifconfig lo:1 192.168.4.253/32

二、配置分发器4.48

1、绑定VIP地址:4.253 vim /etc/rc.local

ifconfig eth0:1 192.168.4.253/32

2、添加虚拟服务,和realserver

ipvsadm -A -t 192.168.4.253:80 -s rr

ipvsadm -a -t 192.168.4.253:80 -r 192.168.4.46:80 -g

ipvsadm -a -t 192.168.4.253:80 -r 192.168.4.47:80 -g

3、测试:watch -n 1 ipvsadm -Ln --stats,在分发器上查看状态

 可以看到只有进来的数据,没有出去的数据

PS:

1、想永久生效,可以写到配置文件中

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

sysctl -p 读一下,使其生效

2、分发器的配置设置:

ipvsadm -C

ipvsadm -A -t 192.168.4.253:80 -s rr

ipvsadm -a -t 192.168.4.253:80 -r 192.168.4.46:80 -g

ipvsadm -a -t 192.168.4.253:80 -r 192.168.4.47:80 -g

把上面的语句写进  /etc/rc.local,然后执行下面的语句

echo /etc/rc.local >>~/.bash_profile &&  source /etc/profile  

//让/etc/rc.local里面的内容生效,并开机自启动