Docker Compose 快速一键部署 TiDB 测试集群
1. 下载 tidb-docker-compose
[root@foundation21 pub]# cd /tmp/docker/
[root@foundation21 docker]# mkdir tidb # 创建存放 tidb 及compose 相关的目录
[root@foundation21 docker]# cd tidb/
[root@foundation21 tidb]# git clone https://github.com/pingcap/tidb-docker-compose.git # 从官方获取 tidb-docker-compose
Cloning into 'tidb-docker-compose'...
remote: Counting objects: 309, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 309 (delta 12), reused 17 (delta 6), pack-reused 271
Receiving objects: 100% (309/309), 180.81 KiB | 48.00 KiB/s, done.
Resolving deltas: 100% (123/123), done.
从官方克隆成功,可看到相关目录及文件
[root@foundation21 tidb]# ls
tidb-docker-compose
[root@foundation21 tidb]# cd tidb-docker-compose/
[root@foundation21 tidb-docker-compose]# ls
compose docker docker-compose.yml README.md tidb-vision tispark tools
config docker-compose-test.yml pd tidb tikv tispark-tests
每个目录都存放有建立各个镜像对应的 dockfile
2. 从docker官方库拉取相应的镜像
[root@foundation21 tidb-docker-compose]# docker-compose pull
Pulling pd0 ... done
Pulling pd1 ... done
Pulling pd2 ... done
Pulling tikv0 ... done
Pulling tikv1 ... done
Pulling tikv2 ... done
Pulling tidb ... done
Pulling tispark-master ... done
Pulling tispark-slave0 ... done
Pulling tidb-vision ... done
Pulling pushgateway ... done
Pulling prometheus ... done
Pulling grafana ... done
Pulling dashboard-installer ... done
拉取成功,查看已有镜像
[root@foundation21 tidb-docker-compose]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pingcap/tikv latest 718ae5dc20c4 11 hours ago 180 MB
pingcap/pd latest c8de9477c82b 20 hours ago 75.5 MB
pingcap/tidb latest 7c868d978955 21 hours ago 58.1 MB
test.com/rhel7 v1 a7b1fe3ff643 2 days ago 169 MB
rhel7 v1 a7b1fe3ff643 2 days ago 169 MB
pingcap/tidb-dashboard-installer v2.0.0 525237773def 7 days ago 62 MB
nginx latest c82521676580 4 weeks ago 109 MB
test.com/nginx v1 c82521676580 4 weeks ago 109 MB
pingcap/tispark latest aa044a92789b 4 weeks ago 793 MB
pingcap/tidb-vision latest e9b25d9f7bdb 3 months ago 47.5 MB
prom/prometheus v2.2.1 cc866859f8df 5 months ago 113 MB
grafana/grafana 4.6.3 5d1d85717268 8 months ago 284 MB
dockersamples/visualizer latest 17e55a9b2354 11 months ago 148 MB
test.com/visualizer latest 17e55a9b2354 11 months ago 148 MB
game2048 latest 19299002fdbe 20 months ago 55.5 MB
test.com/game2048 latest 19299002fdbe 20 months ago 55.5 MB
prom/pushgateway v0.3.1 434efa6ed9db 21 months ago 13.2 MB
haproxy latest fbd1f55f79b3 2 years ago 139 MB
registry 2.3.1 83139345d017 2 years ago 166 MB
ubuntu latest 07c86167cdc4 2 years ago 188 MB
stress latest db646a8f4087 4 years ago 282 MB
可看到集群及监控所需镜像
3. 启动集群
[root@foundation21 tidb-docker-compose]# docker-compose up -d
Creating network "tidb-docker-compose_default" with the default driver
Creating tidb-docker-compose_tidb-vision_1 ... done
Creating tidb-docker-compose_prometheus_1 ... done
Creating tidb-docker-compose_pushgateway_1 ... done
Creating tidb-docker-compose_grafana_1 ... done
Creating tidb-docker-compose_pd2_1 ... done
Creating tidb-docker-compose_dashboard-installer_1 ... done
Creating tidb-docker-compose_pd1_1 ... done
Creating tidb-docker-compose_pd0_1 ... done
Creating tidb-docker-compose_tikv1_1 ... done
Creating tidb-docker-compose_tikv0_1 ... done
Creating tidb-docker-compose_tikv2_1 ... done
Creating tidb-docker-compose_tispark-master_1 ... done
Creating tidb-docker-compose_tidb_1 ... done
Creating tidb-docker-compose_tispark-slave0_1 ... done
4. 使用数据库
[root@foundation21 tidb-docker-compose]# mysql -h 127.0.0.1 -P 4000 -u root
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
这里发现无法启动
无法启动集群是因为linux最大文件句柄数
大家知道在linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一。无法启动tidv就是因为文件句柄数的限制
可以通过修改docker-compose.yml 文件内容就行优化
在linux中执行ulimit -a 即可查询linux相关的参数,如下所示:
[root@foundation21 tidb-docker-compose]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15234
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024 # 此行限制
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 15234
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
5. 编辑 docker-compose.yml,修改如下内容:
55 tikv0:
56 image: pingcap/tikv:latest
57 ulimits:
58 nofile:
59 soft: 1000000
60 hard: 1000000
61 volumes:
62 - ./config/tikv.toml:/tikv.toml:ro
63 - ./data:/data
64 command:
65 - --addr=0.0.0.0:20160
66 - --advertise-addr=tikv0:20160
67 - --data-dir=/data/tikv0
68 - --pd=pd0:2379,pd1:2379,pd2:2379
69 - --config=/tikv.toml
70 depends_on:
71 - "pd0"
72 - "pd1"
73 - "pd2"
74 restart: on-failure
75 tikv1:
76 image: pingcap/tikv:latest
77 ulimits:
78 nofile:
79 soft: 1000000
80 hard: 1000000
81 volumes:
82 - ./config/tikv.toml:/tikv.toml:ro
83 - ./data:/data
84 command:
85 - --addr=0.0.0.0:20160
86 - --advertise-addr=tikv1:20160
87 - --data-dir=/data/tikv1
88 - --pd=pd0:2379,pd1:2379,pd2:2379
89 - --config=/tikv.toml
90 depends_on:
91 - "pd0"
92 - "pd1"
93 - "pd2"
94 restart: on-failure
95 tikv2:
96 image: pingcap/tikv:latest
97 ulimits:
98 nofile:
99 soft: 1000000
100 hard: 1000000
修改完成,删除已有集群容器
[root@foundation21 tidb-docker-compose]# docker-compose down
6. 重新进行集群容器建立
[root@foundation25 tidb-docker-compose]# docker-compose up -d
查看容器信息
7. 运行数据库
[root@foundation21 tidb-docker-compose]# mysql -h 127.0.0.1 -P 4000 -u root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.7.10-TiDB-v2.1.0-beta-273-gf3325e2 MySQL Community Server (Apache License 2.0)
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
成功
8 访问集群 Grafana 监控页面
http://localhost:3000 默认用户名和密码均为 admin。
登录成功
查看PD信息