十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
使用 keepalived 实现 LVS 双机热备。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、网页空间、营销软件、网站建设、碌曲网站维护、网站推广。
主机 | 操作系统 | IP地址 | 主要软件 |
---|---|---|---|
LVS 负载调度器 | CentOS 7.3 x86_64 | 192.168.217.128 | keepalived |
LVS 负载调度器 | CentOS 7.3 x86_64 | 192.168.217.129 | keepalived |
web 服务器 1 | CentOS 7.3 x86_64 | 192.168.217.130 | http |
web 服务器 2 | CentOS 7.3 x86_64 | 192.168.217.131 | http |
NFS 共享储存 | CentOS 7.3 x86_64 | 192.168.217.132 | |
客户机 | Windows 7 | 192.168.217.133 |
yum install keepalived ipvsadm -y #安装lvs管理工具和keepalived
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens32 ifcfg-ens32:0 #复制现有的网卡做虚拟网卡 ,添加以下内容
DEVICE=ens32:0
ONBOOT=yes
IPADDR=192.168.217.10 #虚拟网卡地址 VIP
NETMASK=255.255.255.255
ifup ens32:0 #开启虚拟网卡
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 #开启路由转发功能
#proc响应关闭重定向功能
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens32.send_redirects = 0
modprobe ip_vs #加载LVS模板
cd /etc/init.d/
vim dr.sh
#!/bin/bash
GW=192.168.217.1 #网关
VIP=192.168.217.10 #虚拟IP
RIP1=192.168.217.130 #web服务器1地址
RIP2=192.168.217.131 #web服务器2地址
case "$1" in
start)
/sbin/ipvsadm --save > /etc/sysconfig/ipvsadm #在centos 7 以上的版本 需要保存策略 才能开启服务
systemctl start ipvsadm #开启服务
/sbin/ifconfig ens32:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev ens32:0 #添加网段
/sbin/ipvsadm -A -t $VIP:80 -s rr #添加虚拟服务机
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g #添加真实服务机 使用DR群集模式
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
echo "ipvsadm starting --------------------[ok]"
;;
stop)
/sbin/ipvsadm -C #清除节点服务器
systemctl stop ipvsadm #关闭服务
ifconfig ens32:0 down #关闭虚拟网卡
route del $VIP #删除网段
echo "ipvsamd stoped----------------------[ok]"
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then #如果没有匹配到/var..../ipvsadm这个文件 则 stoped 否则 runing
echo "ipvsadm stoped---------------"
exit 1
else
echo "ipvsamd Runing ---------[ok]"
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
chmod +x dr.sh #添加权限
service dr.sh start #开启服务
注:可以不做 keepalived ,做 web 服务器 ,测试能否调度 。
vim /etc/keepalived/keepalived.conf
global_defs {
...
smtp_server 127.0.0.1 #指向本地
router_id LVS_01 #主调度服务器名称,要与从调度服务器不同名称
...
}
vrrp_instance VI_1 {
state MASTER #从调度服务器是BACKUP
virtual_router_id 10 #组号 主从组号要相同
...
auth_pass abc123 #验证密码 主从相同
priority 100 #优先级大的为主,从优先级不能大于主
...
virtual_ipaddress { #虚拟IP地址池
192.168.217.10
}
...
virtual_server 192.168.217.10 80 { #虚拟IP地址
delay_loop 6
lb_algo rr #负载调度算法
lb_kind DR #群集模式
...
real_server 192.168.217.130 80 { #web服务器地址
weight 1 #权重
TCP_CHECK { #检查方式
connect_port 80 #监听端口
connect_timeout 3 #链接超时(秒)
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试间隔(秒)
}
}
real_server 192.168.1217.131 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
systemctl start keepalived #开启服务
ip addr show dev ens32:0 #查看虚拟网卡
systemctl stop firewalld.service # 关闭防火墙
注:主、从调度器名称要不同、组号要相同、验证密码相同、优先级不能大于主 。
主从调度器除了以上不同 ,其他的配置都相同 ,IP地址也不同 ,虚拟IP相同 。
yum install http -y
systemctl start httpd.service
systemctl stop firewalld.service
mount.nfs 192.168.217.132:/opt/benet /var/www/html #挂载nfs提供的文件
cd /var/www/html/
echo "this is accp web" > index.html #添加不同的测试首页 ,便于区别 。
cd /etc/sysconfig/network-scripts
cp ifcfg-lo ifcfg-lo:0 #复制回环地址 做虚拟IP
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.217.10
NETMASK=255.255.255.255
ONBOOT=yes
ifup lo:0 #启动虚拟地址 会把原本地址覆盖
cd /etc/init.d/
vim web.sh
#!/bin/bash
VIP=192.168.217.10
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP #开启虚拟IP
/sbin/route add -host $VIP dev lo:0 #添加网段
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/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 lo:0 down
route del $VIP /dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stopd"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
chmod +x web.sh
service web.sh start
注:web 服务器配置都一样 。
使用win访问虚拟IP ,如果没问题 ,把 LVS 负载调度器 1 的虚拟网关关掉 ,ifdown ens32:0 , 继续测试 ,如果还能访问 ,则群集搭建成功 。
注:如果刷新不出 ,可以重启ipvsadm 服务 ,或者清除浏览器缓存 。
注:如果有错误的地方 ,欢迎指出 。谢谢观赏