<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • Docker怎么搭建mariadb集群

            本篇內容主要講解“Docker怎么搭建mariadb集群”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Docker怎么搭建mariadb集群”吧!

            創(chuàng)新互聯(lián)公司專注于平利網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供平利營銷型網(wǎng)站建設,平利網(wǎng)站制作、平利網(wǎng)頁設計、平利網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務,打造平利網(wǎng)絡公司原創(chuàng)品牌,更為您提供平利網(wǎng)站排名全網(wǎng)營銷落地服務。

            簡介

            本例簡單介紹下如何在多個主機使用docker環(huán)境下搭建mairadb集群。只做測試不建議生產(chǎn)中使用。

            實現(xiàn)原理:本例基于severalnines/mariadb鏡像制作Mariadb集群,當容器啟動后會向etcd注冊集群信息,其他容器啟動會從etcd獲取集群信息(集群名稱,運行的容器IP等),從而加入集群。容器之間跨主機的通信則借助flannel來實現(xiàn)。

            架構圖

            Docker怎么搭建mariadb集群

            3節(jié)點上安裝跨主機網(wǎng)絡,讓容器之間可以相互通信,第一個容器啟動時向etcd注冊自己的集群信息,后面容器啟動時從etcd中查找集群信息,并加入集群中去。

            環(huán)境

            主機名機器IP系統(tǒng)CPU/MEMDocker版本
            node-110.0.102.218CentOS 7.54H/16G18.06.2-ce
            node-210.0.102.151CentOS 7.54H/16G18.06.2-ce
            node-310.0.102.162CentOS 7.54H/16G18.06.2-ce

            依賴組件etcd提供服務發(fā)現(xiàn)與存放flannel網(wǎng)絡信息flannel提供跨主機網(wǎng)絡 etcd安裝etcd服務,集群都要安裝flannel組件(事先關掉docker) 若未裝則運行--network=host網(wǎng)絡

            部署

            Docker環(huán)境設置

            有配置flanneld則需要執(zhí)行
            vim /etc/systemd/system/docker.service中增加下面兩條記錄
            [Service]
            EnvironmentFile=/run/docker_opts.env
            ExecStart=/usr/bin/dockerd\
            --graph=/var/lib/docker --log-level=error $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS
            
            再啟動docker
            systemctl daemon-reload &&systemctl restart docker

            etcd集群

            臺機器驗證集群的可用性,集群信息如下:
                 機器名     IP地址              角色
                 node1    10.0.102.218   etcd節(jié)點
                 node2    10.0.102.151   etcd節(jié)點
                 node3    10.0.102.162   etcd節(jié)點
            	
            運行容器(每個節(jié)點都運行)
            REGISTRY=k8s.gcr.io/etcd
            ETCD_VERSION=3.2.24
            TOKEN=my-etcd-token
            NAME_1=k8s-node-1
            NAME_2=k8s-node-2
            NAME_3=k8s-node-3
            HOST_1=10.0.102.218
            HOST_2=10.0.102.151
            HOST_3=10.0.102.162
            CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380
            DATA_DIR=/var/lib/etcd
            
            # 在節(jié)點 node1 上運行:
            THIS_NAME=${NAME_1}
            THIS_IP=${HOST_1}
            docker run -d \
               -p 2379:2379 \
               -p 2380:2380 \
               --volume=${DATA_DIR}:/etcd-data \
               --name etcd ${REGISTRY}:${ETCD_VERSION} \
               /usr/local/bin/etcd \
               --data-dir=/etcd-data --name ${THIS_NAME} \
               --initial-advertise-peer-urls http://${THIS_IP}:2380 \
               --listen-peer-urls http://0.0.0.0:2380 \
               --advertise-client-urls http://${THIS_IP}:2379 \
               --listen-client-urls http://0.0.0.0:2379 \
               --initial-cluster ${CLUSTER} \
               --initial-cluster-state new --initial-cluster-token ${TOKEN}
            
            # 在節(jié)點 node2 上運行:
            THIS_NAME=${NAME_2}
            THIS_IP=${HOST_2}
            docker run -d \
               -p 2379:2379 \
               -p 2380:2380 \
               --volume=${DATA_DIR}:/etcd-data \
               --name etcd ${REGISTRY}:${ETCD_VERSION} \
               /usr/local/bin/etcd \
               --data-dir=/etcd-data --name ${THIS_NAME} \
               --initial-advertise-peer-urls http://${THIS_IP}:2380 \
               --listen-peer-urls http://0.0.0.0:2380 \
               --advertise-client-urls http://${THIS_IP}:2379 \
               --listen-client-urls http://0.0.0.0:2379 \
               --initial-cluster ${CLUSTER} \
               --initial-cluster-state existing --initial-cluster-token ${TOKEN}
            
            # 在節(jié)點 node3 上運行:
            THIS_NAME=${NAME_3}
            THIS_IP=${HOST_3}
            docker run -d \
               -p 2379:2379 \
               -p 2380:2380 \
               --volume=${DATA_DIR}:/etcd-data \
               --name etcd ${REGISTRY}:${ETCD_VERSION} \
               /usr/local/bin/etcd \
               --data-dir=/etcd-data \
               --name ${THIS_NAME} \
               --initial-advertise-peer-urls http://${THIS_IP}:2380 \
               --listen-peer-urls http://0.0.0.0:2380 \
               --advertise-client-urls http://${THIS_IP}:2379 \
               --listen-client-urls http://0.0.0.0:2379 \
               --initial-cluster ${CLUSTER} \
               --initial-cluster-state existing --initial-cluster-token ${TOKEN}
            
            驗證集群
            #在測試驗證節(jié)點NFS上,運行另一個etcd容器,
            #以便使用其中的etcdctl命令行程序進行驗證
            REGISTRY=k8s.gcr.io/etcd
            ETCD_VERSION=3.2.24
            docker run -d \
               --name etcd-client ${REGISTRY}:${ETCD_VERSION} \
               /usr/local/bin/etcd
            
            #進入容器,查詢集群狀態(tài)
            #驗證存入數(shù)據(jù)、讀取數(shù)據(jù)
            docker exec etcd-client /bin/sh -c "export ETCDCTL_API=3 && /usr/local/bin/etcdctl --endpoints=http://10.0.102.214:2379,http://10.0.102.175:2379,http://10.0.102.191:2379 --write-out=table member list"
            docker exec etcd-client /bin/sh -c "export ETCDCTL_API=3 && /usr/local/bin/etcdctl --endpoints=http://10.0.102.214:2379,http://10.0.102.175:2379,http://10.0.102.191:2379 --write-out=table endpoint status"
            docker exec etcd-client /bin/sh -c "export ETCDCTL_API=3 && /usr/local/bin/etcdctl --endpoints=http://10.0.102.214:2379,http://10.0.102.175:2379,http://10.0.102.191:2379 --write-out=table endpoint health"
            docker exec etcd-client /bin/sh -c "export ETCDCTL_API=3 && /usr/local/bin/etcdctl --endpoints=http://10.0.102.214:2379,http://10.0.102.175:2379,http://10.0.102.191:2379  put url http://www.sina.com.cn"
            docker exec etcd-client /bin/sh -c "export ETCDCTL_API=3 && /usr/local/bin/etcdctl --endpoints=http://10.0.102.214:2379,http://10.0.102.175:2379,http://10.0.102.191:2379  get url"

            部署mariadb集群

            準備工作

            鏡像:severalnines/mariadb:10.1

            配置文件/etc/my.cnf.d/binlog.cnf mkdir -p /etc/my.cnf.d/ cat > /etc/my.cnf.d/bin-log.cnf<<EOF [MySQLd] log-bin = mysql-bin log_slave_updates = 1 expire_logs_days = 20 server-id = 211 EOF

            部署操作
            node-1節(jié)點
            第一個節(jié)點:帶binlog日志,主機10-0-102-165上操作:
            docker run -d -p 3306:3306 --name=galera0_h \
            -v /data:/var/lib/mysql -v /etc/my.cnf.d:/etc/my.cnf.d \
            -e MYSQL_ROOT_PASSWORD=mypassword \
            -e DISCOVERY_SERVICE=10.0.102.215:2379,10.0.102.151:2379,10.0.102.162:2379  \
            -e CLUSTER_NAME=my_wsrep_cluster_hp \
            -e XTRABACKUP_PASSWORD=mypassword --network=host severalnines/mariadb:10.1
            
            驗證
            docker ps –a
             【見圖1】
            mysql -uroot -pmypassword -h 10.0.102.215 -e "show status like 'wsrep%';"
              【見圖2】
            binlog日志
             【見圖3】

            Docker怎么搭建mariadb集群 Docker怎么搭建mariadb集群 Docker怎么搭建mariadb集群

            node-2節(jié)點
            第二個節(jié)點:非binlog日志
            docker run -d -p 3306:3306 --name=galera1_h \
            -v /data:/var/lib/mysql \
            -e MYSQL_ROOT_PASSWORD=mypassword \
            -e DISCOVERY_SERVICE=10.0.102.215:2379,10.0.102.151:2379,10.0.102.162:2379  \
            -e CLUSTER_NAME=my_wsrep_cluster_hp \
            -e XTRABACKUP_PASSWORD=mypassword --network=host severalnines/mariadb:10.1
            docker ps –a
             【見圖4】
            mysql -uroot -pmypassword -h 10.0.102.151 -e "show status like 'wsrep%';"
              【見圖5】
            binlog日志
             【見圖6】

            Docker怎么搭建mariadb集群 Docker怎么搭建mariadb集群 Docker怎么搭建mariadb集群

            node-3節(jié)點
            第三個節(jié)點:非binlog日志
            docker run -d -p 3306:3306 --name=galera2_h \
            -v /data:/var/lib/mysql \
            -e MYSQL_ROOT_PASSWORD=mypassword \
            -e DISCOVERY_SERVICE=10.0.102.215:2379,10.0.102.151:2379,10.0.102.162:2379  \
            -e CLUSTER_NAME=my_wsrep_cluster_hp \
            -e XTRABACKUP_PASSWORD=mypassword --network=host severalnines/mariadb:10.1
            
            mysql -uroot -pmypassword -h 10.0.102.162 -e "show status like 'wsrep%';"
             【見圖7】
            binlog日志
            【見圖8】

            Docker怎么搭建mariadb集群 Docker怎么搭建mariadb集群

            注意事項

            因為容器運行時掛載主機下的/data目錄,所以備份與恢復操作較k8s中的操作更簡單,在此不再詳述,只簡單說明下注意事項:

            1.如果某個容器掛掉可以先使用docker start CONTAINER_NAME進行啟動,如果啟動不成功,這個時候需要重新將node加入集群中,操作步驟如下: docker stop CONTAINER_NAME docker rm CONTAINER_NAME rm -rf /data/ docker run xxx

            2.容器啟動時注意問題:要按照一定的順序進行,當docker run第一個容器時,要等容器完全啟動起來了再docker run第二個容器,依次類推關閉則執(zhí)行相反操作,先stop第一個容器,再stop第二個容器,依次類推

            3.恢復操作注意問題恢復操作與k8s中mariadb集群相同,需要依次停止,在最后一個節(jié)點上執(zhí)行恢復操作,恢復完成后重新讓節(jié)點加入集群(節(jié)點加入集群前需要先刪除本地的/data目錄)

            4.使用docker rm命令會造成集群信息紊亂:關閉某個節(jié)點的mariadb容器時,切記不可執(zhí)行docker rm –f命令,應該先執(zhí)行docker stop,然后再執(zhí)行docker rm命令。

            補充內容:使用docker-compose進行部署mariadb-cluster集群 原理與架構均與docker部署相同,在此不再贅述。 一、與上面環(huán)境不同點:1.etcd使用的是集群: 10.0.102.214:2379, 10.0.102.175:2379, 10.0.102.191:2379 原因:測試在之前的etcd中獲得不到集群信息,不想在etcd上過多消耗,而且使用etcd集群會更可靠 2.沒有使用flannel網(wǎng)絡,使用的docker的host網(wǎng)絡。 原因:使用docker-compose啟動時默認會創(chuàng)建網(wǎng)絡,這樣三個節(jié)點的容器就是在三個網(wǎng)絡中,無法通信也就創(chuàng)建不了集群,在docker-compose文件中定義網(wǎng)絡為network_mode: host,使用本機IP進行

            到此,相信大家對“Docker怎么搭建mariadb集群”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

            網(wǎng)頁名稱:Docker怎么搭建mariadb集群
            轉載源于:http://www.jbt999.com/article0/jsdjoo.html

            成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣小程序開發(fā)、ChatGPT、Google、網(wǎng)站內鏈、網(wǎng)站設計公司

            廣告

            聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

            搜索引擎優(yōu)化

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 青青草无码成人天堂免费 | 久久免费看A片 | 在线观看中文字幕一区 | 免费一级片日本 | 综合色秀 |