三台服务器A、B、C:
1、A:load balancer
(调度器dir,分发器)
内网网卡:192.168.31.128,网关保持不变(192.168.31.2)
外网网卡:192.168.229.128,先不用理会,这里用不到
setenforce 0 #关闭selinux
systemctl stop firewalld #停止firewalld
systemctl disable firewalld #关闭firewalld
yum install -y iptables-services #安装iptables
systemctl enable iptables #添加iptables服务
systemctl start iptables.service #启动iptables服务
iptables -F #清空iptables规则
service iptables save #保存空规则
yum -y install ipvsadm net-tools
1、创建LVS的DR规则脚本
写入以下内容:
vim /usr/local/sbin/lvs_dr.sh
echo 1 > /proc/sys/net/ipv4/ip_forward #打开路由转发(临时生效,永久生效,vi /etc/sysctl.conf添加net.ipv4.ip_forward=1,再执行sysctl -p使其生效)
ipv=/usr/sbin/ipvsadm #设置ipvsadm变量
vip=192.168.31.200 #设置公用ip变量(virtual ip)
rs1=192.168.31.129 #设置real serverlip的变量
rs2=192.168.31.130 #设置real server2ip的变量
net="ens33"
ifdown $net #关闭网卡
ifup $net #启动网卡,目的时清空临时设定的ip,避免重复设定
ifconfig ${net}:2 $vip broadcast $vip netmask 255.255.255.255 up #绑定vip到虚拟网卡上
route add -host $vip dev ${net}:2 #为ens33:2添加网卡
$ipv -C #清空
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 2
2、给脚本设权
chmod 755 /usr/local/sbin/lvs_dr.sh
route -n #查看路由
ip a
3、执行脚本
sh /usr/local/sbin/lvs_dr.sh
4、查看路由上的ip
route -n #对比上面的路由
5、查看网卡ens33上的vip
ip addr
LVS ipvsadm命令的使用
1、LVS-server 安装lvs 管理软件
yum -y install ipvsadm
程序包:ipvsadm(LVS管理工具)
Unit File:ipvsadm.service
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
2、命令选项
-A --add-service #在服务器列表中新添加一条新的虚拟服务器记录
-t #表示为tcp服务
-u #表示为udp服务
-s --scheduler #使用的调度算法,rr | wrr | 1c | wlc |1b1b|1blcr |dh | sh | sed|ng 默认调度算法是w1c
例:ipvsadm -A -t 192.168.1.2:80 -s wrr
-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 --ip #指定LVS的工作模式为隧道模式
-p #会话保持时间,定义流量被转到同一个realserver的会话存留时间
例:ipvsadm -a -t 192.168.1.2:80 -r 192.168.2.10:80 -m -w 1
-E -edit-service #编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D -delete-service #删除内核虚拟服务器表中的一条虚拟服务器记录。
-C -clear #清除内核虚拟服务器表中的所有记录。
-R -restore #恢复虚拟服务器规则
-S -save #保存虚拟服务器规则,输出为-R选项可读的格式
-e -edit-server #编辑一条虚拟服务器记录中的某条真实服务器记录
-d -delete-server #删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l -list #显示内核虚拟服务器表
--numeric,-n: #以数字形式输出地址和端口号
--numeric,-n: #以数字形式输出地址和端口号
--exact: #扩展信息,精确值
--connection,-c: #当前IPVS连接输出
--stats: #统计信息
--rate: #输出速率信息
参数也可以从/proc/net/ip_vs*映射文件中查看
-z -zero #虚拟服务表计数器清零(清空当前的连接数量等)
2、B:real server
(web服务器)内网网卡:192.168.31.130
安装nginx,并启动,在默认主页里写入,real server 1关闭selinux,清空防火墙规则
yum-y install net-tools
vim /usr/local/sbin/lvs_rs.sh
#/bin/bash
vip=192.168.31.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up #绑定vip到虚拟网卡lo:0上
route add -host $vip lo:0为lo:0网卡添加网关
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
echd "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
2、给脚本设权
chmod 755 /usr/1ocal/sbin/lvs_rs.sh
3、执行脚本
sh /usr/local/sbin/lvs_rs.sh
4、查看路由上的vip
route -n
5、查看网卡lo上的vip
ip addr
3、C:real server
(web服务器)内网网卡:192.168.31.130
安装nginx,并启动,在默认主页里写入,real server2关闭selinux,清空防火墙规则
1、创建转发脚本(也可以从B,scp拷贝过来)
yum -y install net-tools
vim /usr/local/sbin/lvs_rs.sh
#/bin/bash
vip=192.168.31.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up #绑定vip到虚拟网卡lo:0上
route add -host $vip lo:0为lo:0网卡添加网关
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
echd "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
3台机器执行yum install -y nginx
修改默认配置页面
B:echo “rs1” >/usr/share/nginx/html
C:echo “rs2” >/usr/share/nginx/html
浏览器测试192.168.31.200
vi /etc/nginx/nginx.conf
keepalive默认保持会话时间是65s
要修改为0才会马上生效
刷新rs1 1次
rs2 2次