기본 Docker 지침:
소프트웨어 패키지 업데이트
yum -y update
Docker 가상 머신 설치(centos 7)
yum install -y docker
Docker 가상 머신 실행, 다시 시작, 종료
service docker start service docker stop
미러 검색
docker search 镜像名称
미러 다운로드
docker pull 镜像名称
보기 Mirrors
docker images
이미지 삭제
docker rmi 镜像名称
컨테이너 실행
docker run 启动参数 镜像名称
컨테이너 목록 보기
docker ps -a
Java 환경을 사용하려면 다음과 같이 할 수 있습니다:
搜索: [root@vm_71_225_centos ~]# docker search java index name description stars official automated docker.io docker.io/node node.js is a javascript-based platform for... 5752 [ok] docker.io docker.io/tomcat apache tomcat is an open source implementa... 1891 [ok] docker.io docker.io/java java is a concurrent, class-based, and obj... 1745 [ok] docker.io docker.io/openjdk openjdk is an open-source implementation o... 1031 [ok]
下载: [root@vm_71_225_centos ~]# docker pull docker.io/java using default tag: latest trying to pull repository docker.io/library/java ... latest: pulling from docker.io/library/java 5040bd298390: downloading [=> ] 1.572 mb/51.36 mb
运行: [root@vm_71_225_centos ~]# docker run -it --name myjava docker.io/java bash root@25623e12b759:/# java -i: 以交互模式运行容器,通常与 -t 同时使用; -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
pxc 클러스터를 설치합니다(우리는 하지 않을 것입니다) mysql pxc 클러스터 및 복제 클러스터는 여기에 있음) 솔루션의 장점과 단점에 대한 설명, 여기서는 pxc 클러스터 솔루션을 선택합니다[다중 노드 백업 및 강력한 페더레이션]):
pxc 이미지 설치
docker pull percona/percona-xtradb-cluster
로컬 보기 image
[root@vm_71_225_centos ~]# docker images repository tag image id created size docker.io/hello-world latest e38bc07ac18e 2 months ago 1.85 kb docker.io/percona/percona-xtradb-cluster latest f1439de62087 3 months ago 413 mb docker.io/java latest d23bdf5b1b1b 17 months ago 643 mb
docker.io/percona/percona-xtradb-cluster가 너무 깁니다. 이름을 바꾸세요:
[root@vm_71_225_centos ~]# docker tag percona/percona-xtradb-cluster pxc [root@vm_71_225_centos ~]# docker images repository tag image id created size docker.io/hello-world latest e38bc07ac18e 2 months ago 1.85 kb docker.io/percona/percona-xtradb-cluster latest f1439de62087 3 months ago 413 mb pxc latest f1439de62087 3 months ago 413 mb docker.io/java latest d23bdf5b1b1b 17 months ago 643 mb
net1 네트워크 세그먼트 만들기:
docker network create --subnet=172.18.0.0/16 net1
5개의 데이터 볼륨을 만듭니다(pxc는 호스트 시스템의 데이터에 직접 액세스할 수 없으므로 5개의 Docker 데이터 볼륨이 생성됨)
docker volume create v1 docker volume create v2 docker volume create v3 docker volume create v4 docker volume create v5
데이터 볼륨 위치 보기:
[root@vm_71_225_centos code]# docker inspect v1 [ { "driver": "local", "labels": {}, "mountpoint": "/var/lib/docker/volumes/v1/_data", "name": "v1", "options": {}, "scope": "local" } ]
5노드 pxc 클러스터 생성
#创建第1个mysql节点 docker run -d -p 3306:3306 -e mysql_root_password=abc123456 -e cluster_name=pxc -e xtrabackup_password=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
두 번째 노드를 생성하기 전에 2분 동안 기다렸다가 두 번째 노드를 시작하세요. 그렇지 않으면 즉시 중지됩니다
다른 노드 만들기:
#创建第2个mysql节点 docker run -d -p 3307:3306 -e mysql_root_password=abc123456 -e cluster_name=pxc -e xtrabackup_password=abc123456 -e cluster_join=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc #创建第3个mysql节点 docker run -d -p 3308:3306 -e mysql_root_password=abc123456 -e cluster_name=pxc -e xtrabackup_password=abc123456 -e cluster_join=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc #创建第4个mysql节点 docker run -d -p 3309:3306 -e mysql_root_password=abc123456 -e cluster_name=pxc -e xtrabackup_password=abc123456 -e cluster_join=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc #创建第5个mysql节点 docker run -d -p 3310:3306 -e mysql_root_password=abc123456 -e cluster_name=pxc -e xtrabackup_password=abc123456 -e cluster_join=node1 -v v5:/var/lib/mysql -v backup:/data --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc
모든 mysql 노드에서 데이터베이스 만들기 테스트:
mysql -h 172.18.0.3 -uroot -pabc123456 mysql> create database test; query ok, 1 row affected (0.03 sec)
다른 노드 데이터베이스에 로그인하면 동기화되어 간단한 mysql 클러스터를 형성하는 것을 볼 수 있습니다.
고가용성 및 로드 밸런싱을 위해 haproxy 설치
Pull haproxy
docker pull haproxy
haproxy 구성 파일 작성
vi /home/soft/haproxy.cfg
구성 파일은 다음과 같습니다.
global #工作目录 chroot /usr/local/etc/haproxy #日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级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.0:8888 #访问协议 mode http #uri相对地址 stats uri /dbs #统计报告格式 stats realm global\ statistics #登陆帐户信息 stats auth admin:abc123456 #数据库负载均衡 listen proxy-mysql #访问的ip和端口 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.18.0.2:3306 check weight 1 maxconn 2000 server mysql_2 172.18.0.3:3306 check weight 1 maxconn 2000 server mysql_3 172.18.0.4:3306 check weight 1 maxconn 2000 server mysql_4 172.18.0.5:3306 check weight 1 maxconn 2000 server mysql_5 172.18.0.6:3306 check weight 1 maxconn 2000 #使用keepalive检测死链 option tcpka
첫 번째 haproxy 로드 밸런싱 서버 생성
코드 복사 코드는 다음과 같습니다:
docker run -it -d -p 4001:8888 -p 4002:3306 - v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net =net1 --ip 172.18.0.7 haproxy
h1 컨테이너에 들어가서 haproxy
docker exec -it h1 bash haproxy -f /usr/local/etc/haproxy/haproxy.cfg
를 시작하고 시작이 성공했는지 확인하세요.
http://ip:4001/dbs
를 방문하여 keepalive를 설치하세요. 핫백업 더블클릭
위 내용은 Docker를 사용하여 MySQL 클러스터를 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!