docker 搭建Mysql集羣

docker基本指令:java

更新軟件包node

yum -y update

安裝Docker虛擬機(centos 7)mysql

yum install -y docker

運行、重啓、關閉Docker虛擬機算法

service docker start
service docker stop

搜索鏡像sql

 docker search 鏡像名稱

下載鏡像docker

docker pull 鏡像名稱

查看鏡像數據庫

docker images

刪除鏡像centos

docker rmi 鏡像名稱

運行容器tomcat

docker run 啓動參數  鏡像名稱

查看容器列表bash

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集羣與replication集羣的方案優劣說明,在此選用pxc集羣方案[多節點備份與強聯合性]):

安裝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

建立net1網段:

docker network create --subnet=172.18.0.0/16 net1

建立五個數據卷(pxc沒法直接存取宿組機的數據,因此建立五個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進行高可用與負載均衡

 拉取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  

建立第1個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實現雙擊熱備 

相關文章
相關標籤/搜索