2 LVS 调度算法
前面四个最常用
轮询 Round - Robin rr
加权轮询 Weight Round - Robin wrr
最小连接 Least -Connection lc 请求数少的
加权最小连接 Weight Least -Connection wlc
基于局部性的最小连接 Locality -Based Least Connections lblc
带复制的基于局部性的最小连接 Locality -Based Least Connections with Replication lblcr
目标地址散列调度 Destination Hashing dh
源地址散列调度 Source Hashing sh
3.NAT 模式搭建 --- 准备工作
三台机器 (IP 地址按照实际更改, 并增加网卡)
一台分发器, 也叫调度器 (简写为 dir)
内网: 133.133, 外网: 142.147(vmware 仅主机模式)
一台 RS1 (RS 需要设定网关为分发器的内网 IP)
内网: 133.132, 网关: 133.130
一台 RS2
内网: 133.133, 网关: 133.130
网关设置成分发器的 IP
三台机器上都需要关闭防火墙 iptables,getenforce
3.1 NAT 模式搭建 (网站规模不大, 节省公网 IP 资源, 设备不多)
在 dir 上安装 ipvsadm(只需分发器上安装, 实现 LVS 工具)
yum install -y ipvsdam
在 dir 上编写脚本, vim /usr/local/sbin/lvs_nat.sh // 内容如下
- #!/bin/bash
- #director 服务器上开启路由转发功能
echo1> /proc/sys/net/ipv4/ip_forward 对内核做调整开启路由转发
- # 关闭 icmp 的重定向
- echo0> /proc/sys/net/ipv4/conf/all/send_redirects
- echo0> /proc/sys/net/ipv4/conf/default/send_redirects
- # 注意区分网卡名字, 刚才设置两个网卡分别为 ens33 和 ens37 注意网卡名字
- echo0> /proc/sys/net/ipv4/conf/ens33/send_redirects
- echo0> /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.142.147:80 -s wlc -p 3 (-p 超时时间)
$IPVSADM -a -t 192.168.142.147:80 -r 192.168.133.132 -m -w 1 (-r rsIP,-w 权重 -m 是 nat 模式)
$IPVSADM -a -t 192.168.142.147:80 -r 192.168.133.133 -m -w 1
执行下该脚本 sh /usr/local/sbin/lvs_nat.sh 没有输出表示正常
效果测试
两台 RS 上都安装 Nginx
设置两台 RS 的主页, 做一个区分, 也就是说直接 curl 两台 RS 的 IP 时, 得到不同的结果
vim /usr/share/nginx/html/index.html 修改其内容两台需不同
curl localhost 查看
浏览器访问 192.168.142.147, 多次访问查看结果差异 (PS 注意浏览器缓存)
4.DR 模式搭建 -- 准备工作 (一般常用)
假设 133.130,133.132,133.133,133.200 为公网 IP
三台机器
分发器, 也叫调度器 (简写 dir) 133.130
- RS1 133.132
- RS2 133.133
- VIP(需绑定在所有机器上) 133.200
dir 上编写脚本 vim /usr/local/sbin/lvs_dr.sh // 内容如下
- #!/bin/bash
- echo 1> /proc/sys/net/ipv4/ip_forward
- ipv = /usr/sbin/ipvsadm
- vip = 192.168.133.200
- rs1 =192.168.133.132
- rs2 =192.168.133.133
- # 注意这里网卡的名字
- ifsown ens33
- ifup ens33
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up (绑定 VIP 命令)
- route add -host $vip dev ens33:2
- $ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -s r $rs1:80 -g -w 1 (-g 指 DR 模式)
$ipv -a -t $vip:80 -s r $rs2:80 -g -w 1
执行下脚本 sh /usr/local/sbin/lvs_dr.sh
两台 rs 上也编写脚本 vim /usr/local/sbin/lvs_rs.sh // 内容如下
- #!/bin/bash
- vip = 192.168.133.200
- # 把 vip 绑定在 lo 上, 是为了实现 rs 直接把结果返回给客户端
- ifdown lo
- ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
- route add -host $vip lo:0
- # 以下操作为更改 arp 内核参数, 目的是为了让 rs 顺利发送 mac 地址给客户端
- # 参考文档 www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
- echo "1"> /proc/sys/net/ipv4/conf/lo/arp_ignore
- echo "2"> /proc/sys/net/ipv4/conf/lo/arp_announce
- echo "1"> /proc/sys/net/ipv4/conf/all/arp_ignore
- echo "2"> /proc/sys/net/ipv4/conf/all/arp_announce
执行下脚本 sh /usr/local/sbin/lvs_dr.sh
分别在 dir 上和两个 rs 上执行这些脚本
测试如上
来源: http://www.bubuko.com/infodetail-2697805.html