3 集群基础
一 拓展
流量相关:
性能扩展:
二 集群概念
一组协同工作,但对外表现为一个整体的服务器组
三 集群分类
LBC:负载均衡集群
HAC:高可用性集群
HPC:高性能计算集群(科学计算集群)
1)LBC:负载均衡集群
(1)概念
LBC(load balancer Cluster):负载均衡集群
目的:提升业务性能,降低单台服务器压力
实现方式:
硬件: 单独硬件设备(独立专门的操作系统) F5(之后又收购了nginx,软硬件都有)
软件: DNS、LVS、RAC、Haproxy
LVS:linux虚拟服务器
RAC:实时应用集群
DNS实现负载:同一域名解析不同IP(缺点:由于缓存原因,导致任务分配不均,无法实现健康检查)(缓存DNS无法实现分配用户请求)
算法: RR:轮询
WRR:权重(加权轮询)
结构: agent 负载调度器
业务层 服务器池
存储 共享存储
层级: 硬件: 二、四、七
软件:
四 负载调度器:LVS、RAC
七 负载调度器:mysql、proxy、RAC
nginx
haproxy
| 区别\不同点 | 触发条件 | 实现原理 | 应用场景 | 安全性 |
|---|---|---|---|---|
| 四层 | ip、port | 一次TCP连接 | TCP应用 | 转发SYN |
| 七层 | URL、主机名 | 两次TCP连接 | HTTP协议 | 拦截SYN |
四层负载与七层负载的区别:
1、七层负载均衡:基本都**基于http协议**,适用于web服务器的负载均衡
2、四层负载均衡:**基于TCP协议**,可以做任何基于tcp/ip协议的负载均衡(haproxy, LVS)
3、二者主要区别在于**利用的报文所在的层面是不同的**,各有各的好处。
4、**七层负载**均衡的好处,是使得整个网络**更“智能化”**。
例如访问一个网站的用户流量,可以通过七层的方式,将对图片类的请求转发到特定的图片服务器,并可以利用缓存技术;将对文字类的请求转发到特定的文字服务器,并可以利用压缩技术。
从技术原理上,七层负载可以对客户端的请求和服务器的响应进行任何意义上的修改,极大的提升了应用系统在网络层的灵活性。例如nginx或apache上部署的功能可以迁移到负载均衡器上,例如客户请求中的Header重写,服务器响应中的关键字过滤或内容插入等功能。
5、**四层负载**均衡的优点是**较为灵活**,可以作为多种软件的负载均衡器。
**总结:**
举个例子形象的说明:四层负载均衡就像银行的自助排号机,每一个到银行的客户,根据排号机的顺序,选择对应的窗口接受服务;而七层负载均衡像银行大堂经理,先确认客户需要办理的业务,再安排排号。这样办理理财、存取款等业务的客户,会去不同的地方排队,加快了业务办理流程。
ipvsadm命令 【重难点】
0. 查看集群
ipvsadm -ln
-l #list,显示列出集群的相关信息
-n #以数字形式显示(数字化显示)
1. 创建集群
ipvsadm -A -t vip:port -s rr
-A #add,创建(添加)新的集群
-t #创建的集群使用的是TCP协议进行数据传输
-s #指定集群的负载调度算法{rr 、wrr}
2. 向集群内添加应用服务器
ipvsadm -a -t vip:port -r rip:port -m
-a #向已存在的指定集群内添加应用服务器
-r #指定将哪个应用服务器加入到集群内
-m #IPVS函数的工作模式{-m NAT模式 | -g DR模式 }
3. 修改集群信息(已经存在的集群)
ipvsadm -E -t vip:port -s 算法
-E #edit,编辑已经创建了的集群参数(仅能修改集群的调度算法)
4. 修改集群内已添加的应用服务器参数
ipvsadm -e -t vip:port -r rip:port -g|-m -w 数字
-e #修改集群内应用服务器参数,可修改工作模式,权重
-g #修改真实服务器在集群中工作模式为DR模式
-m #修改帧数服务器在进群中工作模式为NAT模式
-w #修改为wrr算法时,(修改权重)
5. 删除集群:(协议、ip、端口相同时,算法即固定,可不写算法)
ipvsadm -D -t vip:port
6. 删除集群中应用服务器:(不写工作模式,算法)
ipvsadm -d -t vip:port -r rip:port
(2)四层负载均衡软件----LVS(linux-virtual-server)
内核层: IPVS函数(默认有)
用户层:ipvsadm 命令
CIP:客户端ip
DIP:负载调度器IP
VIP:集群IP
RIP:真实服务器IP
(3)三种工作模式:
1. NAT转换模式 - 铺垫
2. route路由模式(DR) - 最常用的模式
3. 隧道模式 - 了解
负载调度器算法
静态算法:只考虑算法本身,不考虑服务器状态
rr(轮循):**一个一个轮替**
wrr(加权轮循):**按权重比例轮替**
sh(源地址hash):**实现会话绑定**,保留之前建立的会话信息
dh(目标地址hash):将同一个目标地址的请求,发送给同一个服务器节点。**提高缓存命中率**
动态算法:既要考虑算法本身,也要考虑服务器状态(原理:通过hash表记录连接状态----active/inactive)
LC(最少连接):新请求分给连接数少的服务器 公式:活动连接*256+非活动连接
WLC(加权最少连接):最少连接的特殊模式 公式:(活动连接*256+非活动连接)/权重
SED(最短期望延迟):加权最少连接的特殊模式 公式:(活动连接 +1)*256/权重
NQ (永不排队):sed的特殊模式(当某台真实服务器连接为0时,直接分配,不计算)
LBLC(基于局部性的最少连接):
dh的特殊模式,**既要提高缓存命中率,又要考虑连接数量**。
先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器
LBLCR(带复制的基于局部性的最少连接):LBLCR=LBLC+缓存共享机制
(4)实验---LVS-NAT模式
原理:
1.客户端请求负载调度器,发送数据包(源IP:CIP 目标IP:VIP)
2.负载调度器进行数据包目标地址转换(源IP:CIP 目标IP:RIP)
3.数据包交给应用服务器,响应后发回负载调度器(源IP:RIP 目标IP:CIP)
4.负载调度器进行数据包源地址转换(源IP:RIP 目标IP:CIP)
NAT特点:
同一网络、指向DIP、内私有、中间、端口映射、负载linux,其他随意
同一网络指向内部,中间映射linux
1.负载调度器和真实服务器,必须位于同一网络
2.真实服务器的网关必须指向DIP
3.负载调度器必须位于客户端和真实服务器之间
4.RIP通常都是私有地址,仅用于各个集群节点通信
5.支持端口映射
6.真实服务器可以使用任意操作系统、负载调度器必须是LINUX系统
NAT缺点:
负载调度+路由作为整体,压力大
原理图:
实验环境:
| 测试机:110 | 路由+负载调度器:120 | 应用服务器1:130 | 应用服务器140 | |
|---|---|---|---|---|
| 虚拟机名 | 7-1 | 7-2 | 7-3 | 7-4 |
| 网卡模式 | vmnat10 | vmnat10、vmnat11 | vmnat11 | vmnat11 |
| ip | 192.168.10.110 | 192.168.10.120 192.168.11.120 |
192.168.11.130 | 192.168.11.140 |
| 网关 | 192.168.10.120 | 192.168.11.120 | 192.168.11.120 |
实验步骤:
1)7-2开启路由转发
[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# grep "net" /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
2)7-3、7-4安装apache,并部署网页
#7-3
[root@localhost ~]# yum -y install httpd >/dev/null
[root@localhost ~]# systemctl enable httpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# echo "hello 130..." > /var/www/html/index.html
#7-4
[root@localhost ~]# yum -y install httpd >/dev/null
[root@localhost ~]# systemctl enable httpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# echo "hello 140...." > /var/www/html/index.html
3)7-1测试:
11.130、11.140能访问到apache服务器
10.120不能访问到apache服务器
[root@localhost ~]# curl 192.168.11.130
hello 130...
[root@localhost ~]# curl 192.168.11.140
hello 140....
[root@localhost ~]# curl 192.168.10.120
curl: (7) Failed connect to 192.168.10.120:80; 拒绝连接
4)7-2搭建集群
[root@localhost ~]# grep -i "ip_vs" /boot/config-3.10.0-957.el7.x86_64 #检查系统有ipvs函数
[root@localhost ~]# yum -y install ipvsadm #安装ipvsadm命令
[root@localhost ~]# ipvsadm -ln #查看集群,没有集群信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@localhost ~]# ipvsadm -A -t 192.168.10.120:80 -s rr #创建集群
[root@localhost ~]# ipvsadm -a -t 192.168.10.120:80 -r 192.168.11.130:80 -m #将130加入集群
[root@localhost ~]# ipvsadm -a -t 192.168.10.120:80 -r 192.168.11.140:80 -m #将140加入集群
[root@localhost ~]# 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.120:80 rr
-> 192.168.11.130:80 Masq 1 0 0
-> 192.168.11.140:80 Masq 1 0 0
5)测试
7-1访问10.120能分别访问到130、140的内容
检查130、140的访问日志(来源ip为7-1,客户端到apache一次TCP连接)
[root@localhost ~]# curl 192.168.10.120
hello 140....
[root@localhost ~]# curl 192.168.10.120
hello 130...
注意:负载均衡服务器+路由器
client——》server 数据包目标地址转换
server——》client 数据包源地址转换
(5)实验----LVS-DR模式
实验原理:
1.客户端通过dns域名解析出路由器的对外公网ip,发送数据包给路由器
2.路由器接受后,经过防火墙,进行ip目标地址转换为:集群的VIP(负载均衡服务器)
3.负载均衡服务器接收后,通过局域网的mac地址转换,找到应用服务器
4.应用服务器通过lo子接口接受后,将网页内容打包到数据包中,通过网关发给路由器
5.路由器防火墙,再将源地址转换为路由器对外的公网ip,发给客户端
DR特点:
同一网络、指向、公私、负载入站Linux、其他随意
1. 负载调度器和真实服务器,必须位于同一网络
2. 真实服务器的网关必须指向路由器
3. 负载调度只处理入站请求
4. RIP可以是私有地址,也可以是公网地址
5. 真实服务器可以使用任意操作系统,负载调度器必须是LINUX系统
DR优点:
负载压力较小、支持100台左右RS(real server)
DR缺点:
配置复杂
实验环境
| 虚拟机 | 网卡、ip | 网关 | 主要操作 |
|---|---|---|---|
| 7-1 路由 | vmnat10 192.168.10.110 vmnat11 192.168.11.110 |
1.开启路由转发 2.设置防火墙规则 |
|
| 7-2 负载调度器 | vmnat11 ens33 192.168.11.120(DIP) ens33:0 192.168.11.200(VIP) |
192.168.11.110 | 1.创建集群,将应用服务器加入集群 2.关闭路由重定向 |
| 7-3 应用服务器1 | vmnat11 192.168.11.130 | 192.168.11.110 | 1.安装httpd,写网页,启动服务 2.创建lo子接口 3.忽略arp解析结果 4.关闭keepalive功能,避免缓存影响实验效果 |
| 7-4 应用服务器2 | vmnat11 192.168.11.140 | 192.168.11.110 | 1.安装httpd,写网页,启动服务 2.创建lo子接口 3.忽略arp解析结果 4.关闭keepalive功能,避免缓存影响实验效果 |
| 7-5 测试机 | vmnat10 192.168.10.15 | 192.168.10.110 | 访问192.168.10.110,能访问到两个应用服务器 |
实验步骤:
1)7-1配置
开启路由转发
设置防火墙进出规则
[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# grep "net" /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.10.110 -p tcp --dport 80 -j DNAT --to-destination 192.168.11.200:80
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -p tcp --sport 80 -j SNAT --to-source 192.168.10.110
[root@localhost ~]# iptables -t nat -L -n --line-numbers
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 DNAT tcp -- 0.0.0.0/0 192.168.10.110 tcp dpt:80 to:192.168.11.200:80
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 SNAT tcp -- 192.168.11.0/24 0.0.0.0/0 tcp spt:80 to:192.168.10.110
2)7-2配置
创建集群,将应用服务器加入集群
关闭路由重定向
[root@localhost ~]# ipvsadm -A -t 192.168.11.200:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.130:80 -g
[root@localhost ~]# ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.140:80 -g
[root@localhost ~]# 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.11.200:80 rr
-> 192.168.11.130:80 Route 1 0 0
-> 192.168.11.140:80 Route 1 0 0
[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# grep "net" /etc/sysctl.conf
net.ipv4.conf.all.send_redirects=0
[root@localhost ~]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
3)7-3、7-4配置
1.安装httpd,写网页,启动服务
2.创建lo子接口
3.忽略arp解析结果
4.关闭keepalive功能(keepalive功能:客户端访问同一资源时,建立缓存,避免多次tcp握手)
#7-3应用服务器1
#1 配置应用服务器
[root@localhost ~]# yum -y install httpd>/dev/null
[root@localhost ~]# echo "hello 130...." >/var/www/html/index.html
[root@localhost ~]# systemctl enable httpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
#2 添加lo子接口
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp -a ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
#仅修改了以下三项
DEVICE=lo:0
IPADDR=192.168.11.200
NETMASK=255.255.255.255
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.11.200 netmask 255.255.255.255
loop txqueuelen 1000 (Local Loopback)
#3 忽略arp解析结果
[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# grep "net" /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
[root@localhost ~]# sysctl -p
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
#4 关闭keepalive功能
[root@localhost ~]# cp -a /usr/share/doc/httpd-2.4.6/httpd-default.conf /etc/httpd/conf.d/
[root@localhost ~]# vim /etc/httpd/conf.d/httpd-default.conf
[root@localhost ~]# grep "^KeepAlive" /etc/httpd/conf.d/httpd-default.conf
KeepAlive On
KeepAliveTimeout 0
[root@localhost ~]# systemctl restart httpd
#7-4应用服务器2
#1 配置应用服务器
[root@localhost ~]# yum -y install httpd>/dev/null
[root@localhost ~]# echo "hello 140...." >/var/www/html/index.html
[root@localhost ~]# systemctl enable httpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
#2 添加lo子接口
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp -a ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
#仅修改了以下三项
DEVICE=lo:0
IPADDR=192.168.11.200
NETMASK=255.255.255.255
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.11.200 netmask 255.255.255.255
loop txqueuelen 1000 (Local Loopback)
#3 忽略arp解析结果
[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# grep "net" /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
[root@localhost ~]# sysctl -p
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
#4 关闭keepalive功能
[root@localhost ~]# cp -a /usr/share/doc/httpd-2.4.6/httpd-default.conf /etc/httpd/conf.d/
[root@localhost ~]# vim /etc/httpd/conf.d/httpd-default.conf
[root@localhost ~]# grep "^KeepAlive" /etc/httpd/conf.d/httpd-default.conf
KeepAlive On
KeepAliveTimeout 0
[root@localhost ~]# systemctl restart httpd
4)7-5测试
访问路由器公网ip(192.168.10.110)
[root@localhost ~]# curl 192.168.10.110
hello 130....
[root@localhost ~]# curl 192.168.10.110
hello 140....
[root@localhost ~]# curl 192.168.10.110
hello 130....
(6)iptables 命令语法结构
1)防火墙结构:
规则表: 容器,存放规则链
作用: 标记、跟踪、阻拦放行、日志记录等
默认五张表、常用4张、最常用2张
nat表:转发
filter表: 阻拦放行
规则链: 容器,存放一条条具体规则
作用: 在什么时候处理数据包
INPUT、OUTPUT、FORWARD
PREROUTING、POSTROUTING
2)语法
查看防火墙规则:
删除规则:
注意:永久关闭需要修改防火墙服务自启动
创建规则
iptables -t nat -A PREROUTING -d 192.168.10.110 -p tcp --dport 80 -j DNAT --to-destination 192.168.11.200:80
iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -p tcp --sport 80 -j SNAT --to-source 192.168.10.110
防火墙规则存放位置:
-t #table,指定表创建
-A #指定连追加
条件判断:
注意:若有端口匹配,必须先写协议类型,再写端口
-d #匹配数据包目标地址
-s #匹配数据包源地址
--dport #匹配数据包目标端口
--sport #匹配数据包源端口
-p #指定协议类型(tcp、udp、icmp)
.....
执行动作:
-j #符合条件时,要执行的动作
ACCEPT、 REJECT、 DROP、 DNAT、 SNAT
放行 拒绝放行 丢弃 目标地址转换 源地址转换
DNAT --to-destination #目标地址修改
SNAT --to-source #源地址修改
2)HAC高可用
目的:故障转移
高可用:通过尽量缩短系统停机时间,提高系统和应用的可用性
一般2个节点做出HA集群,“双机热备” “双机互备”
最大限度:
99% 87.6h
99.9% 8.8h
99.99% 53m
99.999% 5m
故障切换: 心跳检测、RS232串口线实现
双机备份软件: Rose Haproxy、keepaliced、Heartbeat
特殊情况: 脑分裂(由于线缆故障,两个LVS+keepalived服务器都抢占主)
解决:
1.设置参考IP(网关):ping对方IP和参考IP都故障才抢主
2.设置冗余线路: 设置两张网卡,两张网卡都不同时才抢主
3.爆头模式:判断故障后,无论是否真故障,先让对方故障(断电),再抢主
(1)实验----LVS-DR模式+keepalived
实验原理:在LVS-DR模式中,加入负载调度的故障转移功能
前提:在LVS-DR模式实现环境下进行
实验环境:
| 虚拟机 | 网卡、ip | 网关 | 主要操作 |
|---|---|---|---|
| 7-1 路由 | vmnat10 192.168.10.110 vmnat11 192.168.11.110 |
1.开启路由转发 2.设置防火墙规则 |
|
| 7-2 负载调度器1 | vmnat11 ens33 192.168.11.120(DIP) ens33:0 192.168.11.200(VIP) |
192.168.11.110 | 1.安装ipvsadm、keepalived软件 2.关闭路由重定向 3.配置keepalived作为主,并配置集群相关信息 4.启动自启动keepalived |
| 7-3 应用服务器1 | vmnat11 192.168.11.130 | 192.168.11.110 | 1.安装httpd,写网页,启动服务 2.创建lo子接口 3.忽略arp解析结果 4.关闭keepalive功能,避免缓存影响实验效果 |
| 7-4 应用服务器2 | vmnat11 192.168.11.140 | 192.168.11.110 | 1.安装httpd,写网页,启动服务 2.创建lo子接口 3.忽略arp解析结果 4.关闭keepalive功能,避免缓存影响实验效果 |
| 7-5 测试机 | vmnat10 192.168.10.15 | 192.168.10.110 | 访问192.168.10.110,能访问到两个应用服务器 |
| 7-6 负载调度器2 | vmnat11 ens33 192.168.11.122(DIP) ens33:0 192.168.11.200(VIP) 需解决IP冲突问题 |
192.168.11.110 | 1.解决IP冲突问题 2.安装ipvsadm、keepalived软件 3.配置keepalived作为从,并配置集群相关信息 4.启动自启动keepalived |
实验步骤:
1)两个负载调度器解决IP冲突问题
#7-2、7-6都注释两个文件中的ip冲突判断部分
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifup-eth
#if [ $? = 1 ]; then
# ARPINGMAC=$(echo $ARPING | sed -ne 's/.*\[\(.*\)\].*/\1/p')
# net_log $"Error, some other host ($ARPINGMAC) already uses address ${ipaddr[$idx]}."
# exit 1
#fi
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifup-aliases
#if [ $? = 1 ]; then
# ARPINGMAC=$(echo $ARPING | sed -ne 's/.*\[\(.*\)\].*/\1/p')
# net_log $"Error, some other host ($ARPINGMAC) already uses address ${IPADDR}."
# return 1
#fi
2)配置keepalived功能
#7-2
[root@localhost ~]# yum -y install keepalived
[root@localhost ~]# cp -a /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
[root@localhost ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_MASTER #标记路由id
}
vrrp_instance VI_1 {
state MASTER #标记主从
interface ens33 #标记监听网卡
virtual_router_id 51 #标记虚拟路由id,和7-6的要一样
priority 100 #优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.200 #集群的VIP
}
}
virtual_server 192.168.11.200 80 {
delay_loop 6
lb_algo rr #算法
lb_kind DR #工作模式
persistence_timeout 0 #keepalived软件的keepalive功能保留时间
protocol TCP
real_server 192.168.11.130 80 { #标记应用服务器1
weight 1
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
real_server 192.168.11.140 80 { #标记应用服务器2
weight 1
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# tail -n 1 /etc/sysctl.conf
net.ipv4.conf.all.send_redirects=0
[root@localhost ~]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
[root@localhost ~]# systemctl restart keepalived
[root@localhost ~]# systemctl enable keepalived
#7-6
[root@localhost ~]# yum -y install keepalived
[root@localhost ~]# cp -a /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
[root@localhost ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_SLAVE #标记路由id
}
vrrp_instance VI_1 {
state SLAVE #标记主从
interface ens33 #标记监听网卡
virtual_router_id 51 #标记虚拟路由id,和7-2的一样
priority 30 #优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.200 #集群VIP
}
}
virtual_server 192.168.11.200 80 {
delay_loop 6
lb_algo rr #算法
lb_kind DR #工作模式
persistence_timeout 0 #keepalived软件的keepalive功能保留时间
protocol TCP
real_server 192.168.11.130 80 { #应用服务器1
weight 1
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
real_server 192.168.11.140 80 { #应用服务器2
weight 1
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# tail -n 1 /etc/sysctl.conf
net.ipv4.conf.all.send_redirects=0
[root@localhost ~]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
[root@localhost ~]# systemctl restart keepalived
[root@localhost ~]# systemctl enable keepalived
3)测试
测试1:关闭集中一台负载调度器,测试修复
测试2:修复后的主从优先级
修改7-2、7-6 keepalived.conf配置文件中的priority选项优先级(数字越大,优先级高,修复后作为主)c
#7-2
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
[root@localhost ~]# grep "priority" /etc/keepalived/keepalived.conf
priority 30
[root@localhost ~]# systemctl restart keepalived
#7-6
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
[root@localhost ~]# grep "priority" /etc/keepalived/keepalived.conf
priority 60
[root@localhost ~]# systemctl restart keepalived





