使用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.pem和ca-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

Docker:部署PXC8.0集群时,启动容器报错New joining cluster node didn‘t find all needed SSL artifacts的更多相关文章

  1. windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error

    windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error 学习了:https ...

  2. 一个tomcat部署两个springboot服务时启动JMX报错

    一.问题来源 今天在部署开发好的组件的时候,发现无法启动,检查启动日志,报如下错误: 2022-03-17T10:39:41.823+08:00 ERROR vediomanage.vediomana ...

  3. docker之阿里云centos 7.x 启动容器报错处理办法

    最近阿里云服务器(操作系统centOS 7.x) 安装docker,参照阿里云帮助文档https://help.aliyun.com/document_detail/51853.html?spm=a2 ...

  4. Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)

    文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...

  5. 手把手教你用Docker部署一个MongoDB集群

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...

  6. 多机部署redis5.0集群环境

    redis5.0集群部署 一.集群介绍 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation). Redis 集群不支持那些需要同时处理多个键的 Redi ...

  7. Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战

    Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...

  8. 单机部署redis5.0集群环境

    #安装rediscd redis-5.0.0makemake install #部署集群mkdir redis_clustermkdir -p redis_cluster/{7000,7001,700 ...

  9. 使用docker部署mysql主从复制集群

    一.环境搭建 虚拟机环境:centos7 IP: 启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和3309 docker pull mysql:5.7 doc ...

随机推荐

  1. Linux_进程之间的通信

    一.进程间的通信 1️⃣:进程间通信(IPC:Inter Process Communication) 2️⃣:进程之间通信方式: 同一主机 共享内存 信号:Signal 不同主机 rpc:remot ...

  2. Linux服务之Apache服务篇

    apache httpd:提供http服务 http超文本协议 HTML超文本标记语言 URL(Uniform Resource Locator)统一资源定位符 http://www.sina.com ...

  3. shell基础之变量及表达式

    本节内容 1. shell变量简介 2. 定义变量 3. 使用变量 4. 修改变量的值 5. 单引号和双引号的区别 6. 将命令的结果赋值给变量 7. 删除变量 8. 变量类型 9. 特殊变量列表 1 ...

  4. Jmeter(五十) - 从入门到精通高级篇 - jmeter 之模拟弱网进行测试(详解教程)

    1.简介 在实际工作中,网络带宽一定不会是持续稳定的保持某一个值,而是有高有低.因此为了测试场景和实际能够无限的接近,所以我们需要模拟一下来达到效果.还有就是在实际的测试工作中,会因为业务需要,有时限 ...

  5. mongodb创建用户创建库分配权限

    use unionserver db.createUser({ user: "rshy",pwd: "root1234@......",customData:{ ...

  6. Django学习之完成数据库主从复制、读写分离和一主多从情况下的使用办法

    1.首先配置多个数据库,在settings配置文件中配置以下内容: DATABASES = { 'default': { #默认数据库,配置多个mysql数据也是ok的,混用数据库也是ok的 'ENG ...

  7. 给powershell增加类似于linux的alias功能

    给powershell增加类似于快捷方式的功能(类似于linux的alias) 首先执行 set-executionpolicy remotesigned 允许powershell执行脚本 然后执行e ...

  8. 对端边缘云网络计算模式:透明计算、移动边缘计算、雾计算和Cloudlet

    对端边缘云网络计算模式:透明计算.移动边缘计算.雾计算和Cloudlet 概要 将数据发送到云端进行分析是过去几十年的一个突出趋势,推动了云计算成为主流计算范式.然而,物联网时代设备数量和数据流量的急 ...

  9. 模型压缩95%:Lite Transformer,MIT韩松等人

    模型压缩95%:Lite Transformer,MIT韩松等人 Lite Transformer with Long-Short Range Attention Zhanghao Wu, Zhiji ...

  10. wrk(2)- Lua 脚本的使用

    背景 要用 wrk 进行压测 看了下其他同事的压测,都用了 Lua 脚本来自定义一些东西 所以这一篇主要讲 Lua 脚本 Lua 介绍 Lua 脚本是一种轻量小巧的脚本语言,用标准 c 语言编写,并以 ...