目录

一、LVS

负载均衡的结构

LVS三种工作模式

LVS调度算法

ipvsadm工具

二、KEEPALIVED

KEEPALIVED作用

KEEPALIVED原理

KEEPALIVED工作模式

KEEPLIVED问题及优化

三、LVS+KEEPALIVED架构实现

实验目的

实验拓扑

实验准备

实验过程

实验结果检验

一、LVS

负载均衡的结构

①负载调度器:LVS即四层(传输层)负载均衡,根据算法调度用户请求给业务服务器处理

②业务服务器池:真正处理用户请求的业务服务器集群

LVS三种工作模式

①LVS-NAT:DNAT原理,缺点是路由器转发修改mac地址压力过大。

②LVS-DR:每台服务器都配置虚拟ip,通过改写请求报文中的mac地址来实现。

③IP隧道:转发时借助隧道。

LVS调度算法

①RR:轮询,每个服务器分配一次反复轮询。

②LC:最小连接数轮询,查看那个服务器处理的请求最少则处理,以此类推。

③WRR:加权轮询,根据管理员给每个服务器添加的weight权重分配用户请求任务,默认全部是1。

④SH:session或者源地址hash分配,通过用户来源地址hash算法将分配给固定的服务器处理。

⑤DH:模板地址hash,通过用户访问目的地址hash算法将,分配给固定的服务器处理。

⑥WLC:加权最小连接数

ipvsadm工具

ipvsadm是LVS负载均衡的真实服务名称。

-A 添加虚拟服务器

-D 删除整个虚拟机服务器

-s 指定负载调度算法

-a 添加真实服务器

-d 删除某个节点

-t 指定VIP地址及TCP端口

-r 指定RIP地址及TCP端口

-w 设置权重

-l 列表查看LVS虚拟服务器‘

-n 以数字形式显示地址

-m 指定nat模式

-g 指定DR模式

-C 清空策略

二、KEEPALIVED

KEEPALIVED作用

保证负载均衡的高可用性,完美解决了LVS所有问题,可以检查后端服务器池种的服务器健康。

KEEPALIVED原理

利用VRRP协议原理,主备模式通过优先级判断谁是主谁是备。备机是否切换为主机依靠的是主备之间的心跳线。

KEEPALIVED工作模式

①抢占模式(默认模式):主坏了之后直接切换备为主服务器,主修好后直接抢占回主服务器。

②延时抢占模式:主坏了之后直接切换备为主服务器,主修好后检查是否完全稳定后再抢占回主服务器。

③不抢占模式:主坏了之后切换备为主服务器,原来的主服务器修好也不会再抢占为主服务器。

④心跳线模式:主备服务器之间心跳线模式默认是广播模式,可以根据需求改为组播或者单播模式。

KEEPLIVED问题及优化

①默认是抢占模式,根据需求改为非抢占模式或延时抢占模式。

②心跳线默认是广播模式,根据需求改为组播或单播模式。

③脑裂:备机由于种种原因收不到主机发送的心跳线,导致用户不知道访问那个服务器。例如:防火墙拦截心跳线广播报文、主备之间物理网线心跳线断裂等。

④日志分隔:keepalived的默认日志在/var/log/message里,通过修改 /etc/sysconfig/keepalived中参数KEEPALIVED_OPTIONS="-D -S local数字" ,并利用rsyslog将日志分隔出来。

三、LVS+KEEPALIVED架构实现

实验目的

①通过客户端访问LVS高可用集群虚IP 192.168.30.100可以访问到NFS业务服务器的内容。

②当LVS_01负载均衡断开服务后,LVS_02可以进行备用,不影响用户访问业务。

③当WEB1或者WEB2关闭服务后,另外一台服务器可以正常访问业务。

实验拓扑

 

实验准备

①1台客户机用于访问业务,IP地址192.168.30.10。

②2台LVS负载均衡,并使用keepalived做成高可用,LVS_01 IP地址:192.168.30.14,LVS_02 IP地址:192.168.30.15。

③2台nginx web代理服务器安装nginx并将nfs服务器内容挂载到默认目录,web1 IP地址:192.168.30.12,web2 IP地址:192.168.30.13。

④NFS业务服务器创建文件夹共享给web1和web2,内容为"this  is   nfs  share"

实验过程

①关闭所有服务器firewalld.service和selinux

systemctl stop firewalld.service

setenforce 0

②NFS业务服务器配置,创建共享文件夹 /share,并在/share文件夹中创建index.html文件,输入内容为"this  is  nfs  share"

mkdir /share

#创建共享文件夹

echo "this is nfs share">/share/index.html

#创建共享文件内容

vim /etc/exports

内容:

/share 192.168.30.0/24(rw,sync)

#配置共享文件夹/share 共享网段192.168.0.0/24 rw可读写,sync并同步

systemctl start nfs

#启动ngs服务

exportfs -vr

显示内容:exporting 192.168.30.0/24:/share

#热加载并查看本机nfs共享

③配置web服务器,安装nginx并挂载NFS到默认根目录下并创建虚拟网卡lo:0配置ip192.168.30.100。

web1和web2执行:

yum install epel-release -y

#先安装额外源

yum install nginx -y

#yum安装nginx

systemctl start nginx

#开启nginx服务

showmount -e 192.168.30.11

显示内容:/share 192.168.30.0/24

#查看此服务器是否有NFS共享

rpm ql nginx |grep html

#查看nginx默认web根目录

mount 192.168.30.11:/share /usr/share/nginx/html/

#临时挂载 nfs服务器的/share文件夹到/usr/share/nginx/html/目录下,所以问/usr/share/nginx/html/的内容即访问/share内容

curl 192.168.30.13

curl 192.168.30.12

#显示内容this is nfs share

#分别访问俩个web服务器内容,查看是否挂载nfs成功显示网页内容。

ifconfig lo:0 192.168.30.100 netmask 255.255.255.2555

#添加虚拟网卡lo:0并配置ip

route add -host 192.168.30.100 dev lo:0

#添加路由192.168.30.100走lo:0网卡

vim /etc/sysctl.conf

#编辑内核参数,添加内容

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

#保存退出后查看配置

sysctl -p

#查看内核参数是否配置完成

④LVS_01和LVS_02安装ipvsadm并启动服务

yum install ipvsadm -y

#yum安装ipvsadm服务,即LVS负载均衡的真实服务名

systemctl start ipvsadm.service

#开启ipvsadm服务,此步骤启动服务报错

systemctl status ipvsadm.service>1.txt

cat 1.txt

#将ipvsadm服务启动报错提示导给1.txt文件并查看。内容如下截图

ipvsadm-save>/etc/sysconfig/ipvsadm

#报错信息提示是没有/etc/sysconfig/ipvsadm文件,解决方法是将ipvsadm保存到/etc/sysconfig/ipvsadm文件下。

systemctl restart ipvsadm.service

#重新启动ipvsadm成功

 ⑤LVS_01和LVS_02安装keepalived服务并配置启动

yum install keepalived.x86_64 -y

#安装keepalived.x86_64

vim /etc/sysctl.conf

#编辑内核文件

添加内容:

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

#保存退出

sysctl -p

#查看添加内核内容有则成功

vim keepalived.conf

#编辑配置文件

修改内容:

global_defs模块中

smtp_server 127.0.0.1

#改为127.0.0.1即改为本机

router_id LVS_01

#第一条LVS名称改为LVS_01

#vrrp_skip_check_adv_addr

#vrrp_strict

#vrrp_garp_interval 0

#vrrp_gna_interval 0

#以上4行安全机制添加#号注释掉

virtual_ipaddress {

192.168.30.100

}

#虚拟主机地址改为要配置的虚拟ip,可配置多个,若只写一个将模板的其他2个删除。

virtual_server 192.168.30.100 80 {

#虚拟ip地址改为配置的虚拟ip和web服务端口号

delay_loop 6

lb_algo rr

lb_kind DR

#模式改为DR模式即直连模式

persistence_timeout 50

protocol TCP

real_server 192.168.30.12 80 {

#第一台真实ip地址和web服务端口号

weight 1

TCP_CHECK {

#添加TCP_check 注意分号前有空格,检测真实服务器健康状态,即检测后端服务器80端口,若不正常则访问其他台服务器

connect_port 80

#添加连接端口80

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 192.168.30.13 80 {

#第二台真实ip地址和web服务端口号

weight 1

TCP_CHECK {

#添加TCP_check 注意分号前有空格,检测真实服务器健康状态,即检测后端服务器80端口,若不正常则访问其他台服务器

connect_port 80

#添加连接端口80

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

#俩台真实服务器后的所有内容删除即可,修改完成后保存退出。完整配置文件如下图

scp keepalived.conf 192.168.30.15:/etc/keepalived/

LVS_02配置文件修改:

#将配置好的配置文件传到LVS_02服务器上

#第一步修改 router_id LVS_02 名称改为LVS_02

#第二步要修改vrrp_instance VI_1模块中的state为BACKUP,和priority 90改为比主LVS优先级低的等级

#其他不用修改保存即可

systemctl restart ipvsadm keepalived

#重启服务

ipvsadm -ln

显示内容:

TCP 192.168.30.100:80 rr persistent 50

-> 192.168.30.12:80 Route 1 0 0

-> 192.168.30.13:80 Route 1 0 1

#查看有2个真实服务器的ip即可。

实验结果检验

①在客户机上curl 192.168.30.100查看内容是否为nfs服务器共享的内容“this is nfs share” 

 ②关闭LVS_01测试查看内容是否还为nfs服务器共享的内容“this is nfs share” 

 ③关闭nginx web1服务器测试查看内容是否还为nfs服务器共享的内容“this is nfs share” 

 

精彩文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。