day27(lvs_nat模式与lvs_dr模式配置)

一、

核心:内核中的ipvs,ipvsadm
1、安装ipvsadm
[root@nat ~]# yum -y install ipvsadm
2、配置规则
查看所有的规则,如果已经配置好规则,重启之后也就没有了
[root@nat ~]# ipvsadm -L -n
 

1.配置vip网卡

    (1)在编辑虚拟网络中创建桥接模式的网卡,并且桥接到有网的适配器上。

查看自己本机WLAN所属网卡

1.在VM创建桥接模式网卡,将外部连接设置为WLAN所属网卡

2、添加新的网卡,自定义为刚才创建的桥接模式网卡。

在本虚拟机中重新添加一块网络适配器,并设置网络连接为刚设置的桥接模式的网卡

3、此时在虚拟主机中使用ifconfig无法找到新的网卡,ip a能够查看到新的ens36网卡。

查看所有网络
[root@nat ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group 
default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state 
UP group default qlen 1000
   link/ether 00:0c:29:f5:ea:0a brd ff:ff:ff:ff:ff:ff
   inet 10.0.0.10/24 brd 10.0.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
   inet6 fe80::3598:4e0:b43d:ccc8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state 
UP group default qlen 1000
   link/ether 00:0c:29:f5:ea:14 brd ff:ff:ff:ff:ff:ff
   inet 192.168.11.83/23 brd 192.168.11.255 scope global noprefixroute 
dynamic ens36
       valid_lft 7147sec preferred_lft 7147sec
inet6 fe80::8de7:6bd9:74a1:8f60/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4、编辑网卡配置
[root@nat ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 
/etc/sysconfig/network-scripts/ifcfg-ens36
[root@nat ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.10.101
NAME=ens36
UUID=d4cfa5ab-7c2a-4fab-b329-396b9b38b1bf
DEVICE=ens36
ONBOOT=yes
5、重启网络服务
[root@nat ~]# systemctl restart network
6、本机cmd测试192.168.10.101ip是否可以正常使用

2.添加规则

配置ipvs规则
[root@nat ~]# ipvsadm -A -t 192.168.10.101:80 -s rr 
# -A 选项表示添加一个新的服务。
# -t 192.168.10.101:80 指明了要处理的服务是目标地址为 192.168.10.101 ,端口为 80 的 
TCP 服务。
# -s rr 表示使用轮询(Round Robin)的调度算法。
[root@nat ~]# 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.10.101:80 rr
添加rs web01 web02 添加规则
[root@nat ~]# ipvsadm -a -t 192.168.10.101:80 -r 10.0.0.11:80 -m
# -a 选项用于添加一个真实服务器(Real Server)到指定的服务中。
# -t 192.168.10.101:80 表示要添加真实服务器的服务是目标地址为 192.168.10.101 ,端口
为 80 的 TCP 服务。
# -r 10.0.0.11:80 指明了要添加的真实服务器的地址为 10.0.0.11 ,端口为 80 。
# -m 表示使用 NAT(Network Address Translation,网络地址转换)模式。
[root@nat ~]# ipvsadm -a -t 192.168.10.101:80 -r 10.0.0.12:80 -m
[root@nat ~]# ipvsadm -Ln 
# -L 选项表示列出(List)规则。
# -n 选项表示以数字形式显示地址和端口,而不进行 DNS 解析,这样可以提高显示速度和准确性。
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.101:80 rr
  -> 10.0.0.11:80                 Masq    1      0          0         
  -> 10.0.0.12:80                 Masq    1      0          0  
# “TCP 192.168.10.101:80 rr” 表示这是一个 TCP 协议的服务,地址为 192.168.10.101,
端口为 80,使用的调度算法是轮询(rr)
# “-> 10.0.0.11:80 Masq 1 0 0” 表示后端的一个真实服务器地址为 10.0.0.11,端口为 
80,采用网络地址转换(Masq)模式,权重为 1,当前活跃连接数为 0,非活跃连接数为 0。
# “-> 10.0.0.12:80 Masq 1 0 0” 则是另一个后端真实服务器的配置信息,地址为 
10.0.0.12,端口为 80,同样是网络地址转换模式,权重为 1,活跃和非活跃连接数均为 0。
此时访问vip还无法访问到web01和web02

3.IP转发

[root@nat ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward=1
# net.ipv4.ip_forward=1 这个配置的作用是启用系统的 IP 转发功能。
# 当设置为 1 时,表示允许系统在不同的网络接口之间转发 IP 数据包。
[root@nat ~]# sysctl -p
net.ipv4.ip_forward = 1
# 使在 /etc/sysctl.conf 中所做的更改立即生效,而无需重新启动系统。
此时访问vip还无法访问到web01和web02

4.修改网关

临时修改web01和web02的网关,网关必须指向dip(调度服务器的对内ip)

要求rs的ip和dip要在同一个网段,因为dip是作为rs网关存在的
[root@web01 ~]# ip route del default 
# 删除系统中的默认路由
[root@web01 ~]# ip route add 10.0.0.0/24 via 10.0.0.10
# 添加一条新的路由规则
# 对于目标网络为 10.0.0.0/24 的数据包,将通过网关 10.0.0.10 进行转发
[root@web02 ~]# ip route del default
[root@web02 ~]# ip route add 10.0.0.0/24 via 10.0.0.10
此时访问vip可以访问到web01和web02

lvs-nat模式的优点是配置简单,缺点是请求和响应都必须经过ds,容易性能瓶颈
现在,希望请求时使用input链进行负载均衡,响应时不经过ds,直接由rs响应给客户端
在nat模式时,请求vip,接收vip响应。
构想 :请求vip,接收rip响应,这是不允许 使用lvs-dr模式
 

5.NAT模式脚本

# ds脚本
#!/bin/bash
#配置网卡
echo TYPE=Ethernet >> /etc/sysconfig/network-scripts/ifcfg-ens36 
echo BOOTPROTO=none >> /etc/sysconfig/network-scripts/ifcfg-ens36 
echo IPADDR=192.168.10.101 >> /etc/sysconfig/network-scripts/ifcfg-ens36
read -p "router name:" router_name
echo NAME='"$router_name"' >> /etc/sysconfig/network-scripts/ifcfg-ens36 
uuid=$( uuidgen )
echo UUID='"$uuidgen"' >> /etc/sysconfig/network-scripts/ifcfg-ens36 
echo DEVICE='"$router_name"' >> /etc/sysconfig/network-scripts/ifcfg-ens36 
echo ONBOOT=yes >> /etc/sysconfig/network-scripts/ifcfg-ens36 
#重启网络服务
systemctl restart network
#安装ipvsadm
yum list installed|grep ipvsadm
if [ $? —ne 0 ];then
 yum -y install ipvsadm
fi
#配置规则
read -p "vip:" vip
read -p "port:" port
read -p "rule:" rule
read -p "rip1:" rip1
read -p "rip2:" rip2
ipvsadm -A -t $vip:$port -s $rule
ipvsadm -a -t $vip:$port -r $rip1:$port -m
ipvsadm -a -t $vip:$port -r $rip2:$port -m
#ip转发
echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf
sysctl -p
#rs 脚本
#!/bin/bash
# 设置网关
read -p "dip:" dip
ip route del default
ip route add default via $dip
 

6.DR模式

(1)性能更优,回路不再经过ds
(2)ds和rs为了保证用户响应,都要求配置统一的vip
(3)由于rs是直接响应client,网关一定不能设置为ds的dip
(4)对rs的vip进行抑制,让ds的vip接收请求,rs的vip不接受请求

7.设置DR主机

1、在ds的ens33上挂一个vip10.0.0.101
[root@dr ~]# ifconfig ens33:0 10.0.0.101 broadcast 10.0.0.101 netmask 
255.255.255.255 up
# ifconfig 是用于配置网络接口的命令。
# ens33:0 是创建的虚拟接口名称。
# 10.0.0.101 是为该虚拟接口分配的 IP 地址。
# broadcast 10.0.0.101 指明了广播地址为 10.0.0.101 。
# netmask 255.255.255.255 表示子网掩码为 255.255.255.255 ,这实际上是一个单点广播地
址,通常用于特定的网络配置场景。
# up 表示启用该网络接口。
[root@dr ~]# route add -host 10.0.0.101 dev ens33:0
# 将目标主机地址为 10.0.0.101 的数据包通过网络接口 ens33:0 进行发送
# 10.0.0.101 dip
# 10.0.0.13 vip 在rs上的vip和这个vip相同
2、设置规范
# 安装ipvsadm
[root@dr ~]# yum -y install ipvsadm.x86_64 
# 设置规则
ipvsadm -A -t 10.0.0.101:80 -s rr
ipvsadm -a -t 10.0.0.101:80 -r 10.0.0.11 -g
# -a 选项表示添加(Add)一个真实服务器到已存在的服务中。
# -t 10.0.0.101:80 指明了要添加真实服务器的服务是目标地址为 10.0.0.101 ,端口为 80 的 
TCP 服务。
# -r 10.0.0.11 表示要添加的真实服务器地址为 10.0.0.11 。
# -g 表示使用直接路由(Direct Routing)模式。
ipvsadm -a -t 10.0.0.101:80 -r 10.0.0.12 -g
[root@dr ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.101:80 rr
  -> 10.0.0.11:80                 Route   1      0          0         
  -> 10.0.0.12:80                 Route   1      0          0 
# rs不再需要指定端口,dr不支持端口映射,vip上是80端口,最终就是80端口
# -m nat -g gateway

二、

1.设置rs主机

(1)在lo接口上绑定vip

[root@web01 ~]# ifconfig lo:0 10.0.0.101 broadcast 10.0.0.101 netmask 
255.255.255.255 up
# ifconfig 是用于配置网络接口的命令。
# lo:0 是创建的虚拟接口名称。
# 10.0.0.101 是为该虚拟接口分配的 IP 地址。
# broadcast 10.0.0.101 指明了广播地址为 10.0.0.101 。
# netmask 255.255.255.255 表示子网掩码为 255.255.255.255 ,这实际上是一个单点广播地
址,通常用于特定的网络配置场景。
# up 表示启用该网络接口。


(2)设置主机路由

[root@web01 ~]# route add -host 10.0.0.101 dev lo:0

[root@web01 ~]# ifconfig

(3)抑制rs的vip接受请求

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
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore :将本地回环接口(lo)的 
arp_ignore 参数设置为 1。当收到 ARP 请求时,如果目标 IP 不是本地接口的地址,则不回应。
# echo 2 > /proc/ssys/net/ipv4/conf/lo/arp_announce :将本地回环接口的 
arp_announce 参数设置为 2。在发送 ARP 报文时,尽可能使用能被其他主机路由到达的本地接口的 
IP 地址。
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore :将所有网络接口的 arp_ignore 
参数设置为 1。
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce :将所有网络接口的 
arp_announce 参数设置为 2。
# 限制某些情况下的 ARP 响应
# 1.不理睬非本机ip请求,2优先其他主机路由也就是如果其他主机路由可以到达本地,让他们走远路过来本地
 

(4)生成脚本,对web02使用

[root@web01 ~]# vim arp.sh 
ifconfig lo:0 10.0.0.101 broadcast 10.0.0.101 netmask 255.255.225.255 up
route add -host 10.0.0.101 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


2、测试

访问vip地址

[root@dr ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.101:80 rr
  -> 10.0.0.11:80                 Route   1      1          0         
  -> 10.0.0.12:80                 Route   1      2          0         
[root@dr ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts OutPkts InBytes 
OutBytes
  -> RemoteAddress:Port
TCP  10.0.0.101:80                       3       14        0     2661       
 0
  -> 10.0.0.11:80                        1       10        0     2477       
 0
  -> 10.0.0.12:80                        2        4        0      184       
 0
 

3、dr模式脚本

(1)dr脚本

#!/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
# 安装ipvsadm
yum list installed|grep ipvsadmm
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

(2)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
 

练习:对mysql的3306服务进行负载均衡

1、配置mysql主机 x.x.x.21,命名为master_mysql.xxx.xxx,激活并且添加数据库test
2、在test中添加表student id int 主键,自增,name 字符串类型 非空,grade 字符串 非空,domi 
varchar 非空
3、添加三行数据

4、配置mysql从服务,备份mysqlx.x.x.22的mysql服务,使用gtids同步事务
5、lvs对两台mysql主机进行rr负载均衡
6、使用python写一个脚本通过lvs ds主机读取mysql中的数据
7、自动化程度越高越好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值