使用docker部署mysql PXC集群8.0版本,啟動第二個節點的時候遇到報錯,New joining cluster node didn't find all needed SSL artifacts。
問題點
Percona XtraDB Cluster包含pxc-encrypt-cluster-traffic啟用SSL加密配置的變量,從而對SST,IST和復制通信進行加密 。
默認情況下pxc-encrypt-cluster-traffic啟用此功能,從而使用安全通道進行復制。此變量不是動態變量,因此無法在運行時更改。
MySQL生成默認的密鑰和證書文件,並將它們放置在數據目錄中。這些自動生成的文件適用於自動SSL配置,但是您應該在所有節點上使用相同的密鑰和證書文件。
解決方法
如上所述,MySQL會生成默認密鑰和證書文件,並將它們放置在數據目錄中。如果要覆蓋這些證書,則可以生成以下新文件集:
- 證書頒發機構(CA)密鑰和證書, 用於對服務器和客戶端證書進行簽名。
- 服務器密鑰和證書, 用於保護數據庫服務器活動和寫集復制流量。
- 客戶端密鑰和證書, 以保護客戶端通信流量。
這些文件應使用OpenSSL生成。
生成CA密鑰和證書
證書頒發機構用於驗證證書上的簽名。
#進入容器 docker exec -it pxc bash #更新apt-get源 apt-get update #下載openssl apt-get install openssl #驗證是否下載成功 openssl version -a

生成CA密鑰文件
openssl genrsa 2048> ca-key.pem
生成CA證書文件
openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca.pem
生成服務器密鑰和證書
生成服務器密鑰文件
openssl req -newkey rsa:2048 -days 3600 \ -nodes -keyout server-key.pem -out server-req.pem
刪除密碼
openssl rsa -in server-key.pem -out server-key.pem
生成服務器證書文件
openssl x509 -req -in server-req.pem -days 3600 \ -CA ca.pem -CAkey ca-key.pem -set_serial 01 \ -out server-cert.pem
生成客戶端密鑰和證書
生成客戶端密鑰文件
openssl req -newkey rsa:2048 -days 3600 \ -nodes -keyout client-key.pem -out client-req.pem
刪除密碼
openssl rsa -in client-key.pem -out client-key.pem
生成客戶端證書文件
openssl x509 -req -in client-req.pem -days 3600 \ -CA ca.pem -CAkey ca-key.pem -set_serial 01 \ -out client-cert.pem
驗證證書
要驗證服務器證書和客戶端證書已由CA證書正確簽名,請運行以下命令
openssl verify -CAfile ca.pem server-cert.pem client-cert.pem
#如果驗證成功,您應該看到以下輸出 服務器-證書。PEM : OK 客戶端-證書。pem : 好的
部署密鑰和證書
將密鑰和證書文件發送到每個PXC容器節點內。將它們放在 /etc/mysql/certs/目錄或類似位置下
需要以下文件:
-
證書頒發機構證書文件(
ca.pem和ca-key.pem)這些文件用於驗證簽名。
-
服務器密鑰和證書文件(
server-key.pem和server-cert.pem)這些文件用於保護數據庫服務器活動和寫集復制流量。
-
客戶端密鑰和證書文件(
client-key.pem和client-cert.pem)僅當節點應充當MySQL客戶端時,才需要這些文件。例如,如果您打算使用進行SST
mysqldump。
#文件賦予權限
chown 1001:1001 *.pem

啟動成功!
或者你也可以通過這篇文章部署:
https://www.cnblogs.com/nhdlb/p/14032657.html
文章整合至:https://blog.csdn.net/lengyuehuan/article/details/109742246、https://www.percona.com/doc/percona-xtradb-cluster/8.0/security/encrypt-traffic.html#generate-keys-certs
