lvs
安装lvs
配置规则,查看所有的规则,如果已经配置好规则,重启之后就没了
[root@ds01 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
配置vip网卡
1.在编辑虚拟网络中创建桥接模式的网卡,并且桥接到有网的适配器上
2.在vmware的虚拟主机资源管理器找到虚拟主机,右键菜单,设置
3.添加新的网卡,自定义为刚才创建的桥接模式网卡
4.此时在虚拟主机中使用ifconfig无法找到新的网卡
5.ip 啊能够查看到新的ens36网卡,没有路由
6.编辑网卡配置
7.重启network服务
配置ipvs规则
[root@ds01 ~]# ipvsadm -A -t 192.168.2.173:80 -s rr
[root@ds01 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.173:80 rr
添加rs web01 web02 添加规则[root@ds01 ~]# ipvsadm -a -t 192.168.2.173:80 -r 192.168.2.32:80 -m
[root@ds01 ~]# ipvsadm -a -t 192.168.2.173:80 -r 192.168.2.33:80 -m
[root@ds01 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.173:80 rr
-> 192.168.2.32:80 Masq 1 0 0
-> 192.168.2.33:80 Masq 1 0 0
[root@ds01 ~]# vim /etc/sysctl.conf[root@ds01 ~]# sysctl -p
net.ipv4.ip_forward = 1 说明已经支持ip转发了
在web01主机和web02主机上临时修改网关,网关必须只想dip(调度服务器的对内的ip)
[root@web01 ~]# route del default
[root@web01 ~]# route add default gw 192.168.2.126 这个ip是ds01上ens160上的ip
这也要求了rs ip 和dip在同一个网段上面,因为dip是要作为网关存在的
lvs-nat模式的优点是配置简单,缺点是请求和响应都必须经过ds,容易称为瓶颈期
请求的时候使用input链进行负载均衡,响应的时候就不要警告ds,直接由rs响应给客户端
在nat模式的时候,请求vip,接受vip的响应
构想 请求vip,接收rip的响应,这是不允许的
ds脚本
DR模式(不支持端口映射)
1.性能更优,回路不在经过ds
2.ds和rs为了保证用户响应,都要求配置统一的vip
3.由于rs是直接响应client,网关一定不能设置为ds的dip
4.对rs的vip进行抑制,让ds的vip接收请求,让rs的vip不接收请求
1.ds上ens160网卡上挂一个虚拟的vip 192.168.2.35
[root@dr ~]# ifconfig ens160:0 192.168.2.36 broadcast 192.168.2.36 netmask 255.255.255.0 up
[root@ds01 ~]# route add -host 192.168.2.36 dev ens160:0 也能够在这里接收数据包
192.168.2.137 dip
192.168.2.35 vip 在rs上的vip和这个vip相同
2.设置规范ipvsadm
[root@ds01 ~]# yum -y insatll ipvsadm
设置规则
ipvs -A -t 192.168.2.137:80 -s rr
ipvsadm -a -t 192.168.2.137:80 -r 192.168.2.32 -g
ipvsadm -a -t 192.168.2.137:80 -r 192.168.2.33 -g
rs不需要指定端口,dr不支持端口映射,vip是80端口,
设置rs主机
在lo接口上挂载一个vip
1.在lo接口上绑定vip
[root@web01 ~]# ifconfig lo:0 10.1.1.102 broadcast 10.1.1.102 netmask 255.255.255.255 up
2.设置主机路由
3.抑制rs接收请求
4.生成脚本,对web02使用
# 安装ipvsadm yum -y install ipvsadm
$ 设置规则
ipvsadm -A -t 10.1.1.102:80 -s rr
ipvsadm -a -t 10.1.1.102:80 -r 10.1.1.200 -g
ipvsadm -a -t 10.1.1.102:80 -r 10.1.1.201 -g
# rs不在需要指定端口,dr不支持端口映射,vip上是80端口,最终就是80端 口
# -m nat -g gateway
[root@web01 ~]# ifconfig lo:0 10.1.1.102 broadcast 10.1.1.102 netmask 255.255.255.255 up [root@web01 ~]# route add -host 10.1.1.102 dev lo:0
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
5.测试使用,查看状态
[root@dr03 ~]# ipvsadm -Ln --stats
ds脚本
#!/bin/bash
#在ens33上挂载一个ip地址
read -p "vip:" vip
read -p "mac:" mac
read -p "num" num
ifconfig $mac:$num $vip broadcast $vip netmask 255.255.255.255
# 主机路由
route add -host $vip dev $mac:$num rs
#安装ipvsadm
yum list installed|grep ipvsadm if [ $? -ne 0 ] ; then
yum -y install ipvsadm fi
#配置规则(不需要设置ip_forword)
ipvsadm -C read -p "rule:" rule
read -p "port:" port ipvsadm -A -t $vip:$port -s $rule
read -p "rip1:" rip1 ipvsadm -a -t $vip:$port -r $rip1 -g
read -p "rip2:" rip2 ipvsadm -a -t $vip:$port -r $rip2 -g
rs脚本
#!/bin/bash
#在ens33上挂载一个ip地址
read -p "vip:" vip read -p "mac:" mac
read -p "num" num
ifconfig $mac:$num $vip broadcast $vip netmask 255.255.255.255
# 主机路由
route add -host $vip dev $mac:$num
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