lvs-dr模型实现mysql负载均衡集群

环境

名称 IP 类型
客户机 192.168.153.27 CIP
DR 192.168.153.200 VIP
DR 192.168.153.20 DIP
RS1 192.168.153.200 VIP
RS1 192.168.153.22 RIP
RS2 192.168.153.200 VIP
RS2 192.168.153.25 RIP

1. 在Client上配置CIP

[root@Client ~]# ip a s ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:86:24:c1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.153.27/24 brd 192.168.153.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe86:24c1/64 scope link 
       valid_lft forever preferred_lft forever

2. 在DR上配置DIP和VIP

[root@DR ~]# ip addr add 192.168.153.200/32 dev lo
[root@DR ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.153.200/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:97:c3:66 brd ff:ff:ff:ff:ff:ff
    inet 192.168.153.20/24 brd 192.168.153.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe97:c366/64 scope link 
       valid_lft forever preferred_lft forever

3. 在RS上修改网卡内核参数

[root@RS1 ~]# vim /etc/sysctl.conf 
//添加下面两行内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@RS2 ~]# vim /etc/sysctl.conf 
//添加下面两行内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

4. 在RS上配置VIP和RIP

RS1

[root@RS1 ~]# ip addr add 192.168.153.200/32 dev lo
[root@RS1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.153.200/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2d:e0:d6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.153.22/24 brd 192.168.153.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe2d:e0d6/64 scope link 
       valid_lft forever preferred_lft forever

RS2

[root@RS2 ~]# ip addr add 192.168.153.200/32 dev lo
[root@RS2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.153.200/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:9b:a5:b7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.153.25/24 brd 192.168.153.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe9b:a5b7/64 scope link 
       valid_lft forever preferred_lft forever

5. 配置路由信息

[root@DR ~]# route add -host 192.168.153.200 dev lo
[root@RS1 ~]# route add -host 192.168.153.200 dev lo
[root@RS2 ~]# route add -host 192.168.153.200 dev lo

6. 在RS上配置MySQL

[root@RS1 ~]# yum -y install mariadb*
[root@RS1 ~]# systemctl enable --now mariadb
[root@RS1 ~]# mysql -e 'create database RS1'  //创建库
[root@RS1 ~]# mysql
MariaDB [(none)]> grant all on *.* to root@'192.168.153.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
[root@RS1 ~]# mysql -e 'show databases' |wc -l
5 //RS1上有5个库

[root@RS2 ~]# yum -y install mariadb*
[root@RS2 ~]# systemctl enable --now mariadb
[root@RS1 ~]# mysql
MariaDB [(none)]> grant all on *.* to root@'192.168.153.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
[root@RS2 ~]# mysql -e 'show databases' |wc -l
4  //RS2上有4个库

7. 在DR上配置规则

[root@DR ~]# ipvsadm -A -t 192.168.153.200:3306 -s wrr
[root@DR ~]# ipvsadm -a -t 192.168.153.200:3306 -r 192.168.153.22 -g
[root@DR ~]# ipvsadm -a -t 192.168.153.200:3306 -r 192.168.153.25 -g
[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@DR ~]# 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.153.200:3306 wrr
  -> 192.168.153.22:3306         Route   1      0          0         
  -> 192.168.153.25:3306         Route   1      0          0 

8. 在客户端验证

[root@Client ~]# for i in $(seq 4);do mysql -uroot -p123 -h192.168.153.200 -e 'show databases' |wc -l ;done
4
5
4
5
//RS1上有5个库,显示5为访问RS1,RS2上有4个库,显示4为访问RS2

猜你喜欢

转载自blog.csdn.net/lnsistw/article/details/107622738