首先打开两台机器的ip_forward转发功能
[root@LVS_Master ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
需要安装以下软件包
[root@LVS_Master src]# yum install -y libnl* popt*
安装ipvsadm
[root@LVS_Master src]# yum install -y ipvsadm
两台机器都编写LVS启动脚本/etc/init.d/realserver
[root@MySQL1 ~]
VIP=10.22.86.50
. /etc/rc.d/init.d/functions
case "$1" in
start)
/sbin/ifconfig lo down
/sbin/ifconfig lo up
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
/sbin/sysctl -p >/dev/null 2>&1
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
echo "LVS-DR real server starts successfully.\n"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $VIP >/dev/null 2>&1
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
echo "LVS-DR real server stopped.\n"
;;
status)
isLoOn=`/sbin/ifconfig lo:0 | grep "$VIP"`
isRoOn=`/bin/netstat -rn | grep "$VIP"`
if [ "$isLoON" == "" -a "$isRoOn" == "" ]; then
echo "LVS-DR real server has run yet."
else
echo "LVS-DR real server is running."
fi
exit 3
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
将lvs脚本加入开机自启动
[root@MySQL1 ~]# chmod +x /etc/init.d/realserver
[root@MySQL1 ~]# echo "/etc/init.d/realserver start" >> /etc/rc.d/rc.local
[root@MySQL1 ~]# /etc/init.d/realserver start
查看MySQL1 Real Server服务器,发现VIP已经成功绑定到本地回环口lo上了
[root@localhost ~]
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.22.86.40 netmask 255.255.255.0 broadcast 10.22.86.255
inet6 fe80::20c:29ff:fe17:85d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:17:08:5d txqueuelen 1000 (Ethernet)
RX packets 44065 bytes 52703413 (50.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 29290 bytes 2542398 (2.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 196 bytes 17232 (16.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 196 bytes 17232 (16.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 10.22.86.50 netmask 255.255.255.255
loop txqueuelen 1000 (Local Loopback)
配置iptables防火墙
1)后端两台机器MySQL1 Real Server和MySQL2 Real Server要在iptables里开放3306端口
[root@MySQL1 ~]# vim /etc/sysconfig/iptables
......
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
[root@MySQL1 ~]# /etc/init.d/iptables restart
2)LVS_Master和LVS_Backup两台机器要在iptables开放VRRP组播地址的相关规则。
注意:这个一定要设置!!!否则会出现故障时的VIP资源漂移错乱问题!
[root@LVS_Master ~]# vim /etc/sysconfig/iptables //两台LVS机器都要设置
.......
-A INPUT -s 10.22.86.0/24 -d 224.0.0.18 -j ACCEPT //允许组播地址通信
-A INPUT -s 10.22.86.0/24 -p vrrp -j ACCEPT //允许VRRP(虚拟路由器冗余协)通信
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
[root@LVS_Master ~]# /etc/init.d/iptables restart
接着配置LVS+Keepalived配置
1)LVS_Master上的操作
[root@LVS_Master ~]
global_defs {
router_id ha1
}
vrrp_instance VI_1 {
state MASTER
interface ens32
virtual_router_id 66
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.22.86.50/24
}
}
virtual_server 10.22.86.50 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 10.22.86.200 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
virtual_server 10.22.86.50 3306 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 10.22.86.200 3306 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
/usr/local/keepalived/sbin/keepalived -D
[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 10.22.86.50:80 wrr persistent 50
TCP 10.22.86.50:3306 wrr persistent 50
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统