部署LVS-DR与 Keepalived群集(实战!!!)
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,keepalived概述Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该
千家信息网最后更新 2025年01月24日部署LVS-DR与 Keepalived群集(实战!!!)
keepalived概述
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
keepalived工作原理
1、keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。2、虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。3、keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
实验环境
调度服务器DR1(主): 192.168.100.66 centos7-1调度服务器DR2(备): 192.168.100.77 centos7-2节点服务器web1: 192.168.100.88 centos7-3节点服务器web2: 192.168.100.99 centos7-4漂移地址vip: 192.168.100.100客户端client: 192.168.100.200 windows7
第一步配置centos7-1--DR1调度服务器
1、安装ipvsadm、keepalived软件包
[root@dr1 ~]# yum install ipvsadm keepalived -y
2、修改网卡模式为仅主机并固定IP:192.168.100.66
[root@dr1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTO=staticIPADDR=192.168.100.66NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@dr1 ~]# service network restartRestarting network (via systemctl): [ 确定 ][root@dr1 ~]# vim /etc/sysctl.conf#添加路由转发功能net.ipv4.ip_forward=1#proc响应关闭重定向功能net.ipv4.conf.all.send_redirects=0net.ipv4.conf.default.send_redirects=0net.ipv4.conf.ens33.send_redirects=0#生效路由转发功能[root@dr1 ~]# sysctl -p
3、构建虚拟网卡
[root@dr1 ~]# cd /etc/sysconfig/network-scripts/[root@dr1 network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0[root@dr1 network-scripts]# vim ifcfg-ens33:0#删除原有内容DEVICE=ens33:0ONBOOT=yesIPADDR=192.168.100.100NETWASK=255.255.255.0 #启用虚拟网卡[root@dr1 network-scripts]# ifup ens33:0
4、添加服务启动脚本
[root@dr1 ~]# cd /etc/init.d/[root@dr1 init.d]# vim dr.sh#!/bin/bashGW=192.168.100.1VIP=192.168.100.100RIP1=192.168.100.88RIP2=192.168.100.99case "$1" instart) /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm systemctl start ipvsadm /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up /sbin/route add -host $VIP dev ens33:0 /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g echo "ipvsadm starting------------------[ok]" ;; stop) /sbin/ipvsadm -C systemctl stop ipvsadm ifconfig ens33:0 down route del $VIP echo "ipvsamd stoped--------------------[ok]" ;; status) if [ ! -e ar/lock/subsys/ipvsadm ];then echo "ipvsadm stoped--------------------" exit 1 else echo "ipvsamd Runing-------------[ok]" fi ;; *) echo "Usage: $0 {start|stop|status}" exit 1 esac exit 0#授予脚本执行权限 [root@dr1 init.d]# chmod +x dr.sh#启动脚本[root@dr1 init.d]# service dr.sh start#查看ipvsadm 状态[root@dr1 init.d]# systemctl status ipvsadm #查看服务开启状态#关闭防火墙与安全功能[root@dr1 init.d]# systemctl stop firewalld.service[root@dr1 init.d]# setenforce 0
第二步配置centos7-2--DR2调度服务器
1.安装ipvsdam、keepalived软件包
[root@dr2 ~]# yum install ipvsdam keepalived -y
2.修改网卡模式为仅主机并固定IP:192.168.100.77
[root@dr2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTO=staticIPADDR=192.168.100.77NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@dr2 ~]# service network restartRestarting network (via systemctl): [ 确定 ][root@dr2 ~]# vim /etc/sysctl.conf#添加路由转发功能net.ipv4.ip_forward=1#proc响应关闭重定向功能net.ipv4.conf.all.send_redirects=0net.ipv4.conf.default.send_redirects=0net.ipv4.conf.ens33.send_redirects=0#生效路由转发功能[root@dr1 ~]# sysctl -p
3、构建虚拟网卡
[root@dr1 ~]# cd /etc/sysconfig/network-scripts/[root@dr1 network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0[root@dr1 network-scripts]# vim ifcfg-ens33:0#删除原有内容DEVICE=ens33:0ONBOOT=yesIPADDR=192.168.100.100NETWASK=255.255.255.0#启用虚拟网卡[root@dr2 ~]# ifup ens33:0
4、添加服务启动脚本
[root@dr2 ~]# cd /etc/init.d/[root@dr2 ~]# vim dr.sh#!/bin/bashGW=192.168.100.1VIP=192.168.100.100RIP1=192.168.100.88RIP2=192.168.100.99case "$1" instart) /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm systemctl start ipvsadm /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up /sbin/route add -host $VIP dev ens33:0 /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g echo "ipvsadm starting------------------[ok]" ;; stop) /sbin/ipvsadm -C systemctl stop ipvsadm ifconfig ens33:0 down route del $VIP echo "ipvsamd stoped--------------------[ok]" ;;stop) /sbin/ipvsadm -C systemctl stop ipvsadm ifconfig ens33:0 down route del $VIP echo "ipvsamd stoped--------------------[ok]" ;; status) if [ ! -e ar/lock/subsys/ipvsadm ];then echo "ipvsadm stoped--------------------" exit 1 else echo "ipvsamd Runing-------------[ok]" fi ;; *) echo "Usage: $0 {start|stop|status}" exit 1 esac exit 0[root@dr2 ~]# chmod +x dr.sh[root@dr2 ~]# service dr.sh start[root@dr2 ~]# systemctl status ipvsadm #查看服务开启状态[root@dr2 ~]# systemctl stop firewalld.service[root@dr2 ~]# setenforce 0
第三步配置centos7-3--web1节点服务器
1.安装httpd软件包
[root@web-1 ~]# yum install httpd -y
2.修改网卡模式:仅主机并固定IP:192.168.100.88
[root@web-1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTO=staticIPADDR=192.168.100.88NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@web-1 ~]# service network restart #重启网卡[root@web-1 ~]# systemctl stop firewalld.service #关闭防火墙[root@web-1 ~]# setenforce 0[root@web-1 ~]# systemctl start httpd.service #启动网站服务
3.创建网站首页
[root@web-1 ~]# cd /var/www/html/[root@web-1 ~]# echo "this is accp web" > index.html
4.创建虚拟网卡
[root@web-1 ~]# cd /etc/sysconfig/network-scripts/[root@web-1 ~]# cp ifcfg-lo ifcfg-lo:0[root@web-1 ~]# vim ifcfg-lo:0#删除原来所有信息,添加以下内容:DEVICE=Lo:0IPADDR=192.168.100.100NETMASK=255.255.255.0ONBOOT=yes
5.编写服务启动脚本
[root@web-1 ~]# cd /etc/init.d/[root@web-1 ~]# vim web.sh #控制服务启动脚本#!/bin/bashVIP=192.168.100.100 case "$1" in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /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/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/lo/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 Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0[root@web-1 ~]# chmod +x web.sh[root@web-1 ~]# service web.sh start[root@web-1 ~]# ifup lo:0 在web2节点服务器上查看IP,可以看到虚拟IP就说明没问题:ifconfigfirefox "http://127.0.0.1/" & #直接访问网站[root@web-1 ~]# service web.sh stop[root@web-1 ~]# service web.sh start #建议重启服务
第四步配置centos7-4--web2节点服务器
1.安装httpd软件包
[root@web-2 ~]# yum install httpd -y
2.调整网卡模式为仅主机并固定IP:192.168.100.99
[root@web-2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTO=staticIPADDR=192.168.100.99NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@web-2 ~]# service network restart #重启网卡[root@web-2 ~]# systemctl stop firewalld.service #关闭防火墙[root@web-2 ~]# setenforce 0[root@web-2 ~]# systemctl start httpd.service[root@web-2 ~]# systemctl status httpd.service[root@web-2 ~]# cd /var/www/html/[root@web-2 ~]# echo "this is benet web" > index.html[root@web-2 ~]# cd /etc/sysconfig/network-scripts/[root@web-2 ~]# cp ifcfg-lo ifcfg-lo:0[root@web-2 ~]# vim ifcfg-lo:0DEVICE=Lo:0IPADDR=192.168.100.100NETMASK=255.255.255.0ONBOOT=yes[root@web-2 ~]# cd /etc/init.d/[root@web-2 ~]# vim web.sh #控制服务启动脚本#!/bin/bashVIP=192.168.100.100 case "$1" in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /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/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/lo/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 Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0[root@web-2 ~]# chmod +x web.sh[root@web-2 ~]# service web.sh start#开启虚拟网卡[root@web-2 ~]# ifup lo:0 firefox "http://127.0.0.1/" & #直接访问网站#关闭并重启服务[root@web-2 ~]# service web.sh stop[root@web-2 ~]# service web.sh start
第五步:使用Win7客户端测试
1.使用win7,调整网卡为仅主机模式
2.使用客户机尝试联通服务器
C:\Users\czt>ping 192.168.100.100正在 Ping 192.168.100.100具有 32 字节的数据:来自 192.168.100.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.100.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.100.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.100.100 的回复: 字节=32 时间<1ms TTL=64192.168.100.100 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 0ms,平均 = 0ms
3.使用客户机浏览网页,输入http://192.168.100.100/
第六步:keepalived部署(两台调度服务器上配置一样)
[root@dr1 ~]# cd /etc/keepalived/[root@dr1 ~]# vim keepalived.confglobal_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 127.0.0.1 #指向本地 smtp_connect_timeout 30 router_id LVS_01 #指定名称,备份服务器不同名称,另一台为02 vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0}vrrp_instance VI_1 { state MASTER #备份服务器将MASTER换为BACKUP interface eth0 virtual_router_id 10 #组号相同 priority 100 #优先级,备小于主 advert_int 1 authentication { auth_type PASS auth_pass abc123 #验证密码 } virtual_ipaddress { 192.168.100.100 #虚拟IP }}virtual_server 192.168.100.100 80 { #虚拟IP及端口号 delay_loop 6 lb_algo rr lb_kind DR #改为DR persistence_timeout 50 protocol TCP real_server 192.168.100.88 80 { #节点服务器1 weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.100.99 80 { #节点服务器2 weight 1 TCP_CHECK { #修改为TCP_CHECK connect_port 80 #添加端口 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }}#启动keepalived服务[root@dr1 ~]# systemctl start keepalived.service
第七步:使用客户端测试
1.模拟down掉一台调度服务器
[root@dr1 init.d]# ifdown ens33:0
2.在win7上尝试互联服务器,如果在win7上还能ping通,就说明另一台调度服务器已经接替并开始工作
C:\Users\czt>ping 192.168.100.100正在 Ping 192.168.100.66 具有 32 字节的数据:来自 192.168.100.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.100.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.100.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.100.100 的回复: 字节=32 时间<1ms TTL=64192.168.100.100 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 0ms,平均 = 0ms
至此,实验已验证成功!
谢谢阅读!!!
服务
服务器
网卡
路由
字节
时间
功能
脚本
节点
调度
工作
配置
主机
客户
模式
路由器
数据
状态
网站
软件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
java删除服务器文件
华美博弈软件开发有限公司
文广新局网络安全管理制度
现场服务器怎么连接
软件开发锐龙和酷睿选哪个
万科数据库论文如何下载
沄游网络技术有限公司
招聘游戏软件开发人员
东莞软件开发公司有哪些
网络安全意义的再认识
鄢陵县实验小学网络安全宣传
威海智慧团建软件开发公司
科学家数据库制作
emule 服务器 更新
合肥Web软件开发
网络服务器的安全管理
网络安全自查工作总结 单位
服务器怎么匹配
星研软件开发版
辽宁逍遥网络技术公司
农村网络安全app
女性网络安全手册漫画
数据库dba
律师求职软件开发
免费的外文文献数据库
vs2015建立的数据库
一般游戏服务器的维护成本是多少
宁波手机软件开发怎么选
武汉做软件开发
腾讯互联网加科技城