NAT实验
需求:实现同ip访问不同网页
主机 | IP |
---|---|
RS1 | 192.168.220.10 |
RS2 | 192.168.220.20 |
LVS | 192.192.220.30 |
配置RS1主机
#修改主机名
[root@localhost ~]# hostnamectl set-hostname RS1
[root@localhost ~]# bash
[root@RS1 ~]#
#查看ip
[root@RS1 ~]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:d2:6d:a2 brd ff:ff:ff:ff:ff:ff
inet 192.168.220.10/24 brd 192.168.220.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed2:6da2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
#关闭防火墙和selinux
[root@RS1 ~]# systemctl disable --now firewalld
[root@RS1 ~]# vim /etc/selinux/config
SELINUX=disabled
#安装httpd配置网页
[root@RS1 ~]# yum install httpd -y
[root@RS1 ~]# systemctl enable --now httpd
[root@RS1 ~]# echo 'RS1' > /var/www/html/index.html
[root@RS1 ~]# cat /var/www/html/index.html
RS1
#配置网卡
[root@RS1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.220.10
PREFIX=24
GATEWAY=192.168.220.30 //将网关指向调度器主机的ip
DNS1=114.114.114.114
[root@RS1 ~]# systemctl restart NetworkManager
访问测试网页
配置RS2主机
#修改主机名
[root@localhost ~]# hostnamectl set-hostname RS2
[root@localhost ~]# bash
[root@RS2 ~]#
#查看ip
[root@RS2 ~]# ip a s ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:db:88:69 brd ff:ff:ff:ff:ff:ff
inet 192.168.220.20/24 brd 192.168.220.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.220.155/24 brd 192.168.220.255 scope global secondary dynamic noprefixroute ens33
valid_lft 1781sec preferred_lft 1781sec
inet6 fe80::20c:29ff:fedb:8869/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@RS2 ~]#
# 关闭防火墙和selinux
[root@RS2 ~]# systemctl disable --now firewalld
[root@RS2 ~]# vim /etc/selinux/config
SELINUX=disabled
# 安装apache配置测试网页
[root@RS2 ~]# yum install httpd -y
[root@RS2 ~]# systemctl enable --now httpd
[root@RS2 ~]# echo 'RS2' > /var/www/html/index.html
[root@RS2 ~]# cat /var/www/html/index.html
RS2
#配置网卡
[root@RS2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.220.20
PREFIX=24
GATEWAY=192.168.220.30 //将网关指向调度器主机的ip
DNS1=114.114.114.114
[root@RS2 ~]# systemctl restart NetworkManager
访问测试网页
配置LVS主机
添加一块新网卡并设置为仅主机模式
#设置主机名
[root@localhost ~]# hostnamectl set-hostname LVS
[root@localhost ~]# bash
[root@LVS ~]#
#查看ip 可以看到新网卡为ens36 ip为192.168.222.132
[root@LVS ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:8c:8e:d5 brd ff:ff:ff:ff:ff:ff
inet 192.168.220.30/24 brd 192.168.220.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe8c:8ed5/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:8c:8e:df brd ff:ff:ff:ff:ff:ff
inet 192.168.222.132/24 brd 192.168.222.255 scope global dynamic noprefixroute ens36
valid_lft 1740sec preferred_lft 1740sec
inet6 fe80::31ba:1428:68c4:30fd/64 scope link noprefixroute
valid_lft forever preferred_lft forever
# 关闭防火墙和selinux
[root@LVS ~]# systemctl disable --now firewalld.service
[root@LVS ~]# vim /etc/selinux/config
SELINUX=disabled
# 开启ip转发功能
[root@LVS ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 //此行写道文件内
[root@LVS ~]# sysctl -p //读取让其生效
net.ipv4.ip_forward = 1
# 安装配置ipvsadm
[root@LVS ~]# yum install ipvsadm -y
[root@LVS ~]# ipvsadm -A -t 192.168.222.132:80 -s rr
[root@LVS ~]# ipvsadm -a -t 192.168.222.132:80 -r 192.168.220.10:80 -m
[root@LVS ~]# ipvsadm -a -t 192.168.222.132:80 -r 192.168.220.20:80 -m
[root@LVS ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@LVS ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.222.132:80 -s rr
-a -t 192.168.222.132:80 -r 192.168.220.10:80 -m -w 1
-a -t 192.168.222.132:80 -r 192.168.220.20:80 -m -w 1
[root@LVS ~]# 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.222.132:80 rr
-> 192.168.220.10:80 Masq 1 0 0
-> 192.168.220.20:80 Masq 1 0 0
[root@LVS ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 //删除dns的那一条
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.220.30
PREFIX=24
GATEWAY=192.168.220.2
[root@LVS ~]# systemctl restart NetworkManager
#访问测试
[root@LVS ~]# curl 192.168.222.132
RS2
[root@LVS ~]# curl 192.168.222.132
RS1
开启director的ip转发功能
在director上添加并保存规则:
ipvsadm -A -t vip:port -s rr
ipvsadm -a -t vip:port -r rip -m
ipvsadm -S > /etc/sysconfig/ipvsadm
浏览器访问测试网页
注:如果刷新页面不能访问 就开两个网页一起访问然后另外一个刷新就会变化
DR实验
要求:DR模式实现web站点负载均衡
主机 | IP |
---|---|
RS1 | 192.168.220.10 |
RS2 | 192.168.220.20 |
LVS | 192.192.220.30 |
配置RS1主机
#修改主机名
[root@localhost ~]# hostnamectl set-hostname RS1
[root@localhost ~]# bash
[root@RS1 ~]#
#查看ip
[root@RS1 ~]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:d2:6d:a2 brd ff:ff:ff:ff:ff:ff
inet 192.168.220.10/24 brd 192.168.220.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed2:6da2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
#关闭防火墙和selinux
[root@RS1 ~]# systemctl disable --now firewalld
[root@RS1 ~]# vim /etc/selinux/config
SELINUX=disabled
#安装httpd配置网页
[root@RS1 ~]# yum install httpd -y
[root@RS1 ~]# systemctl enable --now httpd
[root@RS1 ~]# echo 'RS1' > /var/www/html/index.html
[root@RS1 ~]# cat /var/www/html/index.html
RS1
访问测试网页
配置RS2主机
#修改主机名
[root@localhost ~]# hostnamectl set-hostname RS2
[root@localhost ~]# bash
[root@RS2 ~]#
#查看ip
[root@RS2 ~]# ip a s ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:db:88:69 brd ff:ff:ff:ff:ff:ff
inet 192.168.220.20/24 brd 192.168.220.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.220.155/24 brd 192.168.220.255 scope global secondary dynamic noprefixroute ens33
valid_lft 1781sec preferred_lft 1781sec
inet6 fe80::20c:29ff:fedb:8869/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@RS2 ~]#
# 关闭防火墙和selinux
[root@RS2 ~]# systemctl disable --now firewalld
[root@RS2 ~]# vim /etc/selinux/config
SELINUX=disabled
# 安装apache配置测试网页
[root@RS2 ~]# yum install httpd -y
[root@RS2 ~]# systemctl enable --now httpd
[root@RS2 ~]# echo 'RS2' > /var/www/html/index.html
[root@RS2 ~]# cat /var/www/html/index.html
RS2
访问测试网页
配置LVS主机
[root@localhost ~]# hostnamectl set-hostname LVS
[root@localhost ~]# bash
[root@LVS ~]#
# 关闭防火墙和selinux
[root@LVS ~]# systemctl disable --now firewalld.service
[root@LVS ~]# vim /etc/selinux/config
SELINUX=disabled
[root@LVS ~]# yum install net-tools -y //安装ifconfig命令的软件包
#查看网卡信息
[root@LVS ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.220.30 netmask 255.255.255.0 broadcast 192.168.220.255
inet6 fe80::20c:29ff:fe8c:8ed5 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:8c:8e:d5 txqueuelen 1000 (Ethernet)
RX packets 22818 bytes 18040359 (17.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17984 bytes 2669873 (2.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 配置dip
[root@LVS ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.220.30
PREFIX=24
GATEWAY=192.168.220.2
DNS1=114.114.114.114
#配置vip
[root@LVS ~]# ifconfig ens33:0 192.168.220.254/32 broadcast 192.168.220.254 up //配置vip为192.168.220.254 广播地址为192.168.220.254
#查看网卡
[root@LVS ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.220.30 netmask 255.255.255.0 broadcast 192.168.220.255
inet6 fe80::20c:29ff:fe8c:8ed5 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:8c:8e:d5 txqueuelen 1000 (Ethernet)
RX packets 31174 bytes 18679875 (17.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 30364 bytes 5067821 (4.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 //上面配置的vip
inet 192.168.220.254 netmask 0.0.0.0 broadcast 192.168.220.254
ether 00:0c:29:8c:8e:d5 txqueuelen 1000 (Ethernet)
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
配置RS1
注意:此处必须先修改网卡内核参数然后再配置vip,因为如果先配vip,vip配好后就会立马通告给别人,而修改内核参数就是为了不通告
配置RS1的rip
[root@RS1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.220.10
PREFIX=24
GATEWAY=192.168.220.2
DNS1=114.114.114.114
配置参数
[root@RS1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
配置vip
[root@RS1 ~]# ifconfig lo:0 192.168.220.254/32 broadcast 192.168.220.254 up
[root@RS1 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.220.10 netmask 255.255.255.0 broadcast 192.168.220.255
inet6 fe80::20c:29ff:fed2:6da2 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d2:6d:a2 txqueuelen 1000 (Ethernet)
RX packets 37460 bytes 2876407 (2.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56204 bytes 10689362 (10.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.220.254 netmask 0.0.0.0
loop txqueuelen 1000 (Local Loopback)
配置RS2
配置rip
[root@RS2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.220.20
PREFIX=24
GATEWAY=192.168.220.2
DNS1=114.114.114.114
配置参数
[root@RS2 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
配置vip
[root@RS2 ~]# ifconfig lo:0 192.168.220.254/32 broadcast 192.168.220.254 up
[root@RS2 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.220.20 netmask 255.255.255.0 broadcast 192.168.220.255
inet6 fe80::20c:29ff:fedb:8869 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:db:88:69 txqueuelen 1000 (Ethernet)
RX packets 39942 bytes 3059152 (2.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 59431 bytes 11212720 (10.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.220.254 netmask 0.0.0.0
loop txqueuelen 1000 (Local Loopback)
配置路由
调度器和RS主机上都需要做
[root@RS1 ~]# route add -host 192.168.220.254 dev lo:0 //RS1
[root@RS2 ~]# route add -host 192.168.220.254 dev lo:0 //RS2
[root@LVS ~]# route add -host 192.168.220.254 dev ens33:0 //LVS
配置调度器
[root@LVS ~]# yum install ipvsadm -y
[root@LVS ~]# ipvsadm -A -t 192.168.220.254:80 -s wrr
[root@LVS ~]# ipvsadm -a -t 192.168.220.254:80 -r 192.168.220.10:80 -g //-g dr模式
[root@LVS ~]# ipvsadm -a -t 192.168.220.254:80 -r 192.168.220.20:80 -g
[root@LVS ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@LVS ~]# 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.220.254:80 wrr
-> 192.168.220.10:80 Route 1 0 0
-> 192.168.220.20:80 Route 1 0 0
访问测试页面
cmd命令行访问