zoukankan      html  css  js  c++  java
  • Docker:部署PXC8.0集群时,启动容器报错New joining cluster node didn‘t find all needed SSL artifacts

    使用docker部署mysql PXC集群8.0版本,启动第二个节点的时候遇到报错,New joining cluster node didn't find all needed SSL artifacts。

    问题点

    Percona XtraDB Cluster包含pxc-encrypt-cluster-traffic启用S​​SL加密配置的变量,从而对SSTIST和复制通信进行加密 。

    默认情况下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.pemca-key.pem

      这些文件用于验证签名。

    • 服务器密钥和证书文件(server-key.pemserver-cert.pem

      这些文件用于保护数据库服务器活动和写集复制流量。

    • 客户端密钥和证书文件(client-key.pemclient-cert.pem

      仅当节点应充当MySQL客户端时,才需要这些文件。例如,如果您打算使用进行SST mysqldump

    #文件赋予权限
    chown 1001:1001 *.pem

     启动成功!

    或者你也可以通过这篇文章部署:

    https://www.cnblogs.com/nhdlb/p/14032657.html

    文章整合至:https://blog.csdn.net/lengyuehuan/article/details/109742246https://www.percona.com/doc/percona-xtradb-cluster/8.0/security/encrypt-traffic.html#generate-keys-certs

  • 相关阅读:
    C++ 算法03算法设计的常用思想
    C++ 算法02算法设计的基础
    C++ 算法01
    字符串Hash入门
    CSP2020总结
    关于树状数组的应用
    Cookies题解
    博客迁移
    斜率优化(转载)
    单调队列优化和决策单调性优化
  • 原文地址:https://www.cnblogs.com/nhdlb/p/14046323.html
Copyright © 2011-2022 走看看