内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Docker怎么搭建mariadb集群

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

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

簡介

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

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

架構(gòu)圖

Docker怎么搭建mariadb集群

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

環(huán)境

主機(jī)名機(jī)器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提供服務(wù)發(fā)現(xiàn)與存放flannel網(wǎng)絡(luò)信息flannel提供跨主機(jī)網(wǎng)絡(luò) etcd安裝etcd服務(wù),集群都要安裝flannel組件(事先關(guān)掉docker) 若未裝則運(yùn)行--network=host網(wǎng)絡(luò)

部署

Docker環(huán)境設(shè)置

有配置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

再啟動(dòng)docker
systemctl daemon-reload &&systemctl restart docker

etcd集群

臺(tái)機(jī)器驗(yàn)證集群的可用性,集群信息如下:
     機(jī)器名     IP地址              角色
     node1    10.0.102.218   etcd節(jié)點(diǎn)
     node2    10.0.102.151   etcd節(jié)點(diǎn)
     node3    10.0.102.162   etcd節(jié)點(diǎn)
	
運(yùn)行容器(每個(gè)節(jié)點(diǎn)都運(yùn)行)
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é)點(diǎn) node1 上運(yùn)行:
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é)點(diǎn) node2 上運(yùn)行:
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é)點(diǎn) node3 上運(yùn)行:
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}

驗(yàn)證集群
#在測試驗(yàn)證節(jié)點(diǎn)NFS上,運(yùn)行另一個(gè)etcd容器,
#以便使用其中的etcdctl命令行程序進(jìn)行驗(yàn)證
REGISTRY=k8s.gcr.io/etcd
ETCD_VERSION=3.2.24
docker run -d \
   --name etcd-client ${REGISTRY}:${ETCD_VERSION} \
   /usr/local/bin/etcd

#進(jìn)入容器,查詢集群狀態(tài)
#驗(yàn)證存入數(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集群

準(zhǔn)備工作

鏡像: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é)點(diǎn)
第一個(gè)節(jié)點(diǎn):帶binlog日志,主機(jī)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

驗(yàn)證
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é)點(diǎn)
第二個(gè)節(jié)點(diǎn):非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é)點(diǎn)
第三個(gè)節(jié)點(diǎn):非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集群

注意事項(xiàng)

因?yàn)槿萜鬟\(yùn)行時(shí)掛載主機(jī)下的/data目錄,所以備份與恢復(fù)操作較k8s中的操作更簡單,在此不再詳述,只簡單說明下注意事項(xiàng):

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

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

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

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

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

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

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

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

廣告

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

搜索引擎優(yōu)化
四川省| 甘泉县| 桐庐县| 龙海市| 香港| 新安县| 上蔡县| 镇原县| 兖州市| 商丘市| 元谋县| 嘉兴市| 金门县| 江津市| 永定县| 内丘县| 汪清县| 天水市| 邹城市| 合水县| 方山县| 翁源县| 吉首市| 高邑县| 永善县| 西青区| 保康县| 滁州市| 萝北县| 射洪县| 宿州市| 宜兰县| 四子王旗| 邹平县| 哈巴河县| 林口县| 惠来县| 正蓝旗| 辽源市| 乌兰察布市| 黔江区|