4台机器需要在一个内网环境中,或在一个交换机下。
LVS+keepalived主机 真实:10.10.10.10 虚拟:10.10.10.135
LVS+keepalived备机 真实:10.10.10.11 虚拟:10.10.10.135
后端web服务器A 真实:10.10.10.60 虚拟:10.10.10.135
后端web服务器B 真实:10.10.10.61 虚拟:10.10.10.135
需要A和B均操作如下,在创建测试页面部分需要变动
1.安装httpd服务器
yum install -y httpd
systemctl start httpd
systemctl enable httpd
2.创建测试页面并测试,A和B机器页面要不一样
echo "welcome A" > /var/www/html/index.html
curl http://127.0.0.1
3.编写转发脚本
vim forward.sh
#!/bin/bash
#网卡和vip
NET_KA=enp0s8
SNS_VIP=10.10.10.135
case "$1" in
start)
ifconfig ${NET_KA}:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
#/sbin/route add -host $SNS_VIP dev ${NET_KA}:0
echo "1" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig ${NET_KA}:0 down
#route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
4.执行脚本
bash forward.sh start
5.测试,可以看到出现虚拟ip
ifconfig
1.安装依赖
yum install -y openssl openssl-devel keepalived ipvsadm
2.路由转发
echo "1" >/proc/sys/net/ipv4/ip_forward
3.配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_1 # 设置lvs的id,网络内唯一
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为
interface enp0s8 #绑定网卡
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 100 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
nopreempt #挂掉再启动后,不进行抢占
advert_int 1 #主从之间心跳间隔,默认1s
authentication { #设备验证信息,主从要一样
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.10.10.135 #定义虚拟IP(VIP)
}
}
#定义对外提供服务的LVS的VIP以及port
virtual_server 10.10.10.135 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo rr # 设置负载调度的算法为轮询
lb_kind DR # 设置LVS实现负载的机制
#persistence_timeout 5 #添加后就持久化
protocol TCP
real_server 10.10.10.60 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK { #对后端节点进行检测
connect_timeout 3 #超时时间
nb_get_retry 3 #重试次数
delay_before_retry 3 #多长时间重试
connect_port 80
}
}
real_server 10.10.10.61 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
4.启动keepalived
systemctl start keepalived
systemctl enable keepalived
5.测试,查看是否有10.10.10.135这个虚拟ip
ip addr
测试网页,看是否轮询了,需要在别的机器上检测,不能在节点服务器上检测。 curl http://10.10.10.135 curl http://10.10.10.135
1.安装依赖
yum install -y openssl openssl-devel keepalived ipvsadm
2.路由转发
echo "1" >/proc/sys/net/ipv4/ip_forward
3.配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_2 # 设置lvs的id,网络内唯一
}
vrrp_instance VI_1 {
state BACKUP #指定Keepalived的角色,MASTER为主,BACKUP为
interface enp0s8 #绑定网卡
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 80 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
nopreempt #挂掉再启动后,不进行抢占
advert_int 1 #主从之间心跳间隔,默认1s
authentication { #设备验证信息,主从要一样
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.10.10.135 #定义虚拟IP(VIP)
}
}
#定义对外提供服务的LVS的VIP以及port
virtual_server 10.10.10.135 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo rr # 设置负载调度的算法为轮询
lb_kind DR # 设置LVS实现负载的机制
#persistence_timeout 5 #添加后就持久化
protocol TCP
real_server 10.10.10.60 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK { #对后端节点进行检测
connect_timeout 3 #超时时间
nb_get_retry 3 #重试次数
delay_before_retry 3 #多长时间重试
connect_port 80
}
}
real_server 10.10.10.61 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
4.启动keepalived
systemctl start keepalived
systemctl enable keepalived
5.测试,查看是否有10.10.10.135这个虚拟ip
ip addr
测试网页,看是否轮询了,需要在别的机器上检测,不能在节点服务器上检测。 curl http://10.10.10.135 curl http://10.10.10.135
1.在负载均衡主上关机
init 0
2.在浏览器测试
curl http://10.10.10.135
1.在web服务A上关机
init 0
2.在浏览器测试
curl http://10.10.10.135
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。