欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

docker部署mysql8之PXC8.0分布式集群過(guò)程

 更新時(shí)間:2024年07月31日 11:00:55   作者:weixin_43053507  
這篇文章主要介紹了docker部署mysql8之PXC8.0分布式集群過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

docker部署mysql8之PXC8.0分布式集群

環(huán)境說(shuō)明

IP主機(jī)名節(jié)點(diǎn)服務(wù)服務(wù)類(lèi)型
192.168.1.1host1docker swarm-masterPXC1第一節(jié)點(diǎn)(默認(rèn)為master節(jié)點(diǎn))
192.168.1.2host2docker swarm-worker1PXC2第二節(jié)點(diǎn)
192.168.1.3host3docker swarm-worker2PXC3第三節(jié)點(diǎn)

1.創(chuàng)建docker swarm集群

部署集群依賴一個(gè)overlay網(wǎng)絡(luò),實(shí)現(xiàn)PXC服務(wù)之間跨節(jié)點(diǎn)通過(guò)主機(jī)名通訊,這里直接部署docker swarm,使用docker swarm自帶的overlay網(wǎng)絡(luò)來(lái)完成部署。

1.1 yum安裝docker

三臺(tái)主機(jī)都需要安裝一下

    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum makecache
    rpm --import https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    yum -y install docker-ce
    systemctl enable docker && systemctl start docker 

1.2 docker swarm集群部署

1.swarm-master上執(zhí)行如命令創(chuàng)建 swarm:docker swarm init --advertise-addr {master主機(jī)IP}

    [root@host1 ~]# docker swarm init --advertise-addr 192.168.1.1
    Swarm initialized: current node (l2wbku2vxecmbz8cz94ewjw6d) is now a manager.
    To add a worker to this swarm, run the following command:
        docker swarm join --token SWMTKN-1-27aqwb4w55kfkcjhwwt1dv0tdf106twja2gu92g6rr9j22bz74-2ld61yjb69uokj3kiwvpfo2il 192.168.1.1:2377
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    [root@host1 ~]# docker node ls
    ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    l2wbku2vxecmbz8cz94ewjw6d *   host1   Ready               Active              Leader              19.03.3
	注:如果當(dāng)時(shí)沒(méi)有記錄下 docker swarm init 提示的添加 worker 的完整命令,可以通過(guò) docker swarm join-token worker 查看。

2.復(fù)制前面的 docker swarm join 命令,在 swarm-worker1 和 swarm-worker2 上執(zhí)行,將它們添加到 swarm 中。

命令輸出如下:

    [root@host2 ~]# docker swarm join --token SWMTKN-1-27aqwb4w55kfkcjhwwt1dv0tdf106twja2gu92g6rr9j22bz74-2ld61yjb69uokj3kiwvpfo2il 192.168.1.1:2377
    This node joined a swarm as a worker.
    [root@host3 ~]# docker swarm join --token SWMTKN-1-27aqwb4w55kfkcjhwwt1dv0tdf106twja2gu92g6rr9j22bz74-2ld61yjb69uokj3kiwvpfo2il 192.168.1.1:2377
    This node joined a swarm as a worker.

3.swarm-master上docker node ls 可以看到兩個(gè) worker node 已經(jīng)添加進(jìn)來(lái)了。

    [root@host1 ~]# docker node ls 
    ID                            HOSTNAME            STATUS              AVAILABILITY            MANAGER STATUS      ENGINE VERSION
    ju6g4tkd8vxgnrw5zvmwmlevw     host2               Ready                   Active                                  19.03.3
    asrqc03tcl4bvxzdxgfs5h60q     host3               Ready                   Active                                  19.03.3
    l2wbku2vxecmbz8cz94ewjw6d *   host1               Ready                   Active              Leader              19.03.3

2.部署PXC集群

2.1 創(chuàng)建ca證書(shū)

swarm-master上執(zhí)行以下命令:

1. mkdir -p /data/ssl && cd /data/ssl && openssl genrsa 2048 > ca-key.pem
2. openssl req -new -x509 -nodes -days 3600 \
    -key ca-key.pem -out ca.pem
3. openssl req -newkey rsa:2048 -days 3600 \
    -nodes -keyout server-key.pem -out server-req.pem
4. openssl rsa -in server-key.pem -out server-key.pem
5. openssl x509 -req -in server-req.pem -days 3600 \
    -CA ca.pem -CAkey ca-key.pem -set_serial 01 \
    -out server-cert.pem
6. openssl req -newkey rsa:2048 -days 3600 \
    -nodes -keyout client-key.pem -out client-req.pem
7. openssl rsa -in client-key.pem -out client-key.pem
8. openssl x509 -req -in client-req.pem -days 3600 \
    -CA ca.pem -CAkey ca-key.pem -set_serial 01 \
    -out client-cert.pem
9. openssl verify -CAfile ca.pem server-cert.pem client-cert.pem (出現(xiàn)兩個(gè)OK即可)
server-cert.pem: OK
client-cert.pem: OK

問(wèn)題:第9步報(bào)錯(cuò)為error 18 at 0 depth lookup:self signed certificate

解決方案:當(dāng)你在創(chuàng)建ca.csr, server.csr, client.csr時(shí) 要求你填寫(xiě)的 Common Name。

ca.csr 的common name 不能和server.csr, client.csr填的相同

將目錄/data/ssl下所有東西拷貝至 swarm-worker1 和 swarm-worker2的相同目錄下

scp * 192.168.1.2:`pwd`/
scp * 192.168.1.3:`pwd`/

2.2 創(chuàng)建cert.cnf文件

三臺(tái)機(jī)器同時(shí)操作:

mkdir -p /data/ssl/cert && vi /data/ssl/cert/cert.cnf

[mysqld]
skip-name-resolve
ssl-ca = /cert/ca.pem
ssl-cert = /cert/server-cert.pem
ssl-key = /cert/server-key.pem

[client]
ssl-ca = /cert/ca.pem
ssl-cert = /cert/client-cert.pem
ssl-key = /cert/client-key.pem

[sst]
encrypt = 4
ssl-ca = /cert/ca.pem
ssl-cert = /cert/server-cert.pem
ssl-key = /cert/server-key.pem

2.3 創(chuàng)建docker overlay網(wǎng)絡(luò)

swarm-master上執(zhí)行以下命令:

docker network create -d overlay --attachable swarm_mysql

2.4 創(chuàng)建容器

  • 2.4.1 初始化集群,創(chuàng)建第一個(gè)節(jié)點(diǎn)

swarm-master上執(zhí)行以下命令:

docker network create -d overlay --attachable swarm_mysql
docker run -d --name=pn1 \
 --net=swarm_mysql \
 --restart=always \
 -p 9001:3306 \
 --privileged \
 -e TZ=Asia/Shanghai \
 -e MYSQL_ROOT_PASSWORD=mT123456 \
 -e CLUSTER_NAME=PXC1 \
 -v /data/ssl:/cert \
 -v mysql:/var/lib/mysql/ \
 -v /data/ssl/cert:/etc/percona-xtradb-cluster.conf.d \
 percona/percona-xtradb-cluster:8.0
  • 2.4.2 創(chuàng)建第二個(gè)節(jié)點(diǎn)

swarm-worker1 執(zhí)行一下命令:

docker run -d --name=pn2 \
--net=swarm_mysql \
--restart=always \
-p 9001:3306 \
--privileged \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=mT123456 \
-e CLUSTER_NAME=PXC1 \
-e CLUSTER_JOIN=pn1 \
-v /data/ssl:/cert \
-v mysql:/var/lib/mysql/ \
-v /data/ssl/cert:/etc/percona-xtradb-cluster.conf.d \
percona/percona-xtradb-cluster:8.0
  • 2.4.3 創(chuàng)建第三個(gè)節(jié)點(diǎn)

swarm-worker2執(zhí)行一下命令:

docker run -d --name=pn3 \
--net=swarm_mysql \
--restart=always \
-p 9001:3306 \
--privileged \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=mT123456 \
-e CLUSTER_NAME=PXC1 \
-e CLUSTER_JOIN=pn1 \
-v /data/ssl:/cert \
-v mysql:/var/lib/mysql/ \
-v /data/ssl/cert:/etc/percona-xtradb-cluster.conf.d \
percona/percona-xtradb-cluster:8.0
  • 2.4.4 檢查集群的狀態(tài)
swarm-master上執(zhí)行一下命令,檢查集群的狀態(tài)
docker exec -it pn1 /usr/bin/mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.25-15.1 Percona XtraDB Cluster (GPL), Release rel15, Revision 8638bb0, WSREP version 26.4.3

Copyright (c) 2009-2021 Percona LLC and/or its affiliates
Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

You are enforcing ssl connection via unix socket. Please consider
switching ssl off as it does not make connection via unix socket
any more secure.
mysql> show status like 'wsrep%';

+------------------------------+-------------------------------------------------+
| Variable_name                | Value                                           |
+------------------------------+-------------------------------------------------+
| wsrep_local_state_uuid       | 625318e2-9e1c-11e7-9d07-aee70d98d8ac            |
...
| wsrep_local_state_comment為Synced,                                          |
...
| wsrep_incoming_addresses     | ce9ffe81e7cb:3306,89ba74cac488:3306,0e35f30ba764:3306 |
...
| wsrep_cluster_conf_id        | 3                                               |
| wsrep_cluster_size           | 3                                               |
| wsrep_cluster_state_uuid     | 625318e2-9e1c-11e7-9d07-aee70d98d8ac            |
| wsrep_cluster_status         | Primary                                         |
| wsrep_connected              | ON                                              |
...
| wsrep_ready                  | ON                                              |
+------------------------------+-------------------------------------------------+
59 rows in set (0.02 sec)
#wsrep_local_state_comment為Synced,wsrep_incoming_addresses為三個(gè),wsrep_connected狀態(tài)為ON, wsrep_ready為ON即為正常

2.5 高可用測(cè)試

  • 2.5.1 非master重啟

當(dāng)pn1(master)正常運(yùn)行的時(shí)候,pn2,pn3模擬重啟沒(méi)問(wèn)題,測(cè)試步驟省略,主要測(cè)試重啟后所有節(jié)點(diǎn)能否正常同步數(shù)據(jù)

docker restart pn2 或者 docker restart pn3
  • 2.5.2 master節(jié)點(diǎn)重啟
docker restart pn1

重啟pn1(master)主節(jié)點(diǎn)模擬重啟后,無(wú)法正常啟動(dòng),需要以成員方式重加集群,重建命令如下:

docker run -d --name=pn1 \
--net=swarm_mysql \
--restart=always \
-p 9001:3306 \
--privileged \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=mT123456 \
-e CLUSTER_NAME=PXC1 \
-e CLUSTER_JOIN=pn2 \
-v /data/ssl:/cert \
-v mysql:/var/lib/mysql/ \
-v /data/ssl/cert:/etc/percona-xtradb-cluster.conf.d \
percona/percona-xtradb-cluster:8.0

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Docker的Etcd分布式部署的方法步驟

    基于Docker的Etcd分布式部署的方法步驟

    這篇文章主要介紹了基于Docker的Etcd分布式部署的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Docker搭建本地私有倉(cāng)庫(kù)的詳細(xì)步驟

    Docker搭建本地私有倉(cāng)庫(kù)的詳細(xì)步驟

    本篇文章主要介紹了Docker搭建本地私有倉(cāng)庫(kù)的詳細(xì)步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Docker volume使用詳解及實(shí)例

    Docker volume使用詳解及實(shí)例

    這篇文章主要介紹了Docker volume使用詳解及實(shí)例的相關(guān)資料,并附簡(jiǎn)單實(shí)例,幫助大家學(xué)習(xí)參考,需要的朋友可以看下
    2016-11-11
  • docker?清理緩存腳本解析

    docker?清理緩存腳本解析

    這篇文章主要介紹了docker?清理緩存腳本解析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • 從進(jìn)程中去理解?Docker隔離技術(shù)

    從進(jìn)程中去理解?Docker隔離技術(shù)

    這篇文章主要介紹了從進(jìn)程中去理解?Docker隔離技術(shù),Docker?公司發(fā)布的?Docker?項(xiàng)目具有里程碑式的意義;Docker?項(xiàng)目通過(guò)“容器鏡像”,解決了應(yīng)用打包這個(gè)根本性難題,下文更多相關(guān)資料,需要的朋友可以參考一下
    2022-04-04
  • docker部署jdk21的鏡像全過(guò)程

    docker部署jdk21的鏡像全過(guò)程

    這篇文章主要給大家介紹了關(guān)于docker部署jdk21的鏡像的相關(guān)資料,鏡像中包含了應(yīng)用程序所需要的運(yùn)行環(huán)境,函數(shù)庫(kù),配置,以及應(yīng)用本身等各種文件,這些文件分層打包而成,需要的朋友可以參考下
    2024-02-02
  • Dockerfile的CMD與ENTRYPOINT的區(qū)別

    Dockerfile的CMD與ENTRYPOINT的區(qū)別

    CMD和ENTRYPOINT的區(qū)別在于CMD提供默認(rèn)的執(zhí)行指令,而ENTRYPOINT定義容器啟動(dòng)時(shí)運(yùn)行的命令,下面就來(lái)詳細(xì)的介紹一下這兩者的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-12-12
  • Docker安裝jenkins實(shí)現(xiàn)微服務(wù)多模塊打包的示例代碼

    Docker安裝jenkins實(shí)現(xiàn)微服務(wù)多模塊打包的示例代碼

    本文主要介紹了Docker安裝jenkins實(shí)現(xiàn)微服務(wù)多模塊打包的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Docker跨主機(jī)容器通信overlay實(shí)現(xiàn)過(guò)程詳解

    Docker跨主機(jī)容器通信overlay實(shí)現(xiàn)過(guò)程詳解

    這篇文章主要介紹了Docker跨主機(jī)容器通信overlay實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • dockerhub 鏡像拉取超時(shí)的解決方法

    dockerhub 鏡像拉取超時(shí)的解決方法

    DockerHub遇到鏡像拉取超時(shí)問(wèn)題,現(xiàn)在可以通過(guò)修改倉(cāng)庫(kù)地址為daocloud提供的鏡像地址解決,為用戶提供便捷的鏡像拉取服務(wù),感興趣的可以了解一下
    2024-10-10

最新評(píng)論