LVS调度

什么是集群?

通过网络将很多服务器集中起来,提供同一种服务,在客户端看来就像是只有一个服务器

一、nat集群

1、怎么样访问:

客户端先访问调度器,调度器经过自己的算法给web服务器,web服务器返还给调度器,调度器再将结果返还给客户端。将公网转换成私网。

2、调度器需要做什么?

1)下载软件包 ipvsadmyum -y install ipvsadm

2)创建集群,指定集群中的节点

 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

3)开启路由功能

       vim /etc/sysctl.conf  

          net.ipv4.ip_forward = 1

4)关闭防火墙,关闭selinux

3、web服务器:

1)下载软件包

2)关闭防火墙

二、dr集群

1、概述

客户端先访问调度器,调度器经过自己的算法给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)创建虚拟服务器

LVS调度_第1张图片

[root@lvs ~]# ipvsadm -A -t 192.168.4.5:80 -s rr #rr为轮询算法

[root@lvs ~]# ipvsadm -Ln #查看集群规则

(3)添加real server

LVS调度_第2张图片

[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进行页面刷新测试

你可能感兴趣的:(lvs)