0、 为什么要使用数据库集群和负载均衡?

1.高可用

2.高并发

3.高性能

一、 使用docker安装PXC

#### 1.拉取PXC镜像

1
docker pull perconapercona-xtradb-cluster5.7
#### 2.创建volume卷
1
2
3
docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
#### 3.创建network网络
1
docker network create --subnet=172.18.0.024 net1
#### 4.运行PXC容器
1
2
3
4
5
6
7
8
# 创建node1
docker run -d -p 80023306 -v v1varlibmysql -e MYSQL_ROOT_PASSWORD=qwe123 -e XTRABACKUP_PASSWORD=qwe123 -e CLUSTER_NAME=PXC --name=node1 --net=net1 --ip 172.18.0.2 perconapercona-xtradb-cluster5.7

# 创建node2
docker run -d -p 80033306 -v v2varlibmysql -e MYSQL_ROOT_PASSWORD=qwe123 -e XTRABACKUP_PASSWORD=qwe123 -e CLUSTER_NAME=PXC -e CLUSTER_JOIN=node1 --name=node2 --net=net1 --ip 172.18.0.3 perconapercona-xtradb-cluster5.7

# 创建node3
docker run -d -p 80043306 -v v3varlibmysql -e MYSQL_ROOT_PASSWORD=qwe123 -e XTRABACKUP_PASSWORD=qwe123 -e CLUSTER_NAME=PXC -e CLUSTER_JOIN=node1 --name=node3 --net=net1 --ip 172.18.0.4 perconapercona-xtradb-cluster5.7

二、负载均衡 Haproxy:

#### 2.使用docker安装Haproxy

1
2
3
4
5
# 拉取haproxy image
docker pull haproxy

# 在虚拟机中创建保存haproxy配置文件的目录
mkdir -p ~haproxy_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
# 创建haproxy.cfg配置文件
global
#工作目录
chroot usrlocaletchaproxy
#日志文件,使用rsyslog服务中local5日志设备(varloglocal5),等级info
log 127.0.0.1 local5 info
#守护进程运行
daemon

defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

#监控界面
listen admin_stats
#监控界面的访问的IP和端口
bind 0.0.0.08888
#访问协议
mode http
#URI相对地址
stats uri
stats realm Global statistics
#登陆帐户信息
stats auth adminqwe123
#数据库负载均衡
listen proxy-mysql
#访问的IP和端口
bind 0.0.0.03306
#网络协议
mode tcp
#负载均衡算法(轮询算法)
#轮询算法:roundrobin
#权重算法:static-rr
#最少连接算法:leastconn
#请求源IP算法:source
balance roundrobin
#日志格式
option tcplog
#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
option mysql-check user haproxy
server MySQL_1 172.18.0.23306 check weight 1 maxconn 2000
server MySQL_2 172.18.0.33306 check weight 1 maxconn 2000
server MySQL_3 172.18.0.43306 check weight 1 maxconn 2000
option tcpka
1
2
3
4
5
6
7
8
# 运行容器
docker run -it -d -p 80788888 -p 80363306 -v homepyviphaproxy_confusrlocaletchaproxy --name h1 --privileged --net=net1 --ip 172.18.0.5 haproxy

# 进入haproxy容器,启动haproxy
docker exec -it h1 bash

# 加载haproxy配置文件
haproxy -f usrlocaletchaproxyhaproxy.cfg
1
2
3
4
5
6
7
#### 3.使用Navicat登录haproxy

在数据库中创建一个没有任何权限的haproxy用户,密码为空,来测试mysql负载均衡是否正常。

```linux
CREATE USER 'haproxy'@'%' IDENTIFIED BY '';
```