云原生时代必须具备的核心技能之docker高级篇(docker实战之mysql高可用集群搭建)(代码片段)

波波烤鸭 波波烤鸭     2023-02-15     477

关键词:

  本文来给大家介绍下MySQL在Docker中的集群搭建。

MySQL高可用集群搭建

  MySQL集群搭建在实际项目中还是非常必须的,我们通过PXC【Percona XtraDB Cluster】来实现强一致性数据库集群搭建。

1.MySQL集群搭建

1> 拉去镜像

docker pull percona/percona-xtradb-cluster:5.7.21

2> 复制pxc镜像【重命名】

docker tag percona/percona-xtradb-cluster:5.7.21 pxc

3>删除原来的镜像

docker rmi percona/percona-xtradb-cluster:5.7.21

4>创建单独的网段,给MySQL数据库集群使用

docker network create --subnet=172.20.0.0/24 pxc-net
docker network inpsect pxc-net # 查看详情
docker network rm pxc-net # 删除网段

5> 创建和删除volume

docker volume create --name v1 # 创建 volume
docker volume rm v1 # 删除volume
docker volume inspect v1 # 查看详情

6> 搭建pxc集群

准备三个数据卷

docker volume create --name v1 
docker volume create --name v2 
docker volume create --name v3

运行3个PXC容器

[CLUSTER_NAME PXC集群名字]

[XTRABACKUP_PASSWORD数据库同步需要用到的密码]

创建第一个节点

docker run -d -p 3301:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e EXTRABACKUP_PASSWROD=123456 --privileged --name=node1 --net=pxc-net --ip 172.22.0.2 pxc

创建第二个和第三个节点: 注意 -e CLUSTER_JOIN=node1

docker run -d -p 3302:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e EXTRABACKUP_PASSWROD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node2 --net=pxc-net --ip 172.22.0.3 pxc
docker run -d -p 3303:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e EXTRABACKUP_PASSWROD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node3 --net=pxc-net --ip 172.22.0.4 pxc

2.负载均衡服务搭建

  当然在mysql集群搭建好之后我们还得搭建个负载均衡的服务来处理请求。这儿我们选择HaProxy.

实现步骤:

1>拉去镜像

docker pull haproxy

2>创建haproxy的配置文件。

touch /tmp/haproxy/haproxy.cfg

配置文件中的内容

global
	#工作目录,这边要和创建容器指定的目录对应
	# chroot /usr/local/etc/haproxy
	#日志文件
	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.0:8888
	#访问协议
 	mode        http
	#URI相对地址
 	stats uri   /dbs_monitor
	#统计报告格式
 	stats realm     Global\\ statistics
	#登陆帐户信息
 	stats auth  admin:admin
	#数据库负载均衡
	listen  proxy-mysql
	#访问的IP和端口,haproxy开发的端口为3306
 	#假如有人访问haproxy的3306端口,则将请求转发给下面的数据库实例
	bind  0.0.0.0:3306  
 	#网络协议
	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.22.0.2:3306 check weight 1 maxconn 2000  
 	server  MySQL_2 172.22.0.3:3306 check weight 1 maxconn 2000  
	server  MySQL_3 172.22.0.4:3306 check weight 1 maxconn 2000 
	#使用keepalive检测死链
 	option  tcpka

3>创建haproxy容器

docker run  -d -p 8888:8888 -p 3306:3306 -v /tmp/haproxy:/usr/local/etc/haproxy --name haproxy01 --privileged --net=pxc-net haproxy

4>在MySQL数据库上创建用户,用于心跳检测

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

5>win浏览器访问

http://centos_ip:8888/dbs_monitor
用户名密码都是:admin

6>客户端连接工具连接

ip:centos_ip
port:3306
user:root
password:123456

至此搞定~!大家会发现在Docker中部署要远比我们在window或者Linux中直接部署要方便很多哦。快动手试试吧!

云原生时代必须具备的核心技能之docker高级篇(docker实战之springboot项目部署)(代码片段)

  上篇文章介绍了如何搭建MySQL的高可以集群,那么本文就继续在这个基础上我们实现一个具体的SpringBoot项目部署。话不多说,直接开干!!!SpringBoot项目部署  咱们一个实际的项目部署情况应该是这样的。  接下来... 查看详情

云原生时代必须具备的核心技能之docker高级篇(dockercompose-容器编排)(代码片段)

1DockerCompose介绍  Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。一键启动... 查看详情

云原生时代必须具备的核心技能之docker高级篇(harbor-镜像私服)(代码片段)

  本文给大家介绍下Docker中的常用的镜像私服仓库,DockerHub,阿里云仓库和Harbor镜像私服仓库。1Dockerhub官网地址:hub.docker.com(1)在docker机器上登录dockerlogin(2)输入用户名和密码(3)dockerpushq279583842q/tomcat-ip[注意镜像名... 查看详情

云原生时代必须具备的核心技能之docker高级篇(swarm)(代码片段)

解决集群问题k8s官网地址:https://docs.docker.com/engine/swarm/1.Swarm介绍​Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker... 查看详情

云原生之docker详细知识技能介绍与实战

...Docker。Docker容器技术,也是一种虚拟化技术。vm:linuxcentos原生镜像(一个电脑),隔离,需要开启多个虚拟机!docker:隔离,镜像(最核心的环境4m+jdk+mysql)十分小巧,运行镜像就可以了Docker基于Go语言开发的官网:https://www.docker.co... 查看详情

云原生之docker-compose篇docker-compose工具的安装和基本使用

【云原生之docker-compose篇】docker-compose工具的安装和基本使用一、docker-compose介绍1.docker-compose简介2.docker-compose的特点二、docker-composev1版本的安装1.下载docker-compose二进制包2.给文件增加执行权限3.检查docker-compose版本三、docker-compose... 查看详情

一个ios高级工程师必须具备的十五大知识技能点,(你了解多少?)

前言:随着互联网的发展以及未来物联网到来的时代,需要大量移动开发人才。一个开发者走得更高更远,就要站在先人的肩膀,就要不断去专研新技术,站得高看得远,视目阔野前途明亮。移动互联网的高速发展泄洪而来,有... 查看详情

云原生|docker-一文了解docker(代码片段)

...推动了虚拟化、容器化技术的产生和发展,以及现在的云原生时代的到来,都极大提高了其资源利用率。DockerDocker本身不是容器,它只是一个应用容器引擎,这么解释可能有些抽象,大家理解下面内容。三大核心镜像(Image)容器... 查看详情

云原生|docker-一文了解docker(代码片段)

...推动了虚拟化、容器化技术的产生和发展,以及现在的云原生时代的到来,都极大提高了其资源利用率。DockerDocker本身不是容器,它只是一个应用容器引擎,这么解释可能有些抽象,大家理解下面内容。三大核心镜像(Image)容器... 查看详情

云原生核心技术之——容器

导言:作为一个从青少年时代已经步入“中年”的Linux后端服务开发工程师,很多年前深受应用部署方式的困扰,但自打携团队用上了容器技术后,拯救了无数中青年工程师的心情和爱情时间,不信自己看……一、应用部署方式... 查看详情

技能篇:docker的简易教程(代码片段)

虚拟机技术每家公司发展到一定规模都必须考虑的,更好的环境隔离,更好的事故排查,更好的服务部署docker的原理docker更换阿里源docker容器的相关命令Dockerfile文件编写docker镜像的相关命令关注公众号,一起交流... 查看详情

左耳朵耗子:云原生时代的开发者应具备的5大能力

...源代码,“开源正在吞噬软件”;如今,“云原生吞噬开源”,开源项目正在向云化演进。在面对全新时代——云原生 查看详情

你准备好了在云中工作吗?

...这个话题聊下云时代的技能。无服务器计算,容器化,云原生应用,DevOps,人工智能,机器学习以及混合云和多云解决方案等IT趋势正在成为主流或“新常态”。所有大小企业都在寻找具有许多热门趋势关键技能的云专家。在无... 查看详情

左耳朵耗子:云原生时代的开发者应具备这5大能力(代码片段)

...源代码,“开源正在吞噬软件”;如今,“云原生吞噬开源”,开源项目正在向云化演进。在面对全新时代——云原生 查看详情

云原生时代,开发者应具备这5大能力

...源代码,“开源正在吞噬软件”;如今,“云原生吞噬开源”,开源项目正在向云化演进。在面对全新时代——云原 查看详情

云原生:云计算时代命题之终极解决方案

云原生:云计算时代命题之终极解决方案https://blog.csdn.net/broadview2006/article/details/80131068 2017年08月17日14:35:05  CloudNative?云原生?很多人一看到这个词就懵了,到底什么是云原生?  云原生这个词其实由来已久,IT行... 查看详情

云原生|23docker运行web服务实战之tomcat(代码片段)

作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅✒️个人主页:小鹏linux💊个人社区:小鹏linux(个人社区)欢迎您的加入!为大... 查看详情

云原生|docker篇docker架构&中央仓库&安装

目录​​一、Docker架构​​​​1.1基本概念​​​​1.2Docker引擎​​​​二、Docker的中央仓库​​​​三、Docker安装​​​​四、Docker卸载​​Docker:Buildonce,Runanywhere!!!  一、Docker架构Docker使用客户端-服务器(C/S)架构模... 查看详情