2019-11.13更新
经验证,以下方案不仅仅适用于docker,也适用于x86 linux主机或者树莓派等arm架构的linux
公司业务上要求增加数据库,当前生产环境用的是MySQL-cluster集群,非常吃内存且它的高并发性能在新的需求上用不到,要求新搭建一套新的MySQL集群,在此之前要求做一份MySQL各个集群性能测试报告,由于我只有一台测试机,所以要实现多个集群的测试,我准备通过docker实现。PXC的dockers集群搭建之前已经纪录过,目前准备搭建MHA,实现MHA的前提是首先要实现节点之间的ssh互通,废话说多了,这里纪录下docker容器间的SSH互通实现。
之前没玩过,所以测试阶段docker-file就没写,从commit一步一步来
先pull一个centos镜像,这里要特殊说明一点,pull centos镜像的时候记得拉去centos 6系列版本,在7系列版本中,安装ssh服务后,启动ssh会报错权限不足,
ssh-copy-id no identities found error
Failed to get D-Bus connection: Operation not permitted
这两个错误stackoverflow上说是centos7.2官方镜像有变更导致,然而我试了7.5还是有这个问题,时间不等人,我就换成了6.0版本作为基础镜像,相关报错讨论可参考:
https://stackoverflow.com/questions/22530886/ssh-copy-id-no-identities-found-error
要想使用centos7系列镜像,在容器启动的时候必须使用如下命令进行创建:
docker run -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name mha-0 --privileged=true -p 33061:3306 -p 50001:22 -p 50010:50010 --net=mha --ip 172.20.0.2 centos7.4:mha /usr/sbin/init
其中的命令和端口映射镜像选择或者其他参数都可以自行添加或者修改,但是这条启动命令的非上述参数必须都要带,目录参数:-v /sys/fs/cgroup:/sys/fs/cgroup:ro 和 启动方式参数:/usr/sbin/init 是必须要带的;且启动容器后不会进入交互界面,需要以下命令进入交互界面: