如何实现AWS到GCP的Bitnami WordPress无停机迁移?重点解决负载均衡与SSL配置问题
核心无停机迁移前置思路
先同步站点全量数据到GCP、完成所有证书和负载均衡配置后再切换域名解析,全程不会影响现有线上业务的正常访问。
问题1解答
Google托管SSL证书支持DNS验证模式,不需要先把域名解析切到GCP。你只需要在域名托管商后台添加一条GCP要求的TXT解析记录即可完成证书验证下发,全程不需要修改当前绑定AWS的A记录,不会产生停机。
操作步骤:在GCP负载均衡创建证书页选择「创建Google托管证书」,输入你的域名后,GCP会自动生成对应的DNS验证记录值,去你域名的DNS解析后台添加这条TXT记录,等待10~30分钟证书即可签发完成,不影响现有线上业务。
问题2解答
切换过程不会产生停机。等Google托管证书签发完成后,你只需要在负载均衡的前端配置里,把原有自有证书替换为已经生效的Google托管证书,点击保存后配置会在1分钟左右全局生效,用户访问不会出现中断或者证书报错的情况。
问题3解答
Bitnami的证书存放在固定路径,你可以直接替换,操作命令如下:
- 先备份原有自签名证书:
sudo cp /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.backupsudo cp /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.backup - 把你自己的证书内容覆盖对应文件:把域名公钥证书内容粘贴替换
server.crt的内容,私钥内容粘贴替换server.key的内容 - 重启Apache服务生效:
sudo /opt/bitnami/ctlscript.sh restart apache
如果是Nginx环境,对应证书路径为/opt/bitnami/nginx/conf/bitnami/certs/,重启命令改为sudo /opt/bitnami/ctlscript.sh restart nginx即可。
问题4解答
不需要解绑AWS的IP就能生成Let's Encrypt证书,和Google托管证书逻辑一致,选择DNS验证模式即可。你用certbot生成证书的时候添加--preferred-challenges dns参数,按照提示在域名DNS后台添加对应的TXT验证记录,就能在GCP服务器上拿到有效证书,全程不需要切解析,不会产生停机。
问题5解答
分两种场景:
- 如果你负载均衡到后端的通信走HTTP(即后端服务用HTTP协议,端口80):后端不需要安装SSL证书,443端口也不需要开放,负载均衡会做SSL卸载,把HTTPS请求转成HTTP发给后端80端口,业务正常运行。
- 如果你负载均衡到后端的通信要求走HTTPS(即后端服务用HTTPS协议,端口443):后端需要安装证书,可以是自签名证书也可以是可信CA证书,负载均衡默认不会校验后端证书的有效性,只要端口通就能正常转发。
没有特殊安全要求的前提下,推荐用第一种HTTP后端的配置,运维成本最低。
问题6解答
可以创建。你在创建GCP负载均衡的前端配置时,协议选择HTTP,端口选80,就不需要配置SSL证书,直接创建即可。如果找不到对应选项,注意你选择的负载均衡类型是「HTTP(S)负载均衡」,前端配置时手动把协议从默认的HTTPS改成HTTP,就会自动隐藏证书配置项。
内容的提问来源于stack exchange,提问作者FlyingPenguin

