架构图

目前Galera部分已经能实现数据库同步功能,本文主要构建LVS部分。
LVS+Galera

两种负载均衡方式

本次使用nat模式和DR模式分别实现负载均衡。

NAT模式(网络地址转换模式):在LVS服务器中修改请求报文的IP地址,实现对内部服务器的访问。LVS相当于一个工作到四层模型的一个反向代理。
优点:无需设备。节约成本,内部服务器可以无需公网地址和接入公网的设备
缺点:需要消耗一定的计算机资源。响应时间较长。
LVS+Galera

DR模式(直接路由模式):
前提:LVS服务器和后端服务器必须在同一个局域网中,且这个局域网中每台主机必须要拥有一个公网VIP地址—–服务器的 VIP 地址 必须配置在Non-ARP的网络设备上,确保后端服务器能够接入公网。
DR模式的工作模式中,LVS服务器仅仅负责对客户端请求的转发—–通过修改目标MAC地址,回复客户端直接由后端服务器完成。
优点:速度更快,性能更高
缺点:造价成本较高
LVS+Galera

NAT模式

[root@lvs-12 ~]# yum install ipvsadm
设置LVS规则:

1
2
3
4
5
6
[root@lvs-12 ~]# ipvsadm -C
[root@lvs-12 ~]# ipvsadm -A -t 192.168.1.12:3306 -s rr
## -g表示使用DR模式,-m表示使用NAT模式,-i表示使用TUN模式
[root@lvs-12 ~]# ipvsadm -a -t 192.168.1.12:3306 -r 192.168.1.31:3306 -m
[root@lvs-12 ~]# ipvsadm -a -t 192.168.1.12:3306 -r 192.168.1.32:3306 -m
[root@lvs-12 ~]# ipvsadm -a -t 192.168.1.12:3306 -r 192.168.1.33:3306 -m

查看规则:
[root@lvs-12 ~]# ipvsadm -L
LVS+Galera

使用任意客户端查看:
[root@mysql-31 ~]# mysql -uli -h192.168.1.12 -e “select * from class.m_class;”

DR模式

本模式使用LVS+keepalive结合实现,实现LVS的高可用性
[root@lvs-12 ~]# yum install keepalived
配置keepalive:
[root@lvs-12 ~]# vim /etc/keepalived/keepalived.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
global_defs {
notification_email {
test@sina.com
}
router_id LVS12
}

vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 90 ##不能和同局域网的其它 VRRP组重复
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
notify_backup "/etc/keepalived/vrrp.sh BACKUP VI_1"
notify_master "/etc/keepalived/vrrp.sh MASTER VI_1"
notify_fault "/etc/keepalived/vrrp.sh FAULT VI_1"
virtual_ipaddress {
192.168.1.80
}
}
## --------------------------LVS 相关配置
virtual_server 192.168.1.80 3306 {
delay_loop 6
lb_algo rr
## lb_algo {rr|wrr|lc|wlc|lblc|lblcr}
lb_kind DR
persistence_timeout 0
protocol TCP
# sorry_server 127.0.0.1 80

real_server 192.168.1.31 3306 {
weight 1
notify_up /etc/keepalived/up.sh
notify_down /etc/keepalived/down.sh
TCP_CHECK {
connect_ip 192.168.1.31
connect_port 3306
connect_timeout 3
nb_get_retry 1
delay_before_retry 3
}
}
real_server 192.168.1.32 3306 {
weight 1
notify_up /etc/keepalived/up.sh
notify_down /etc/keepalived/down.sh
TCP_CHECK {
connect_ip 192.168.1.32
connect_port 3306
connect_timeout 3
nb_get_retry 1
delay_before_retry 3
}
}
real_server 192.168.1.33 3306 {
weight 1
notify_up /etc/keepalived/up.sh
notify_down /etc/keepalived/down.sh
TCP_CHECK {
connect_ip 192.168.1.33
connect_port 3306
connect_timeout 3
nb_get_retry 1
delay_before_retry 3
}
}

}

启动keepalive服务:
[root@lvs-12 /etc/keepalived]# systemctl restart keepalived.service
LVS+Galera
在后端的三台真实服务器执行以下脚本,目的为获得一个VIP,回应客户端的请求:
[root@mysql-31 ~]# cat RS.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#! /bin/bash
vip=192.168.1.80

start()
{
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
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
}

stop()
{
ifconfig lo:0 $vip down
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
}

case $1 in
start)
start
;;
stop)
stop
;;
*)
echo "$0 in [ start | stop ]"
esac

LVS+Galera
LVS+Galera

最后更新: 2019年10月20日 18:29

原始链接: https://LiYuanSh.github.io/2019/10/20/运维实战-Lvs-Galera集群/

× 请我吃糖~
打赏二维码