一、构建环境介绍
director server: 192.168.50.232
VIP(virtual ip): 192.168.50.252
real server 1: 192.168.50.207
real server 2: 192.168.50.235
测试服务器: 192.168.50.208

三台服务器都关闭防火墙和selinux(systemctl stop firewalld && setenforce 0)
注:这里仅仅是测试,所以都是暂时关闭,重启将失效

二 服务器设置:

  1. 192.168.50.207和192.168.50.235上安装httpd服务(232上没安装的),用于后面的测试
    [root@localhost ~]#yum install -y httpd
    [root@localhost ~]#cd /var/www/html/
    [root@localhost ~]#cd /var/www/html/
    [root@localhost html]# echo 207 > index.html(207服务器上)
    [root@localhost html]# echo 235 > index.html(235服务器上)
    测试207和235的httpd服务
    [root@localhost html]# curl 192.168.50.207:80
    207
    [root@localhost html]# curl 192.168.50.235:80
    235
    注:如果没有安装curl,用yum 安装cul工具

  2. 232服务器上安装ipvsadm工具(从2.4版本开始,linux内核默认支持LVS(Linux Virtual Server服务),ipvsadm是提供给用户使用Linux Virtual Server 的接口命令行工具)
    [root@localhost ~]# yum -y install ipvsadm
    编制脚本
    [root@localhost lvs_dir]# cat lvs_dr.sh
    #!/bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    ipv=/usr/sbin/ipvsadm
    vip=192.168.50.252
    rs1=192.168.50.207
    rs2=192.168.50.235
    ifconfig ens160:0 down
    ifconfig ens160:0 $vip broadcast $vip netmask 255.255.255.255 up
    route add -host $vip dev ens160:0
    $ipv -C
    $ipv -A -t 192.168.50.252:80 -s rr
    $ipv -a -t $vip:80 -r 192.168.50.207:80 -g -w 1
    $ipv -a -t 192.168.50.252:80 -r 192.168.50.235:80 -g -w 1
    注: 本人测试中,这里真实服务器的端口设置是无效的。即使vip的端口号和real server的端口号设置不同,实际查看规则时,还是看到real server的端口跟vip中的端口相同
    执行脚本:
    [root@localhost lvs_dir]# sh lvs_dr.sh
    保存规则(用于永久生效规则)
    [root@localhost lvs_dir]# sh lvs_dr.sh
    [root@localhost lvs_dir]# ipvsadm --save
    查看规则:
    [root@localhost lvs_dir]# ipvsadm -ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    TCP 192.168.50.252:80 rr
    -> 192.168.50.207:80 Route 1 0 0
    -> 192.168.50.235:80 Route 1 0 0

  3. 207和235上编写脚本
    [root@localhost lvs_dir]# cat lvs_dr_rs.sh
    #!/bin/bash
    vip=192.168.50.252
    ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
    route add -host ¥vip 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
    注意:这里子网掩码确实是4个255,不然不行(会导致网络不可用)。

[root@localhost lvs_dir]# sh lvs_dr_rs.sh

  1. 在208服务器上测试
    [mysql@localhost ~]$ curl 192.168.50.252:80
    207
    [mysql@localhost ~]$ curl 192.168.50.252:80
    235

mysql服务器的负责均衡也可以用LVS处理

参考博客: https://blog.csdn.net/Ki8Qzvka6Gz4n450m/article/details/79119665
参考网络博客: https://blog.51cto.com/291268154/2488834