UCloud云数据库公网访问解决方案
一、应用背景
UCloud UDB云数据库在使用过程中,经常会有外网访问的需求,比如,进行数据跨地域迁移或者远程外网运维管理等场景。今天我将为大家介绍两种UCloud UDB云数据外网访问的实践方法。
温馨提示1:正常情况数据库属于业务的核心部分,不建议将数据库直接暴露到互联网上,如果非外网访问不可,建议通过防火墙增加源地址限制。强化四层防护,避免数据库被暴力破解从而引起业务数据泄露。
温馨提示2:强烈推荐NAT网关方式,NAT网关是集群部署,不存在单点故障风险,而且还支持绑定防火墙,加强数据库安全防护。
测试环境准备:UDB MySQL数据库:10.23.173.14;UHost数据库代理:内10.23.54.208/外113.31.104.199(mysql-proxy);UCloud NAT网关:113.31.106.251。
二、方案一:UCloud NAT网关
官网参考连接:https://docs.ucloud.cn/vpc/guide/natgw
2.1 UCloud NAT网关端口转发配置
NAT网关的创建步骤省略,详情可以参考官网。
2.2 UCloud外网防火墙安全加固
(1)选择NAT网关需要绑定的外网防火墙
默认会有两个默认防火墙,如果业务有特殊端口开放需求或安全配置,可以进行自定义。
外网防火墙配置页面:https://console.ucloud.cn/unet/ufirewall
注:这里我增加了源地址限制,通俗来讲,只允许106.75.254.35这个外网地址访问NAT网关转发的3306端口。其他IP的请求,一律拒绝。
2.3 访问测试
通过NAT网关配置端口转发,成功连接到了UDB MySQL云数据库。
三、方案二:UHost搭建mysql-proxy代理
3.1 CentOS7安装MySQL-Proxy
#(1)yum安装MySQL-Proxy [root@10-23-54-208 ~]# yum install mysql-proxy -y #(2)命令查看MySQL-Proxy信息 [root@10-23-54-208 ~]# mysql-proxy -V mysql-proxy 0.8.5 chassis: 0.8.5 glib2: 2.36.3 libevent: 2.0.21-stable LUA: Lua 5.1.4 package.path: /usr/lib64/mysql-proxy/lua/?.lua package.cpath: /usr/lib64/mysql-proxy/lua/?.so -- modules proxy: 0.8.5 #(3)查看MySQL-Proxy帮助选项 [root@10-23-54-208 ~]# mysql-proxy -help -all Usage: mysql-proxy [OPTION?] - MySQL Proxy Help Options: -h, --help Show help options --help-all Show all help options --help-proxy Show options for the proxy-module Application Options: -V, --version Show version --defaults-file=<file> configuration file --verbose-shutdown Always log the exit code when shutting down --daemon Start in daemon-mode --user=<user> Run mysql-proxy as user --basedir=<absolute path> Base directory to prepend to relative paths in the config --pid-file=<file> PID file in case we are started as daemon --plugin-dir=<path> path to the plugins --plugins=<name> plugins to load --log-level=(error|warning|info|message|debug) log all messages of level ... or higher --log-file=<file> log all messages in a file --log-use-syslog log all messages to syslog --log-backtrace-on-crash try to invoke debugger on crash --keepalive try to restart the proxy if it crashed --max-open-files maximum number of open files (ulimit -n) --event-threads number of event-handling threads (default: 1) --lua-path=<...> set the LUA_PATH --lua-cpath=<...> set the LUA_CPATH
3.2 修改MySQL-Proxy配置
MySQL-Proxy默认端口为4040,通过访问4040端口就可以访问3306端
#(1)修改MySQL-Proxy配置 [root@10-23-54-208 ~]# vim /etc/mysql-proxy.cnf [mysql-proxy] daemon = true pid-file = /var/run/mysql-proxy.pid log-file = /var/log/mysql-proxy.log log-level = debug max-open-files =1024 plugins = admin,proxy user= mysql-proxy proxy-address=0.0.0.0:4040 proxy-backend-addresses=10.23.173.14:3306 admin-lua-script=/usr/lib64/mysql-proxy/lua/admin.lua admin-username = root admin-password = Ucloudcn123 #(2)配置文件保存后需要改变权限 [root@10-23-54-208 ~]# chmod 0660 /etc/mysql-proxy.cnf #(3)启动MySQL-Proxy [root@10-23-54-208 ~]# mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
# 参数解读 admin-username=root #admin用户名 admin-password=123fsck #admin密码 admin-lua-script=/usr/lib64/mysql-proxy/lua/admin.lua #lua位置,参见上面的版本信息 daemon=true #mysql-proxy以守护进程方式运行 keepalive=true #保持连接启动进程会有2个, 一号进程用来监视二号进程 proxy-backend-addresses=10.6.X.XX #目标地址,udb内网地址,默认端口3306
3.3 访问测试
# 查看MySQL连接客户端版本 [root@mysql-proxy ~]# mysql --version mysql Ver 14.14 Distrib 5.6.51, for Linux (x86_64) using EditLine wrapper
温馨提示:MySQL-Proxy不支持MySQL5.7、MySQL8.0的客户端连接代理,连接会直接hang住。仅支持MySQL5.6及以下版本MySQL客户端~
作者:UStarGao
链接:https://www.starcto.com/systemtool/311.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-10-08Microsoft SQL Server安装部署教程
- 2022-06-24一文搞懂MySQL日志区别-binlog/redo log/undo log
- 2021-07-20CI/CD Pipeline之Gitlab部署
- 2021-08-31Docker自建容器实例迁移至UCloud 容器实例Cube
- 2021-10-28PostgreSQL日志轮滚配置教程