共计 6523 个字符,预计需要花费 17 分钟才能阅读完成。
Linux 虚拟服务器(Linux Virtual Server)
LVS 实际上相当于基于 IP 地址的虚拟化应用,为基于 IP 地址和内容请求分发的负载均衡提出了一种高效的解决方法
1、支持故障自动切换(Failover)
2、支持节点健康状态检查(Health Checking)
判断 LVS 负载调度器、节点服务器的可用性,当 master 主机出现故障及时切换到 backup 节点保证业务正常,当 master 故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。
1、keepalived 采用 VRRP 热备份协议实现 Linux 服务器的多机热备功能
2、VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案。
3、由多台路由器组成一个热备份组,通过共用的虚拟 IP 地址对外提供服务
4、每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
5、若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟 IP 地址,继续提供服务
router_id HA_TEST_R1: 本路由器 (服务器) 的名称、主备名称要不一样
vrrp_instance Vl_1∶定义 VRRP 热备实例
state MASTER: 热备状态,MASTER 表示主服务器
interface ens33: 承载 VIP 地址的物理接口
virtual_router_id 1 : 虚拟路由器的 ID 号, 每个热备组保持一致
priority 100: 优先级, 数值越大优先级越高
advert_int 1: 通告间隔秒数(心跳频率)
auth_type PASS: 认证类型
auth_pass 123456: 密码字串
virtual_ipaddress {vip}: 指定漂移地址(VIP), 可以有多个
环境
主 DR 服务器:192.168.131.18
备 DR 服务器:192.168.131.19
Web 服务器 1:192.168.131.22
Web 服务器 2:192.168.131.23
vip 地址:192.168.131.100
1. #关闭防火墙
systemctl stop firewalld.service
setenforce 0
2. #安装服务
yum -y install ipvsadm keepalived
3. #修改配置文件 keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs { #定义全局参数
--10 行 -- 修改,邮件服务指向本地
smtp_server 127.0.0.1
--12 行 -- 修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为 LVS_01,备为 LVS_02
router_id LVS_01
}
rrp_instance VI_1 { #定义 VRRP 热备实例参数
--20 行 -- 修改,指定热备状态,主为 MASTER,备为 BACKUP
state MASTER
--21 行 -- 修改,指定承载 vip 地址的物理接口
interface ens33
--22 行 -- 修改,指定虚拟路由器的 ID 号,每个热备组保持一致
virtual_router_id 51
--23 行 -- 修改,指定优先级,数值越大优先级越高,主为 100,备为 99
priority 100
advert_int 1 #通告间隔秒数(心跳频率)
authentication { #定义认证信息, 每个热备组保持一致
auth_type PASS #认证类型
--27 行 -- 修改,指定验证密码,主备服务器保持一致
auth_pass 150411
}
virtual_ipaddress { #指定群集 vip 地址
192.168.131.100
}
}
--36 行 -- 修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和 Web 服务器池参数
virtual_server 192.168.131.100 80 {delay_loop 6 #健康检查的间隔时间(秒)
lb_algo rr #指定调度算法,轮询(rr)
--39 行 -- 修改,指定群集工作模式,直接路由(DR)
lb_kind DR
persistence_timeout 50 #连接保持时间(秒)
protocol TCP #应用服务采用的是 TCP 协议
--43 行 -- 修改,指定第一个 Web 节点的地址、端口
real_server 192.168.131.22 80 {
weight 1 #节点的权重
--45 行 -- 删除,添加以下健康检查方式
TCP_CHECK {
connect_port 80 #添加检查的目标端口
connect_timeout 3 #添加连接超时(秒)
nb_get_retry 3 #添加重试次数
delay_before_retry 3 #添加重试间隔
}
}
real_server 192.168.131.23 80 { #添加第二个 Web 节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
## 删除后面多余的配置 ##
4. #启动服务、查看虚拟网卡 vip(等配置好全部,开启此服务)
systemctl start keepalived
ip addr show dev ens33
5. #调整 proce 响应参数,关闭 Linux 内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
6. #刷新一下
sysctl -p
配置 ipvsadm
7. #配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
8. #清空 ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.131.100:80 -s rr
ipvsadm -a -t 192.168.131.100:80 -r 192.168.131.23:80 -g
ipvsadm -a -t 192.168.131.100:80 -r 192.168.131.22:80 -g
9. #保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm
1. #关闭防火墙
systemctl stop firewalld.service
setenforce 0
2. #安装服务
yum -y install ipvsadm keepalived
3. #修改配置文件 keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs { #定义全局参数
--10 行 -- 修改,邮件服务指向本地
smtp_server 127.0.0.1
--12 行 -- 修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为 LVS_01,备为 LVS_02
router_id LVS_01
}
vrrp_instance VI_1 { #定义 VRRP 热备实例参数
--20 行 -- 修改,指定热备状态,主为 MASTER,备为 BACKUP
state BACKUP
--21 行 -- 修改,指定承载 vip 地址的物理接口
interface ens33
--22 行 -- 修改,指定虚拟路由器的 ID 号,每个热备组保持一致
virtual_router_id 10
--23 行 -- 修改,指定优先级,数值越大优先级越高,主为 100,备为 99
priority 99
advert_int 1 #通告间隔秒数(心跳频率)
authentication { #定义认证信息, 每个热备组保持一致
auth_type PASS #认证类型
--27 行 -- 修改,指定验证密码,主备服务器保持一致
auth_pass 150411
}
virtual_ipaddress { #指定群集 vip 地址
192.168.131.100
}
}
--36 行 -- 修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和 Web 服务器池参数
virtual_server 192.168.131.100 80 {delay_loop 6 #健康检查的间隔时间(秒)
lb_algo rr #指定调度算法,轮询(rr)
--39 行 -- 修改,指定群集工作模式,直接路由(DR)
lb_kind DR
persistence_timeout 50 #连接保持时间(秒)
protocol TCP #应用服务采用的是 TCP 协议
--43 行 -- 修改,指定第一个 Web 节点的地址、端口
real_server 192.168.131.22 80 {
weight 1 #节点的权重
--45 行 -- 删除,添加以下健康检查方式
TCP_CHECK {
connect_port 80 #添加检查的目标端口
connect_timeout 3 #添加连接超时(秒)
nb_get_retry 3 #添加重试次数
delay_before_retry 3 #添加重试间隔
}
}
real_server 192.168.131.23 80 { #添加第二个 Web 节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
## 删除后面多余的配置 ##
4. #启动服务、查看虚拟网卡 vip(等全部配置,开启服务)
systemctl start keepalived
ip addr show dev ens33
5. #调整 proce 响应参数,关闭 Linux 内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
6. #刷新一下
sysctl -p
配置 ipvsadm
7. #配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
8. #清空 ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.131.100:80 -s rr
ipvsadm -a -t 192.168.131.100:80 -r 192.168.131.22:80 -g
ipvsadm -a -t 192.168.131.100:80 -r 192.168.131.23:80 -g
9. #保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
2. #安装并开启 httpd 服务
yum -y install httpd
systemctl start httpd
3. #配置站点文件
vim /var/www/html/index.html
cat /var/www/html/index.html
跃跃小宝贝
4. #配置虚拟 vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.131.100
NETMASK=255.255.255.255
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
6. #设置路由
route add -host 192.168.131.100 dev lo:0
route -n
7. #调整 proc 响应参数
# 添加系统只响应目的 IP 为本地 IP 的 ARP 请求
# 系统不使用原地址来设置 ARP 请求的源地址,而是物理 mac 地址上的 IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
8. #刷新 proc 参数
sysctl -p
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
2. #安装并开启 httpd 服务
yum -y install httpd
systemctl start httpd
3. #配置站点文件
vim /var/www/html/index.html
cat /var/www/html/index.html
跃跃小宝贝
4. #配置虚拟 vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.131.100
NETMASK=255.255.255.255
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
6. #设置路由
route add -host 192.168.131.100 dev lo:0
route -n
7. #调整 proc 响应参数
# 添加系统只响应目的 IP 为本地 IP 的 ARP 请求
# 系统不使用原地址来设置 ARP 请求的源地址,而是物理 mac 地址上的 IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
8. #刷新 proc 参数
sysctl -p
1)当前使用的为主 DR 服务器
验证 ip a
主 DR 服务器:
断开主 DR 服务器的 Keepalived 测试,systemctl stop keepalived.service