docker 搭建Mysql集群的方法示例
docker基本指令:
更新軟件包
yum -y update
安裝Docker虛擬機(centos 7)
yum install -y docker
運行、重啟、關閉Docker虛擬機
service docker start service docker stop
搜索鏡像
docker search 鏡像名稱
下載鏡像
docker pull 鏡像名稱
查看鏡像
docker images
刪除鏡像
docker rmi 鏡像名稱
運行容器
docker run 啟動參數(shù) 鏡像名稱
查看容器列表
docker ps -a
當我們想要使用java環(huán)境,我們可以這么操作:
搜索: [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集群與replication集群的方案優(yōu)劣說明,在此選用pxc集群方案[多節(jié)點備份與強聯(lián)合性]):
安裝PXC鏡像
docker pull percona/percona-xtradb-cluster
查看本地鏡像
[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
創(chuàng)建net1網(wǎng)段:
docker network create --subnet=172.18.0.0/16 net1
創(chuàng)建五個數(shù)據(jù)卷(pxc無法直接存取宿組機的數(shù)據(jù),所以創(chuàng)建五個docker數(shù)據(jù)卷)
docker volume create v1 docker volume create v2 docker volume create v3 docker volume create v4 docker volume create v5
查看數(shù)據(jù)卷位置:
[root@VM_71_225_centos code]# docker inspect v1 [ { "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/v1/_data", "Name": "v1", "Options": {}, "Scope": "local" } ]
創(chuàng)建5節(jié)點的PXC集群
#創(chuàng)建第1個MySQL節(jié)點 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分鐘后,再創(chuàng)建第二個節(jié)點,等待第一個節(jié)點實例化完畢后,才能開啟第二個節(jié)點實例,不然會瞬間停止
創(chuàng)建其他節(jié)點:
#創(chuàng)建第2個MySQL節(jié)點 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 #創(chuàng)建第3個MySQL節(jié)點 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 #創(chuàng)建第4個MySQL節(jié)點 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 #創(chuàng)建第5個MySQL節(jié)點 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節(jié)點創(chuàng)建數(shù)據(jù)庫:
mysql -h 172.18.0.3 -uroot -pabc123456 mysql> create database test; Query OK, 1 row affected (0.03 sec)
登錄其他節(jié)點數(shù)據(jù)庫,能看到已經(jīng)進行了同步,構成簡單的mysql集群
安裝Haproxy進行高可用與負載均衡
拉取haproxy
docker pull haproxy
編寫Haproxy配置文件
vi /home/soft/haproxy.cfg
配置文件如下:
global #工作目錄 chroot /usr/local/etc/haproxy #日志文件,使用rsyslog服務中l(wèi)ocal5日志設備(/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 #監(jiān)控界面 listen admin_stats #監(jiān)控界面的訪問的IP和端口 bind 0.0.0.0:8888 #訪問協(xié)議 mode http #URI相對地址 stats uri /dbs #統(tǒng)計報告格式 stats realm Global\ statistics #登陸帳戶信息 stats auth admin:abc123456 #數(shù)據(jù)庫負載均衡 listen proxy-mysql #訪問的IP和端口 bind 0.0.0.0:3306 #網(wǎng)絡協(xié)議 mode tcp #負載均衡算法(輪詢算法) #輪詢算法:roundrobin #權重算法:static-rr #最少連接算法:leastconn #請求源IP算法:source balance roundrobin #日志格式 option tcplog #在MySQL中創(chuàng)建一個沒有權限的haproxy用戶,密碼為空。Haproxy使用這個賬戶對MySQL數(shù)據(jù)庫心跳檢測 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
創(chuàng)建第1個Haproxy負載均衡服務器
進入h1容器,啟動Haproxy
docker exec -it h1 bash haproxy -f /usr/local/etc/haproxy/haproxy.cfg
查看是否啟動成功:
訪問http://ip:4001/dbs
安裝keepalive實現(xiàn)雙擊熱備
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
如何在centos的docker里安裝jupyter并開放端口
上次有一朋友問小編如何在centos的docker里安裝jupyter并開放端口呢?在這就不一一回復大家了,下面小編把我的個人經(jīng)驗分享到腳本之家平臺,感興趣的朋友一起看看吧2021-08-08Docker使用Calico網(wǎng)絡模式配置及問題處理方法
這篇文章主要介紹了Docker使用Calico網(wǎng)絡模式配置及問題處理,設計思想是Calico不使用隧道或者NAT來實現(xiàn)轉發(fā),而是巧妙的把所有二三層流量轉換成三層流量,并通過host上路由配置完成跨host轉發(fā),需要的朋友可以參考下2022-11-11基于jib-maven-plugin插件快速構建微服務docker鏡像的方法
這篇文章主要介紹了基于jib-maven-plugin快速構建微服務docker鏡像的方法,對于?Java?程序來說使用?jib-maven-plugin?插件來構建鏡像還是非常方便的,本文通過實例代碼詳細講解,需要的朋友可以參考下2023-02-02docker 使用CMD或者ENTRYPOINT命令同時啟動多個服務
這篇文章主要介紹了docker 使用CMD或者ENTRYPOINT命令同時啟動多個服務,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11