什么是集群?
通过网络将很多服务器集中起来,提供同一种服务,在客户端看来就像是只有一个服务器
一、nat集群
1、怎么样访问:
客户端先访问调度器,调度器经过自己的算法给web服务器,web服务器返还给调度器,调度器再将结果返还给客户端。将公网转换成私网。
2、调度器需要做什么?
下载软件包 ipvsadmyum -y install ipvsadm
创建集群,指定集群中的节点
ipvsadm -A -t 192.168.4.5:80 -s rr
ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100:80 -m
ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200:80 -m
开启路由功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
关闭防火墙,关闭selinux
3、web服务器:
下载软件包
关闭防火墙
dr集群
概述
客户端先访问调度器,调度器经过自己的算法给web服务器,web服务器直接返还给web服务器。最常用的。
2、调度器:
(1)配制ip地址
(2)创建集群,加入节点
(3)开启虚拟接口,vip地址
(4)关闭防火墙
3、web服务器:
伪装地址 vim /etc/sysconfig/network-scripts/ifcfg-lo:0
避免广播风暴:
此时还不能重启网络,因为会产生地址冲突,需要修改内核参数
[root@web1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
//前两行当有arp广播问谁是192.168.4.15时,本机忽略改ARP广播,不做任何回应,
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
//后两行本机不要向外宣告自己的lo回环地址是192.168.4.15
三、LVS-NAT集群
1、环境准备
启动3台虚拟机,禁用selinux和firewalld,挂载光盘文件并配置yum扩展源
此方案需要准备三台主机,一台lvs调度器,2台web服务器。
主机名
Ip地址
角色
Proxy
ens33: 192.168.4.5/24
ens37: 192.168.2.5/24
Lvs调度器
web1
ens33: 192.168.2.100/24
Web服务器
web2
ens33: 192.168.2.200/24
Web服务器
(1)配置web1主机的主机名、IP地址、yum
[root@localhost ~]# hostname web1
[root@localhost ~]# echo web1 > /etc/hostname
[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.address 192.168.2.100 /24 connection.autoconnect yes
[root@localhost ~]# nmcli connection up ens33
[root@localhost ~]# mount /dev/cdrom /mnt
[root@web1 ~]# vim /etc/fstab
/dev/cdrom /mnt iso9660 defaults 0 0
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# vim /etc/yum.repo.d/media.repo
[media]
name=media
baseurl=file:///mnt
enabled=1
gpgcheck=0
可以给web1创建一个快照,方便后期还原
使用web1主机克隆web2主机和lvs主机,给web2配置IP为192.168.2.200,修改主机名为web2。给lvs主机另外添加一块网卡,两块网卡ens33配置ip为192.168.4.5,ens37配置IP为192.168.2.5,主机名为lvs
(2)web2主机配置IP
[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.address 192.168.2.200/24 connection.autoconnect yes
[root@localhost ~]# nmcli connection up ens33
(3)lvs主机配置IP
[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.address 192.168.2.5/24 connection.autoconnect yes
[root@localhost ~]# nmcli connection up ens33
[root@localhost ~]# nmcli connection add ifname ens37 con-name ens37 type ethernet
[root@localhost ~]# nmcli connection modify ens37 ipv4.method manual ipv4.address 192.168.4.5/24 connection.autoconnect yes
[root@localhost ~]# nmcli connection up ens37
2、web1,web2部署web服务器
(1)Web1:部署httpd服务
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo 192.168.2.100 > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd
[root@web1 ~]# iptables -F #清空防火墙策略
[root@web1 ~]# setenforce 0
(2)Web2:部署httpd服务
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo 192.168.2.200 > /var/www/html/index.html
[root@web2 ~]# systemctl restart httpd
[root@web2 ~]# iptables -F
[root@web2 ~]# setenforce 0
3、配置LVS调度器
(1)安装ipvsadm
[root@lvs ~]# yum -y install ipvsadm
(2)创建虚拟服务器
[root@lvs ~]# ipvsadm -A -t 192.168.4.5:80 -s rr #rr为轮询算法
[root@lvs ~]# ipvsadm -Ln #查看集群规则
(3)添加real server
[root@lvs ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100:80 -m #默认是-g DR模式
[root@lvs ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200:80 -m
[root@lvs ~]# ipvsadm -Ln
算法使用的是轮询,给服务器加了权重也不会查看,加权轮询(wrr),加权最小连接(wlc)的时候才会查看
(4)Lvs开启路由转发
[root@lvs ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@lvs ~]# vim /etc/sysctl.conf //修改配置文件,设置永久规则
...
net.ipv4.ip_forward = 1
[root@lvs ~]# sysctl -p
[root@lvs ~]# iptables -F
[root@lvs ~]# setenforce 0
(5)Web1、Web2配置网关为2.5(实现跨网段通信)
[root@web1 ~]# nmcli connection modify ens33 ipv4.method manual ipv4.gateway 192.168.2.5
[root@web2 ~]# nmcli connection up ens33
[root@web2 ~]# nmcli connection modify ens33 ipv4.method manual ipv4.gateway 192.168.2.5
[root@web2 ~]# nmcli connection up ens33
使用浏览器访问192.168.4.5进行页面测试,或者在lvs主机:curl 192.168.4.5
四、LVS-DR集群
1、环境准备
主机名
Ip地址
角色
proxy
ens33 192.168.4.5/24
ens33:0 192.168.4.15/24
Lvs调度器
web1
ens37 192.168.4.100/24
lo:0 192.168.4.15/32
Web服务器
web2
ens37 192.168.4.200/24
lo:0 192.168.4.15/32
Web服务器
设置lvs服务器的VIP和DIP
配置DIP 地址4.5 之前已经配置好了,此时不用配置
配置Vip地址,注意:为了防止冲突,VIP必须要配置在网卡的虚拟接口!!!
[root@lvs ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33{,:0} #网卡需要找到192.168.4.5所对应的网卡(相当于:[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36:0)
[root@lvs ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
TYPE=Ethernet
BOOTPROTO=none
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.4.15
PREFIX=24
[root@lvs ~]# systemctl restart network
[root@lvs ~]# ifconfig #会有ens33:0的ip
Web1、web2部署httpd服务,查看端口是否启动(前面试验做过可不用配置,如果是新的机器,参考案例一搭建web服务)
[root@web1 ~]# ss -antlp | grep 80
[root@web2 ~]# ss -antlp | grep 80
给web1和web2在添加一块网卡,找到 编辑虚拟机-添加网络适配器-完成,点击网络适配器-网络连接选择自定义- vmnet4
[root@web1 ~]# ip a s #查看可以看到多出来的网卡
2、给web1配置RIP(真实的IP)
[root@web1 ~]# nmcli connection add con-name ens37 ifname ens37 type ethernet
[root@web1 ~]# nmcli connection modify ens37 ipv4.method manual ipv4.addresses 192.168.4.100/24 connection.autoconnect yes
[root@web1 ~]# nmcli connection up ens37
3、给web2配置RIP(真实的IP)
[root@web2 ~]# nmcli connection add con-name ens37 ifname ens37 type ethernet
[root@web2 ~]# nmcli connection modify ens37 ipv4.method manual ipv4.addresses 192.168.4.200/24 connection.autoconnect yes
[root@web2 ~]# nmcli connection up ens37
4、给web1伪装VIP地址
[root@web1 ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo{,:0}
[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.15 #ip地址
NETMASK=255.255.255.255 #子网掩码,强制4个255
NETWORK=192.168.4.15 #网络位
BROADCAST=192.168.4.15 #广播地址
ONBOOT=yes #开机启动
NAME=lo:0
此时还不能重启网络,因为会产生地址冲突,需要修改内核参数
[root@web1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
//前两行当有arp广播问谁是192.168.4.15时,本机忽略改ARP广播,不做任何回应,
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
//后两行本机不要向外宣告自己的lo回环地址是192.168.4.15
#当有arp广播问谁是192.168.4.15时,本机忽略改ARP广播,不做任何回应,
#本机不要向外宣告自己的lo回环地址是192.168.4.15
[root@web1 ~]# sysctl -p #使配置生效
[root@web1 ~]# systemctl restart network
5、给web2伪装VIP地址
[root@web1 ~]# scp /etc/sysconfig/network-scripts/ifcfg-lo:0 192.168.4.200:/etc/sysconfig/network-scripts/
[root@web1 ~]# scp /etc/sysctl.conf 192.168.4.200:/etc/
web2主机执行sysctl -p ,重启网络,使配置生效
[root@web2 ~]# sysctl -p
[root@web2 ~]# systemctl restart network
6、创建LVS-DR集群
lvs调度器安装软件并部署LVS-DR模式调度器
(1)安装软件(如果已经安装,此步骤可以忽略)
[root@lvs~]# yum -y install ipvsadm
(2)清理之前实验的规则,创建新的集群服务器规则
[root@lvs~]# ipvsadm -C #清空所有规则
[root@lvs ~]# ipvsadm -A -t 192.168.4.15:80 -s rr
(3)添加真实服务器(-g参数设置LVS工作模式为DR模式,默认为DR)
[root@lvs ~]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100 -g
[root@lvs ~]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200
[root@lvs ~]# ipvsadm -Ln
检查路由转发功能是否打开
[root@lvs ~]# cat /proc/sys/net/ipv4/ip_forward #1为开启,0为关闭
1
最后防火墙和selinux一定要关闭
使用浏览器访问192.168.4.15进行页面刷新测试